<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dérico Filho &#187; Technology</title>
	<atom:link href="http://blog.cirello.org/tag/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.cirello.org</link>
	<description>Future - Technology - Programming</description>
	<lastBuildDate>Fri, 30 Jul 2010 05:25:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Web Development Team Process HOWTO</title>
		<link>http://blog.cirello.org/2010/07/29/web-development-team-process-howto/</link>
		<comments>http://blog.cirello.org/2010/07/29/web-development-team-process-howto/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 05:23:09 +0000</pubDate>
		<dc:creator>Dérico Filho</dc:creator>
				<category><![CDATA[Chronicles]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[centralised]]></category>
		<category><![CDATA[conway]]></category>
		<category><![CDATA[decentralised]]></category>
		<category><![CDATA[distributed]]></category>
		<category><![CDATA[man-month]]></category>
		<category><![CDATA[mythical]]></category>
		<category><![CDATA[structure]]></category>
		<category><![CDATA[teams]]></category>

		<guid isPermaLink="false">http://blog.cirello.org/?p=177</guid>
		<description><![CDATA[Foreword This document aims to help you understand how technologies, process and people are integrated in an effective web development team. I will not cover motivational techniques, or leaders teachings among the whole history that could help you to manager &#8230; <a href="http://blog.cirello.org/2010/07/29/web-development-team-process-howto/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>
<h1>Foreword</h1>
<p>This document aims to help you understand how technologies, process and people are integrated in an effective web development team. I will not cover motivational techniques, or leaders teachings among the whole history that could help you to manager your team better.</p>
<p>Here I am more interested in structures, workflows, tools and concepts. A naïve try to merge many sparse modern concepts and tools.</p>
<p>This is an amateur work, the first try of many &#8211; and I am very open to criticism, suggestions and commentaries.</p>
<p>In the first part, I will cover some theoretical concepts.</p>
<p>In the second part, I will use these concepts and build practical ideas.</p>
<p><span id="more-177"></span></p>
<p>
</p>
<h1>Section I &#8211; Sorting Professionals.</h1>
<p>Whatever the workflow adopted, whatever the tools chosen and whatever the environment is set &#8211; people are the entities that make the team machine work.</p>
<p>As a machine, there are different parts which are capable of doing each thing needed in the whole scenario.</p>
<p>Choosing and incorporating the appropriate professionals is fundamental to make this team work, and although it is obvious yet this is often neglected due to budget constraints or some sort of Cowboy Coding privileges.</p>
<p>Two basics types of sorting immediately arises: by competence and by expertise. Let us see each one of them.</p>
<p>By competence, in all branches of softwarecraft:</p>
<p>- <em>Apprentices</em> &#8211;  has begun in the craft, usually is learning the first language and tries to solve the problems through brute-force only with no understanding of choices and consequences. Demands a lot of attention and support in order to be productive. May turn out to be productivity suckers of another people, a Journeyman or Master who would be coaching and supervising him on the task being developed.</p>
<p>- <em>Journeyman </em>- is experienced and demands little supervision. When one achieves this point usually has begun to specialise in some segment of the craft. One&#8217;s skills set are robust and getting bigger. They are not yet able to cross really complicated problems among several different segments of the craft. For instance, one team of solely journeymen would have great difficulties to develop an Image server integrated into a HTTP server, storing files in a tailor-made filesystem on the top of a XFS partition. And yes, this has been done, in Facebook. (<a href="http://www.facebook.com/note.php?note_id=76191543919">http://www.facebook.com/note.php?note_id=76191543919</a>)</p>
<p>- <em>Master </em>- I borrow the description of <em>The Pragmatic Programmer: From Journeyman to Master:</em></p>
<ul>
<li>Early Adopter / Fast Adapter</li>
<li>Inquisitive</li>
<li>Critical Thinker</li>
<li>Realistic</li>
<li>Jack-of-all-trades &#8211; in my words, consummated cross-skills thinker and inventor.</li>
</ul>
<p><br class="spacer_" /></p>
<p>By expertise, in Website Development:</p>
<ul>
<li>Web Designers </li>
<li>Usability Engineers</li>
<li>Interface Coders</li>
<li>Business Logic Engineers</li>
<li>Database Developers</li>
<li>Testers</li>
</ul>
<p>I will not explain these roles, but their names are quite self-explanatory and the most important concept of all is: the maturity of your team and project will expose the need for each kind of these people.</p>
<p>The most common composition I&#8217;ve seen is: Web Designer, Interface Coder and Business Logic Engineer. Coincidently, it fits in the MVC structure, which shall be approached later.</p>
<p>I shall name this composition <em>Standard Web Development Team.</em></p>
<p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cirello.org/2010/07/29/web-development-team-process-howto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My company and Brook&#8217;s Law &#8211; Why hiring a new programmer delays the whole company&#8217;s development schedule?</title>
		<link>http://blog.cirello.org/2007/12/10/my-company-and-brooks-law-why-hiring-a-new-programmer-delays-the-whole-company-schedule/</link>
		<comments>http://blog.cirello.org/2007/12/10/my-company-and-brooks-law-why-hiring-a-new-programmer-delays-the-whole-company-schedule/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 04:56:05 +0000</pubDate>
		<dc:creator>Dérico Filho</dc:creator>
				<category><![CDATA[Chronicles]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Better]]></category>
		<category><![CDATA[Brook]]></category>
		<category><![CDATA[Chronicle]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Dirty]]></category>
		<category><![CDATA[Fix]]></category>
		<category><![CDATA[Law]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Quick]]></category>
		<category><![CDATA[Real]]></category>
		<category><![CDATA[State]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Worse]]></category>

		<guid isPermaLink="false">http://blog.cirello.org/2007/12/10/my-company-and-brooks-law-why-hiring-a-new-programmer-delays-the-whole-company-schedule/</guid>
		<description><![CDATA[Hi! I work in a real state agency. This company has its own management system which deals with customer database, customer relationship management, product database and product export to other external system of advertising. It has been developed by 6 &#8230; <a href="http://blog.cirello.org/2007/12/10/my-company-and-brooks-law-why-hiring-a-new-programmer-delays-the-whole-company-schedule/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hi!</p>
<p>I work in a <a href="http://www.maber.com.br" title="Maber Real State" target="_blank">real state agency</a>. This company has its own management system which deals with customer database, customer relationship management, product database and product export to other external system of advertising.</p>
<p>It has been developed by 6 years now, and passed by the hands of 8 programmers (or interns) so far. And until the lastest one, adding more man power to its development always uncovered a sad feeling of Brook&#8217;s Law.</p>
<p>Brook&#8217;s Law dictates that &#8220;adding man power to a late software project makes it later&#8221;. Actually it really happened. After hiring a new programmer it took at least 3 months of intensive training, which approached quality (<a href="http://en.wikipedia.org/wiki/5S_%28methodology%29" title="5 senses of quality." target="_blank">5s</a>, <a href="http://en.wikipedia.org/wiki/Kaizen" title="Kaizen - Improvement" target="_blank">Kaizen</a> and <a href="http://en.wikipedia.org/wiki/PDCA" title="Plan, Do, Check, Act." target="_blank">PDCA</a>) and some programming skills such <a href="http://c2.com/cgi/wiki?ObjectOrientedProgramming" title="Object Oriented Programming">OO</a>, <a href="http://c2.com/cgi/wiki?ModelViewController" title="Model-View-Controller" target="_blank">MVC</a> and <a href="http://c2.com/cgi/wiki?DesignPatterns" title="Design Patterns" target="_blank">Design Patterns.</a></p>
<p>This thorough training should supposedly prepare the hired programmers to a supposed high-level of coding. Well, the code was not that high-leveled and the programmers always had to struggle with so many standards that they could not produce code.</p>
<p>There was never a roadmap or formal product release. <a href="http://en.wikipedia.org/wiki/Code_and_fix" title="Code and Fix" target="_blank">Indeed in the beginning, the changes were made directly into the code and bugs fixed later</a>. I guess when nothing is yet done, act <a href="http://en.wikipedia.org/wiki/Quick-and-dirty" title="Quick And Dirty." target="_blank">quick-and-dirty</a> or <a href="http://en.wikipedia.org/wiki/Worse_is_better" title="Worse is better - Less is more." target="_blank">worse-is-better</a> is a good atittude.</p>
<p>OK, it may have hurted some ears around. I am not defending them as a real alternatives for software development. What I am saying is: <em>they are great choices to evolve from NOthing to SOMEthing.</em> Let me explain it a bit further.</p>
<p>The company I work on was founded by a group of Internet investors. They had no previous experience on real state market. They had money and wanted to invest. One lunatic among them decided to burn his cash in a real state agency in the rotten brazilian market.</p>
<p>Alright. If you are producing a software to a company runned by an expert in the market, usually the biggest problem you could have would be how translate some business needs into technical specification.</p>
<p>However, If you are producing a software to a company runned by a lunatic that simply has no idea of what it is taken to do the business, then your greatest is problem is doing something almost completely off your mind &#8211; if the CEO has no idea and you have no idea &#8211; anything, even a bad thing, is better than nothing.</p>
<p>This lack of identity reflected the source code&#8217;s organisation, robustness and stability. Actually, a paleontologist could dig four differente eras of coding.</p>
<p>The first one made by four hands and it&#8217;s completely quick and dirty.  The second one a bit more organised, but yet worse is better approach (the great change was moving from VI to Samba Shared file access). The third one with better structured code. And the last one developed with OO/MVC/All the letters that are G&amp;W.</p>
<p>Thus, teaching the new-comers about the system had do cope with all these generations of coding and thoughts.</p>
<p>Why that last one has been different?</p>
<p>The last hiring was completely different on many aspects.</p>
<p>First, the hired programmer was a better professional. I am not talking about technical skills &#8211; I am mean a more matured and seasoned person. A young company with young employees behaves childishly &#8211; spending more than needed with wrong people.</p>
<p>Second, the company knows better its needs and what it expects from employees. It means that the business needs are more easily translated into technical specifications.</p>
<p>Third, the oldest codes are no longer changed. They work (sometimes badly) and they do not demand more maintenance. All the code produced is related to new needs, therefore I need to teach fewer things one to new employees.</p>
<p>Adding man power in these conditions is easy. Brook notice the projects delays when he realised that new programmers could not add production immediately because they needed to be taught. And that&#8217;s the whole issue.</p>
<p>The more one programmer need to learn in order to begin working &#8211; the longer it&#8217;ll take to make him productive.</p>
<p>When the teacher knows the things to be conveyed, it is easier. On the other, when there is no teacher (or no knowledge), it is the famous Research and Development &#8211; not funded, not supported and only demanded.</p>
<p>Does it ever happened to you?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cirello.org/2007/12/10/my-company-and-brooks-law-why-hiring-a-new-programmer-delays-the-whole-company-schedule/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
