<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - authority tag</title>
  <link>http://www.codingthearchitecture.com/tags/authority/</link>
  <description>Reducing the gap between developers and architects</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Fri, 15 Aug 2008 14:38:00 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>Mind the gap again</title>
    <link>http://www.codingthearchitecture.com/2008/08/04/mind_the_gap_again.html</link>
    
      
        <description>
          &lt;p&gt;
I did some technical consulting/due diligence on a large software development project recently where I&#039;d been called in to look at how the project team was dealing with some of the non-functional requirements. I&#039;m not sure exactly how large the project team was, but it was somewhere over 50 people and the project itself was subdivided into a number of smaller teams, where each team was responsible for looking after a small subsystem within the overall architecture.
&lt;/p&gt;

&lt;p&gt;
The summary of my review was that very little thought has gone into the non-functional requirements and that retrospectively performing some non-functional testing *could* expose a whole host of problems that are expensive to fix. One of the reasons for the lack of work on the non-functional requirements is that each of the subsystem teams basically doesn&#039;t have an architect. Instead, they have a Technical Project Manager and a Technical Team Lead, with definitions as follows (I&#039;m simplifying this a little). 
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Technical Project Manager&lt;/b&gt; : a generalist rather than specialist, and somebody that has a technology background but doesn&#039;t necessarily understand technology in great detail.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Technical Team Lead&lt;/b&gt; : depending on the team, this person is either similar to the Technical Project Manager but working at a lower level of detail, or it&#039;s the lead developer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
This sort of team/resource profile isn&#039;t actually that uncommon and I see many project teams that are organised in this way. In essence, teams get in a Technical Project Manager because they think people in this role can successfully undertake the project management *and* architecture roles on the project. Unfortunately, my experience suggests that this isn&#039;t always the most successful approach.
&lt;/p&gt;

&lt;p&gt;
In &lt;a href=&#034;http://www.jrothman.com/weblog/2005/04/i-need-technical-project-manager.html&#034;&gt;I Need a Technical Project Manager&lt;/a&gt;, Johanna Rothman talks about the dynamics of taking on both the project management and architecture roles. Specifically, she says that one of the roles usually has to give way, and I agree. Coming back to the project I was reviewing, the basic problem was this - the Technical Project Managers didn&#039;t have enough experience of dealing with the architecture aspects (including NFRs). As for the Technical Team Leads, the same thing applies (their focus is generally at a lower level), but in addition they don&#039;t have the &lt;a href=&#034;http://www.codingthearchitecture.com/2007/05/21/authority.html&#034;&gt;authority&lt;/a&gt; to make architectural decisions. Also, with both roles, it&#039;s hard to ascertain exactly who has the &lt;a href=&#034;http://www.codingthearchitecture.com/2007/05/16/responsibility.html&#034;&gt;responsibility&lt;/a&gt; for something like the non-functional requirements.
&lt;/p&gt;

&lt;p&gt;
I see this pattern crop up fairly regularly, and it&#039;s a variation of what I talk about in my &lt;a href=&#034;http://www.codingthearchitecture.com/pages/book/mind-the-gap.html&#034;&gt;Mind the gap&lt;/a&gt; essay, where key responsibilities fall down the gap between team members. The easiest way to fix this sort of problem is to be explicit about the roles/responsibilities when starting the project. And that means pinning those responsibilities on somebody.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2008/08/04/mind_the_gap_again.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/08/04/mind_the_gap_again.html</guid>
    <pubDate>Mon, 04 Aug 2008 16:12:46 GMT</pubDate>
  </item>
  
  <item>
    <title>Delegation</title>
    <link>http://www.codingthearchitecture.com/2007/05/22/delegation.html</link>
    
      
        <description>
          &lt;p&gt;
I briefly mentioned delegation in my post yesterday about &lt;a href=&#034;http://www.codingthearchitecture.com/2007/05/21/authority.html&#034;&gt;authority&lt;/a&gt; and I wanted to expand on this further. I talked about delegation in the context of having the authority to make decisions - you don&#039;t actually have to make all of the decisions yourself. Other examples of where delegation might be needed include :
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Design&lt;/b&gt; : You&#039;ve come up with a nice logical architecture that defines a collection of components and their interfaces. Taking these to the next level probably requires some lower level design effort, which you might not have time to do yourself across the entire system.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Coding&lt;/b&gt; : Unless the system is very small, there&#039;s no way you can code it on your own. Furthermore, there&#039;s probably little chance of you understanding how the entire system works at the code level.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Quality assurance&lt;/b&gt; : In a similar way to the code, do you really think you can code review the entire system on your own?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Delegation is an important part of a software architect&#039;s role and there&#039;s a middle ground somewhere between delegating everything and doing everything yourself. Either way, it&#039;s worth pointing out that delegation is different to ignoring/not being interested in what other team members are doing. The key points here are to trust your team, delegate where appropriate and make sure you have a handle on what&#039;s happening in, to use an agile term, &#034;just enough&#034; detail.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2007/05/22/delegation.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2007/05/22/delegation.html</guid>
    <pubDate>Tue, 22 May 2007 08:14:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Authority</title>
    <link>http://www.codingthearchitecture.com/2007/05/21/authority.html</link>
    
      
        <description>
          &lt;p&gt;Related to &lt;a href=&#034;http://www.codingthearchitecture.com/2007/05/16/responsibility.html&#034;&gt;responsibility&lt;/a&gt; is authority. Having responsibility for making things happen is one thing but, if you&#039;re going to be successful, you must also have the authority to do it. If you&#039;re responsible for the overall architecture of a system, you must have the authority to make the decisions and define that architecture. Likewise for everything else you might be responsible for as a software architect, ranging from initial software selection through to defining and enforcing the coding standards. Of course, as &lt;a href=&#034;http://blog.softwarearchitecture.com/2007/05/architect-is-accountable.html&#034;&gt;Brian says&lt;/a&gt; : &lt;/p&gt;
&lt;blockquote&gt; ... we have to be careful not to fall into the deadly cycle of becoming the decision authority for &lt;em&gt;every&lt;/em&gt; decision. &lt;/blockquote&gt;
&lt;p&gt; I agree and, provided you do have the authority, you can chose to delegate the decision if you wish. That&#039;s your choice but you still hold responsibility. &lt;/p&gt;
&lt;p&gt; If you&#039;re the architect on a software project at the moment and find yourself continually asking for permission, take a moment to ask yourself why this is. If you have the responsibility but not the authority, you could be in for a bumpy ride. &lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2007/05/21/authority.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2007/05/21/authority.html</guid>
    <pubDate>Mon, 21 May 2007 16:13:00 GMT</pubDate>
  </item>
  
  </channel>
</rss>
