<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Marco Dorantes' WebLog : agile</title><link>http://blogs.msdn.com/marcod/archive/category/3768.aspx</link><description>Software development is a very singular endeavor, a combination of art, science, craft and engineering; proper management allows maximum performance, poor management guided by bogus analogies leads to misery and despair within development teams</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Agile and lean fads are the new excuses for brittle software</title><link>http://blogs.msdn.com/marcod/archive/2008/12/05/NewExcusesForBrittleSoftware.aspx</link><pubDate>Fri, 05 Dec 2008 13:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9180161</guid><dc:creator>marcod</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/marcod/comments/9180161.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=9180161</wfw:commentRss><description>&lt;P class="ident noide"&gt;Now that many are looking for ways to cut costs and maximize the benefits out of their shrunk budget, there is no shortage of offers about how to do just that. Among those offers are the agile and lean software development methods, which are quickly becoming the norm rather than the exception in the IT industry’s parlance nowadays. Soon, in most IT shops, anyone talking against agile and lean concepts will become the next weird, anti-social, anarchist, non-team-player guy that dare to endorse a different view than the mainstream view. Just as it happened when some guy started to talk about the shortcomings of structured analysis, design and programming compared with object-oriented techniques, as with many other ideas in the history of our infant industry. Each time, an exaggerated message of the future gains was given in order to hook buyers on the new ideas. Why this time would be different?&lt;/P&gt;
&lt;P class=ident&gt;Don’t get me wrong, the most gratifying and positive professional experiences —individually and in teams— on software development have come from the agile and lean mindsets. It is just that the patterns of behavior that I have seen from we humans in large groups make me wonder, why on Earth this time the substance is actually going to be broadly adopted and not just the buzzwords? Is the general public going to really enhance their average software experience because of better software or the whole point for the software providers is costs reduction only? I’m afraid the latter is closer to the truth than the former. The main concern I have is that —as far as my understanding on agile and lean mindsets can go— the former is the way to reach the latter. This has been the whole point since the first generation of Method Wars in the history of professional software development. Point that, historically, could not have been fully explained and broadly understood yet.&lt;/P&gt;
&lt;P class=ident&gt;There is adaptive software development (&lt;A href="http://blogs.msdn.com/marcod/archive/2008/09/30/AdaptiveMethodsForReality.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2008/09/30/AdaptiveMethodsForReality.aspx"&gt;also known as &lt;I&gt;agile&lt;/I&gt;&lt;/A&gt;) thinking and there is lean software development thinking, just as there are their corresponding fads (adopting only the buzzwords and not the change in mentality). The thinking part is more likely to achieve some level of the sought-after benefits, and the fads will just give a bad name to the good ideas in agile and lean.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9180161" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>A way to specify behavior</title><link>http://blogs.msdn.com/marcod/archive/2008/11/30/SpecifyBehavior.aspx</link><pubDate>Mon, 01 Dec 2008 04:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9159406</guid><dc:creator>marcod</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/marcod/comments/9159406.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=9159406</wfw:commentRss><description>&lt;P class="ident noide"&gt;The modern name for an ancient programming technique —which roots can be traced back to Dr. E.W. Dijkstra*— was “test-first programming” and didn’t preclude, in any sense, the need of validation and verification testing, done by an independent group of people with a different mindset and goals (whereas programmers want to release the best possible software, the testers want to stop releasing software with any lurking bug).&lt;/P&gt;
&lt;P class=ident&gt;Seasoned testing professionals usually have a bunch of techniques for testing existing software &lt;B&gt;based on already specified behavior&lt;/B&gt;, and these professionals have been able to do just well without “test-first programming”. An important project (is there any that not?) could not afford to go without these professionals and any attempt to dismiss their importance because of a programmer’s technique is a recipe for disaster.&lt;/P&gt;
&lt;P class=ident&gt;On the other hand, test-first programming is &lt;B&gt;a way to specify behavior&lt;/B&gt; and to build trust that the specified behavior is kept in place while the software grows in capacity.&lt;/P&gt;
&lt;P class="ident noide"&gt;* &lt;SPAN style="FONT: medium Georgia; MARGIN-LEFT: 0.5in; MARGIN-RIGHT: 0.5in; TEXT-ALIGN: justify"&gt;“Instead, you construct a correct program in small steps. Each step takes the specification and produces something a little nearer to the final program. Each step is small enough that you can see exactly what needs to be proved to show that the step is correct.”&lt;/SPAN&gt; &lt;BR&gt;– &lt;A href="http://blogs.msdn.com/marcod/archive/2004/06/12/154045.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2004/06/12/154045.aspx"&gt;The Professor Edsger Wybe Dijkstra school of thought&lt;/A&gt; (aren’t these the eXtreme Programming test/code/refactoring micro-cycles?)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9159406" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>Adaptive Methods for reality</title><link>http://blogs.msdn.com/marcod/archive/2008/09/30/AdaptiveMethodsForReality.aspx</link><pubDate>Wed, 01 Oct 2008 03:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8971055</guid><dc:creator>marcod</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8971055.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8971055</wfw:commentRss><description>&lt;P class="ident noide"&gt;The attitude of mind to approach reality that has helped humans to explain and to predict phenomena (observed facts) consistently and precisely, the scientific mindset, is one among those things computer professionals could adopt to better understand software development fundamentals. There are two somehow conflicting aspects of the scientific attitude that make it so compelling just because that opposing effect.&lt;/P&gt;
&lt;P class=ident&gt;First, that eagerness to bring all possible thoughts about a subject matter by previous and current thinkers to the working table, so new work can be based on rock solid arguments gained through rigorous work and tested conclusions. In contrast, how many current software professionals have a working knowledge of structured design methods? And of first, second and third generations of object-oriented analysis and design methods?&lt;/P&gt;
&lt;P class=ident&gt;Second, in the essence of a scientific attitude is the constant disposition to disprove current beliefs, to refute our own viewpoints, an inexorable bias to distrust self-righteous thinking; that is, to put our conclusions under the most severe and ruthless testing conditions possible. Why? Kenneth Boulding said: "&lt;I&gt;Knowledge increases not by the matching of mind images with the real world —which is impossible—, that is, not by the direct perception of truth, but by a relentless bias toward the perception of error. This is as true of folk knowledge as it is of science&lt;/I&gt;". In contrast, how often can we found people with a dogmatic view of their profession in software? “&lt;I&gt;We only do this or that buzzword around here&lt;/I&gt;”, “&lt;I&gt;This brand or fashion is the only true game in town&lt;/I&gt;”, etc.&lt;/P&gt;
&lt;P class=ident&gt;The combination of those —rational and skeptic— attitudes is requisite for scientific progress, that is, the accretion of reliable knowledge about a subject matter within the reach of science (the natural world). Philosophers of science have factored those attitudes out of science and have made them available for use in other disciplines so they could also be able to advance the knowledge in their fields in a rigorous and reliable way; for instance, social sciences like sociology, economics, anthropology (which includes physical anthropology, archeology, ethnology, and linguistics), political science, and others.&lt;/P&gt;
&lt;P class=ident&gt;The world of software is a world of the artificial, a world of logical constructs governed by a different set of relationships in sharp contrast with those from the physical world and very similar to that from the field of linguistics, where the relationship between the sign (symbol), the signified (concept) and the signifier (linguistic image) is subject of significant changes between a discrete point in time (synchronic linguistic) and its evolution (diachronic linguistic). As far as we are interested &lt;I&gt;to know&lt;/I&gt; something about software development we better strengthen our critical thinking powers including those mental attitudes mentioned above.&lt;/P&gt;
&lt;P class=ident&gt;I have seen those very same attitudes in practitioners of the now generally known agile methods for software development; a distinction is in order, the practitioners I am referring to are not those just using the buzzwords, but those that bet their careers on their professional &lt;A href="http://www.agilemanifesto.org/principles.html" mce_href="http://www.agilemanifesto.org/principles.html"&gt;values and principles&lt;/A&gt;; those &lt;A href="http://blogs.msdn.com/marcod/archive/2004/08/18/216823.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2004/08/18/216823.aspx"&gt;reflective practitioners&lt;/A&gt; who backup their beliefs with their behaviors, those who take the scientific approach to reality as a tool, not as a religion. These guys are perpetual learners, de facto scientists in the field of software. For they, the name &lt;I&gt;agile&lt;/I&gt; means just a starting point for a continuous cooperative understanding. The term &lt;I&gt;agile&lt;/I&gt; means only a token to bring a conversational style, just like the term &lt;I&gt;adaptive&lt;/I&gt; which, by the way, was the second candidate name word from that &lt;A href="http://www.agilemanifesto.org/history.html" mce_href="http://www.agilemanifesto.org/history.html"&gt;Snowbird, Utah meeting on February 2001&lt;/A&gt;. In my opinion, &lt;I&gt;adaptive&lt;/I&gt; reflects better the contrast with absolutist predictive approaches and emphasizes the ever-changing and self-critical nature of modern (or post-modernist from a philosophical perspective) software development processes.&lt;/P&gt;
&lt;P class=ident&gt;Adaptive methods imply —in addition— a dual mode of behavior from their practitioners, just like the progress of science needs &lt;A href="http://www.addall.com/detail/0618551050.html"&gt;a dualistic endeavor for unblocking situations&lt;/A&gt;. These modes could be called up like &lt;I&gt;Evolutionary&lt;/I&gt; and &lt;I&gt;Revolutionary&lt;/I&gt;, where the former refers broadly to a thinking style that search truth deeper in a single direction by kind of specializations and the latter means a thinking style that broaden the perspective by kind of generalizations; the traits could be like follow:&lt;/P&gt;
&lt;CENTER&gt;
&lt;TABLE class="" style="FONT-WEIGHT: normal; FONT-STYLE: normal; FONT-FAMILY: Georgia; FONT-VARIANT: normal" cellPadding=9 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;P class="ident noide" style="FONT-WEIGHT: bold; TEXT-ALIGN: center"&gt;Evolutionary mode&lt;/P&gt;&lt;/TD&gt;
&lt;TD class=""&gt;
&lt;P class="ident noide" style="FONT-WEIGHT: bold; TEXT-ALIGN: center"&gt;Revolutionary mode&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;Craftspeople&lt;/TD&gt;
&lt;TD class=""&gt;Seers&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;Team players&lt;/TD&gt;
&lt;TD class=""&gt;Independent&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;Normal evolutionists&lt;/TD&gt;
&lt;TD class=""&gt;Non-normal. Revolutionary.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;Technical climbers-engineers. Problem climbers.&lt;/TD&gt;
&lt;TD class=""&gt;Travelers. Valley crossers. Philosophers.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/CENTER&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8971055" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>Most of people around are not doing eXtreme Programming, should I try it?</title><link>http://blogs.msdn.com/marcod/archive/2008/07/17/JustDoIt.aspx</link><pubDate>Thu, 17 Jul 2008 15:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8744235</guid><dc:creator>marcod</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8744235.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8744235</wfw:commentRss><description>&lt;P class="ident noide"&gt;If billions of people believe something, does that alone make it a &lt;A href="http://blogs.msdn.com/marcod/archive/2008/04/21/BeliefAndBehavior.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2008/04/21/BeliefAndBehavior.aspx"&gt;justified true belief&lt;/A&gt;?&lt;/P&gt;
&lt;P class="ident noide"&gt;Please, try for yourself eXtreme Programming techniques or whichever else design technique you found, and bring your findings and insights for &lt;A href="http://blogs.msdn.com/marcod/archive/2008/04/25/DiscussingUncomfortableQuestions.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2008/04/25/DiscussingUncomfortableQuestions.aspx"&gt;discussion&lt;/A&gt;.&lt;/P&gt;
&lt;P class="ident noide"&gt;Also please, disregard the frequent plea for “&lt;A href="http://blogs.msdn.com/marcod/archive/2008/07/07/NewHells.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2008/07/07/NewHells.aspx"&gt;the real world&lt;/A&gt;”, the real world is what we &lt;I&gt;all&lt;/I&gt; do, do something different and you are essentially changing the world.&lt;/P&gt;
&lt;P class="ident noide" style="TEXT-ALIGN: center"&gt;"How do I sell my executive team on doing this stuff? Don't. Just do it. They don't know what you're doing anyway" -Jim Highsmith&lt;/P&gt;
&lt;P class="ident noide" style="TEXT-ALIGN: center"&gt;"Never be afraid to do something yourself. Remember - amateur built the Ark, professionals built the Titanic" -Gov Maharaj&lt;/P&gt;
&lt;P class="ident noide" style="TEXT-ALIGN: center"&gt;"They believed that the structure of the universe could be worked out by sheer thought. And so they decided there were five elements, earth, water, air, fire, and ether. And that the universe was constructed of spheres made of these elements. Any element moved away from its sphere tried to get back to its sphere. Thus, stones (earth) fall, smoke (fire) rises, etc. It all made sense. It was all wrong" -&lt;A href="http://blogs.msdn.com/marcod/archive/2007/02/17/SoftwareDesignersProfile.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2007/02/17/SoftwareDesignersProfile.aspx"&gt;Unknown&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8744235" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>Paving the history of our trade</title><link>http://blogs.msdn.com/marcod/archive/2008/07/11/MostCommonMistake.aspx</link><pubDate>Fri, 11 Jul 2008 13:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8721259</guid><dc:creator>marcod</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8721259.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8721259</wfw:commentRss><description>&lt;P class="ident noide"&gt;Which could possibly be the most common mistake on the history of the adoption of iterative and incremental development?&lt;/P&gt;
&lt;P class="ident noide"&gt;Craig Larman proposes an answer to such a question in his book &lt;A href="http://www.addall.com/detail/0131111558.html" mce_href="http://www.addall.com/detail/0131111558.html"&gt;Agile and Iterative Development: A Manager's Guide&lt;/A&gt;:&lt;/P&gt;
&lt;P style="FONT-SIZE: medium; MARGIN-LEFT: 0.25in; MARGIN-RIGHT: 0.25in; FONT-FAMILY: Times New Roman"&gt;“&lt;I&gt;Sure, we don't apply the waterfall—everyone knows it doesn't work. We've adopted &amp;lt;iterative method X&amp;gt; and are into our first project. We've been at it for two months and have the use case analysis nearly finished, and the plan and schedule of what we'll be doing in each iteration. After review and approval of the final requirements set and iteration schedule, we'll start programming.&lt;/I&gt; &lt;BR&gt;&lt;BR&gt;This profound misunderstanding, still superimposing waterfall-inspired, big up-front analysis and planning (predictable manufacturing) values onto iterative methods, is one of the most common mistakes that new iterative and agile method adopters make.” &lt;/P&gt;
&lt;P class="ident noide"&gt;Based on the number of times and frequency I have found such a misunderstanding, certainly, make it a well positioned candidate for such a place in the history of our trade.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8721259" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>The new hells have been nurtured, by now they are alive and well</title><link>http://blogs.msdn.com/marcod/archive/2008/07/07/NewHells.aspx</link><pubDate>Mon, 07 Jul 2008 18:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8703332</guid><dc:creator>marcod</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8703332.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8703332</wfw:commentRss><description>&lt;P class="ident noide" style="LINE-HEIGHT: 150%"&gt;“&lt;I&gt;Want me to adopt your solution? Let’s clarify first which are the new problems it brings on&lt;/I&gt;” -a conscious customer&lt;/P&gt;
&lt;P class=ident style="LINE-HEIGHT: 150%"&gt;The very presence of a solution to a problem brings on &lt;A href="http://blogs.msdn.com/marcod/archive/2004/06/12/154131.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2004/06/12/154131.aspx"&gt;new kind of problems&lt;/A&gt;, &lt;I&gt;ad infinitum&lt;/I&gt;. That is another way to say that there always will be room for improvement. That is why, when offering a contribution as a solution to a problem, there is need for a higher level of integrity like the one described as &lt;I&gt;&lt;A href="http://mdmartin.blogspot.com/2008/06/lobos-pastores-e-integridad-cientfica.html" mce_href="http://mdmartin.blogspot.com/2008/06/lobos-pastores-e-integridad-cientfica.html"&gt;scientific integrity&lt;/A&gt;&lt;/I&gt; by Richard P. Feynman&lt;SUP&gt;&lt;SPAN style="FONT-SIZE: small"&gt;1&lt;/SPAN&gt;&lt;/SUP&gt;, one that &lt;A href="http://en.wikipedia.org/wiki/Caveat_emptor" mce_href="http://en.wikipedia.org/wiki/Caveat_emptor"&gt;let the buyer beware&lt;/A&gt; or &lt;I&gt;Caveat emptor&lt;/I&gt;&lt;SUP&gt;&lt;SPAN style="FONT-SIZE: small"&gt;2&lt;/SPAN&gt;&lt;/SUP&gt;.&lt;/P&gt;
&lt;P class=ident style="LINE-HEIGHT: 150%"&gt;Problems sometimes are known by kind of a nickname with the word &lt;I&gt;hell&lt;/I&gt; in it. For example, Microsoft Windows’s COM components used to be global for the local computer just because there is a single Microsoft Windows Registry by operating system installation. The problems associated with centralized and globally accessible information, in this case, took the nickname “&lt;I&gt;DLL Hell&lt;/I&gt;”. Of course, the Component Object Model was the heaven —the solution— for certain kind of problems and we adopters were glad to pay the costs (consciously or not) of the correlated new problems it brought with itself, up to some —subjectively defined— point. The information needed to determine where that point is for any given subject is what proponents of the solution must provide in order to aspire for a behavior with scientific integrity.&lt;/P&gt;
&lt;P class=ident style="LINE-HEIGHT: 150%"&gt;Do you see the relationship between science and engineering? Do you see why software development is not a full-fledged branch of engineering discipline hitherto (by far)? By the way, maybe you are not conscious of this yet but, you don’t really want software development be a branch of engineering discipline in its entirety (more on this later).&lt;/P&gt;
&lt;P class=ident style="LINE-HEIGHT: 150%"&gt;Another example&lt;SUP&gt;&lt;SPAN style="FONT-SIZE: small"&gt;3&lt;/SPAN&gt;&lt;/SUP&gt; of heaven/hell dualism —what can now be called “Framework Hell”— is that of maximized flexibility or extensibility in object-oriented frameworks and over-designed helper&lt;SUP&gt;&lt;SPAN style="FONT-SIZE: small"&gt;4&lt;/SPAN&gt;&lt;/SUP&gt; libraries (delivered as unsupported, or hopefully supported, source code) lacking the properties of Application Programming Interfaces.&lt;/P&gt;
&lt;P class=ident style="LINE-HEIGHT: 150%"&gt;First, the general theme with those is the intention to provide a single design decision to be suitable for all unforeseeable singularities down the road in the evolution of an application’s design. They try to do that by means of over-generalized and premature abstractions introduced “for the needs of the future” that ultimately become more hindrance than help when disruptive singularities are discovered on the way to materialize the original intent of such frameworks or “helper” libraries.&lt;/P&gt;
&lt;P class=ident style="LINE-HEIGHT: 150%"&gt;Second, designers seem to be unaware of economical properties of software designs. They do not realize that each new line of code must be kept accurate and supported for the rest of the design’s lifecycle. So, the cost of a given application that makes use of a source code library increases in relation to the size and complexity of such a “helper” library. Those costs can be mapped to the costs of warehouse or inventory of goods in the manufacturing industry. Sadly enough, often the supposedly benefits for such a warehouse of flexibilities never are delivered because the “just in the case” needs never came.&lt;/P&gt;
&lt;P class=ident style="LINE-HEIGHT: 150%"&gt;When introducing the concept of scientific integrity there are, of course&lt;SUP&gt;&lt;SPAN style="FONT-SIZE: small"&gt;5&lt;/SPAN&gt;&lt;/SUP&gt;, comments pleading to “&lt;A href="http://blogs.msdn.com/marcod/archive/2007/07/07/TheRealWorldUpdate.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2007/07/07/TheRealWorldUpdate.aspx"&gt;the real world&lt;/A&gt;”; it is curious how, what is Kansas for somebody, could be Oz for somebody else, and vice versa&lt;SUP&gt;&lt;SPAN style="FONT-SIZE: small"&gt;6&lt;/SPAN&gt;&lt;/SUP&gt;. For those with the spirit of continuous learning in general and software design in particular, please consider serious works on &lt;A href="http://blogs.msdn.com/marcod/archive/2004/08/18/216823.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2004/08/18/216823.aspx"&gt;design activity&lt;/A&gt;, like what Donald A. Schön has published&lt;SUP&gt;&lt;SPAN style="FONT-SIZE: small"&gt;7&lt;/SPAN&gt;&lt;/SUP&gt;; along with a seasoned advice by longtime consultant Peter Block&lt;SUP&gt;&lt;SPAN style="FONT-SIZE: small"&gt;8&lt;/SPAN&gt;&lt;/SUP&gt;:&lt;/P&gt;
&lt;P class="ident noide" style="LINE-HEIGHT: 150%; TEXT-ALIGN: center"&gt;“&lt;I&gt;Better to define our task as a process of discovery and dialogue more than as an act of diagnosis and prescription”&lt;/I&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="ident noide" style="LINE-HEIGHT: 150%"&gt;&lt;SUP&gt;1 &lt;/SUP&gt;&lt;I&gt;&lt;A href="http://www.addall.com/detail/0465023959.html" mce_href="http://www.addall.com/detail/0465023959.html"&gt;The Pleasure of Finding Things Out: The Best Short Works of Richard P. Feynman&lt;/A&gt;&lt;/I&gt; by Richard P. Feynman&lt;/P&gt;
&lt;P class="ident noide" style="LINE-HEIGHT: 150%"&gt;&lt;SUP&gt;2 &lt;/SUP&gt;&lt;I&gt;Caveat emptor&lt;/I&gt; concept graciously referred to the author by colleague Jorge Eduardo Barsallo Caballero&lt;/P&gt;
&lt;P class="ident noide" style="LINE-HEIGHT: 150%"&gt;&lt;SUP&gt;3 &lt;/SUP&gt;&lt;A href="http://www.jot.fm/issues/issue_2008_07/column3/index.html" mce_href="http://www.jot.fm/issues/issue_2008_07/column3/index.html"&gt;&lt;I&gt;The Legacy and Liability of Object Technology The Dark Side of OO&lt;/I&gt;&lt;/A&gt; by Dave Thomas&lt;/P&gt;
&lt;P class="ident noide" style="LINE-HEIGHT: 150%"&gt;&lt;SUP&gt;4 &lt;/SUP&gt;“&lt;I&gt;Everyone may be trying to help, but good intentions are no substitute for competence&lt;/I&gt;” -Dan Starr&lt;/P&gt;
&lt;P class="ident noide" style="LINE-HEIGHT: 150%"&gt;&lt;SUP&gt;5 &lt;/SUP&gt;“&lt;I&gt;Unanimity of opinion may be fitting for a church, for the frightened or greedy victims of some (ancient or modern) myth, or for the weak and willing followers of some tyrant. Variety of opinion is necessary for objective knowledge&lt;/I&gt;” -Paul K. Feyerabend&lt;/P&gt;
&lt;P class="ident noide" style="LINE-HEIGHT: 150%"&gt;&lt;SUP&gt;6 &lt;/SUP&gt;“&lt;I&gt;There are people who prefer to anchor themselves in the comfort of a limited level of knowledge. They consider themselves practical and 'real-world'-ish&lt;/I&gt;” -Andrei Alexandrescu&lt;/P&gt;
&lt;P class="ident noide" style="LINE-HEIGHT: 150%"&gt;&lt;SUP&gt;7 &lt;/SUP&gt;&lt;I&gt;&lt;A href="http://www.addall.com/detail/0465068782.html" mce_href="http://www.addall.com/detail/0465068782.html"&gt;Reflective Practitioner: How Professionals Think in Action&lt;/A&gt;&lt;/I&gt; by Donald A. Schön&lt;/P&gt;
&lt;P class="ident noide" style="LINE-HEIGHT: 150%"&gt;&lt;SUP&gt;8 &lt;/SUP&gt;&lt;I&gt;&lt;A href="http://www.addall.com/detail/0787957127.html" mce_href="http://www.addall.com/detail/0787957127.html"&gt;Flawless Consulting: A Guide to Getting Your Expertise Used&lt;/A&gt;&lt;/I&gt; by Peter Block&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8703332" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>Who is an architect?</title><link>http://blogs.msdn.com/marcod/archive/2008/05/08/WhoIsAnArchitect.aspx</link><pubDate>Thu, 08 May 2008 17:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8473289</guid><dc:creator>marcod</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8473289.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8473289</wfw:commentRss><description>&lt;P class="ident noide"&gt;While the question &lt;I&gt;‘Who or what is an architect?’&lt;/I&gt; could be popular nowadays, the important for a project and for an organization is the act of architecting, the continuous care of all-encompassing properties that give the illusion of simplicity to customers and end-users. That is what is important. That is an essential ingredient for project’s success.&lt;/P&gt;
&lt;P class=ident&gt;Discussing the establishment of a single individual as the prima-donna decision-maker is foolish, is more about that “&lt;I&gt;taking the form but not the substance&lt;/I&gt;” unwise behavior typical of overenthusiastic and blind advocacy of the youth (see: &lt;A href="http://blogs.msdn.com/marcod/archive/2008/04/25/DiscussingUncomfortableQuestions.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2008/04/25/DiscussingUncomfortableQuestions.aspx"&gt;Discussing uncomfortable questions&lt;/A&gt;).&lt;/P&gt;
&lt;P class=ident&gt;Some people believe an architect does not need to get dirty with technical details but also believe they must be in charge of important technical decisions, at the same time. I think doing so is to keep this guy in a position of incompetence.&lt;/P&gt;
&lt;P class=ident&gt;I think architect is a collective role, not an individual. if we think —on one side— of an architect as a role, not as an individual, whose key aim is to describe an abstract, coherent and conceptually integrated system clearly to all the team and, if we think —on the other side— of a developer as a role, not as an individual, whose key aim is to provide feedback about the technical feasibility for each architectural decision, then both roles could be fulfilled by the same professional or group of professionals (like a team in charge of accurately delivering the right system into the hands of customers and end-users).&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8473289" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>What do we –really– mean by 'coding'?</title><link>http://blogs.msdn.com/marcod/archive/2008/05/07/WhatIsCoding.aspx</link><pubDate>Wed, 07 May 2008 05:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8464990</guid><dc:creator>marcod</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8464990.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8464990</wfw:commentRss><description>&lt;P class="ident noide"&gt;Suppose a young member of the developer role in your next project team approaches to you (member of the architect role in the same project) and said: —&lt;I&gt;I will be coding as part of my role in our project and I am looking for further understanding of how my work will be related to actual business value. Could you –as seasoned software professional– please share your insights with me?&lt;/I&gt;&lt;/P&gt;
&lt;P class="ident noide"&gt;What would be your answer?&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;P class="ident noide"&gt;Young subordinate: your main task —as a necessary evil— will be mechanical and repetitive because all intellectual and engaging artwork will be exclusively done by me and my peers; please be prepared to eagerly follow our direct commands and to strictly follow our plans, doing whatever required extra effort in order to hit established milestones on time. Your association with business value is that and the same of the cheap labor force in well established economies of scale, that is, the execution of industrialized tasks by expendable and interchangeable human resources. You know, it is the real world and nothing can be done about it. No problem at all, it’s my pleasure to clarify.&lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;P class="ident noide"&gt;Young peer: first of all let me thank you for the opportunity to share my perspective on such an important question of yours; second, let me please clarify that coding is –actually– another name for a design activity which is part of a continuous flux of learning experiences shared by all members of the team. You, along with the rest of project team members, will be doing software design which is a cooperative endeavor to tackle the complexity coming from a number of dimensions like people, process, product and technology; we need all your intellectual power, critical thinking and energy to keep a balanced mix of problem-solving, creativity and tactical execution as the project unfolds. Join us, we are about to review current business priorities with the customer...&lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;P class="ident noide"&gt;Please excuse me but I’m really not the right person to answer your question because I’m not in a position that has exposure to such level of fine-grained details so I don’t know what you are going to be doing and how that is related with business value.&lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;P class="ident noide"&gt;Next possible answer...&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P class="ident noide"&gt;Now, please assume that you are fully aware of a secondary purpose for the approaching developer in your project, who also is a senior researcher, to report back to general scientific community a current, actual, reliable and justified characterization of the ‘coding’ activity.&lt;/P&gt;
&lt;P class="ident noide"&gt;Please re-read the proposed answers and re-think your own answer so far but now with this new perspective in mind.&lt;/P&gt;
&lt;P class="ident noide"&gt;Would you change your answer? Which would it be now? Why?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8464990" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>What the role of an architect really wants to be?</title><link>http://blogs.msdn.com/marcod/archive/2008/05/02/ArchitectIsARoleNotAnIndividual.aspx</link><pubDate>Sat, 03 May 2008 01:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8452960</guid><dc:creator>marcod</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8452960.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8452960</wfw:commentRss><description>&lt;P class="ident noide"&gt;After re-reading sections about architecture in &lt;I&gt;&lt;A href="http://www.addall.com/detail/0201835959.html" mce_href="http://www.addall.com/detail/0201835959.html"&gt;The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) by Frederick P. Brooks, Jr.&lt;/A&gt;&lt;/I&gt; I am wondering if what the role of a nowadays architect really wants to be is that of the old notion of &lt;I&gt;data processing analyst&lt;/I&gt;.&lt;/P&gt;
&lt;P class=ident&gt;The key deliverable from data processing analysts was written functional specifications; the best of those analysts described an abstract, coherent and conceptually integrated system —yet to be implemented— and all their description was from the standpoint of the business and end-user. Later (and sometimes), the senior developers took the functional specification and delivered a technical specification of how the system’s internals would be &lt;I&gt;“constructed”&lt;/I&gt; and then —in all waterfallish fashion and most often than not— the &lt;I&gt;“dime-a-dozen coders”&lt;/I&gt; took the technical specification and &lt;I&gt;“built”&lt;/I&gt; the system. It all made sense. It was all wrong (see Writing 2 &lt;A href="http://blogs.msdn.com/marcod/archive/2007/02/17/SoftwareDesignersProfile.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2007/02/17/SoftwareDesignersProfile.aspx"&gt;here&lt;/A&gt;).&lt;/P&gt;
&lt;P class=ident&gt;Data processing analysts did not &lt;I&gt;“code”&lt;/I&gt;; very, very far from doing that. Isn’t what many are saying about architects?&lt;/P&gt;
&lt;P class=ident&gt;Many years, colossal amounts of human effort and vast amounts of money have been wasted for our industry to learn that waterfall and sequential thinking —like the one described a paragraph ago— for the realization of complex computing systems just don’t work for most of the situations. Why would we want to bring back the notion of &lt;I&gt;data processing analysts&lt;/I&gt;? Which could possibly be the advantages of doing that?&lt;/P&gt;
&lt;P class=ident&gt;Now, if we think —on one side— of an architect as a role, not as an individual, whose key aim is to describe an abstract, coherent and conceptually integrated system clearly to all the team and, if we think —on the other side— of a developer as a role, not as an individual, whose key aim is to provide feedback about the technical feasibility for each architectural decision, then both roles could be fulfilled by the same professional or group of professionals (like a team in charge of accurately delivering the right system into the hands of customers and end-users).&lt;/P&gt;
&lt;P class=ident&gt;What is the role of an architect? Sorry, I don’t get it, architect *is* already a role, not an individual. Should an architect design? Yes, the mere essence of architecting if that of describing —from the standpoint of the business and end-user— an abstract, coherent and conceptually integrated system that solves the business problem.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8452960" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>Should an architect code?</title><link>http://blogs.msdn.com/marcod/archive/2008/05/01/ShouldAnArchitectCode.aspx</link><pubDate>Thu, 01 May 2008 21:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8447676</guid><dc:creator>marcod</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8447676.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8447676</wfw:commentRss><description>&lt;P class="ident noide"&gt;For those interested, the role of an architect is –also- being discussed in MSDN, &lt;A href="http://msdn.microsoft.com/architecture/role" mce_href="http://msdn.microsoft.com/architecture/role"&gt;here&lt;/A&gt;. My first reply next:&lt;/P&gt;
&lt;P class=ident&gt;The answer depends on what do you mean by “architect” (noun) and also by “code” (verb).&lt;/P&gt;
&lt;P class=ident&gt;What seasoned designers talk about when discussing architecture is so all-encompassing and important for the final outcome that makes me wonder why a project team member wouldn’t need to fully master the actual concretization of such concepts at all levels? I suspect the answer is related to the sad state of practice in many organizations due to the faulty belief that the main task in writing software is a mechanical and repetitive task that can be industrialized with expendable and interchangeable human ‘resources’.&lt;/P&gt;
&lt;P class=ident&gt;See: &lt;A href="http://blogs.msdn.com/marcod/archive/2008/04/25/DiscussingUncomfortableQuestions.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2008/04/25/DiscussingUncomfortableQuestions.aspx"&gt;Discussing uncomfortable questions&lt;/A&gt;&lt;/P&gt;
&lt;P class=ident&gt;Pursuing a clear definition of a concept like architecture is good because the related thinking-researching cycles give opportunity to reach sound conclusions (by ‘sound’ I mean -inferences with scientific properties like provisional and falsifiable). I have not yet found a satisfactory definition for what architecture in computing really means, far less a definition of what the role of an architect could possibly be. By now, the proposal by Frederick Brooks, Jr. for the concept of architecture is arguably the most sensible definition I have found:&lt;/P&gt;
&lt;P class=ident style="FONT-STYLE: italic"&gt;“Computer architecture, like other architecture, is the art of determining the needs of the user and then designing to meet those needs as effectively as possible” –Oxford English Dictionary&lt;/P&gt;
&lt;P class=ident&gt;Why? Because it explicitly includes three key concepts: art, user needs, and design.&lt;/P&gt;
&lt;P class=ident&gt;A discussion about the design concept would be in order to answer the question: &lt;I&gt;“Should an architect code?”&lt;/I&gt;&lt;/P&gt;
&lt;P class=ident&gt;So, if by code, do you mean executing a mechanical and repetitive task that can be industrialized? Then the answer is ‘no’ (and also ‘no’ for any self-respecting software professional by the way).&lt;/P&gt;
&lt;P class=ident&gt;On the other hand, if by code, do you mean the act of expressing design intentions and the execution of models to corroborate hypothesized ideas with contextual data? Then the answer is ‘yes’ (and also ‘yes’ for any self-respecting software professional by the way).&lt;/P&gt;
&lt;P class=ident&gt;Next, I quote a thinker whose name I don’t know (if the author is listening, see: &lt;A href="http://blogs.msdn.com/marcod/archive/2007/02/17/SoftwareDesignersProfile.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2007/02/17/SoftwareDesignersProfile.aspx"&gt;What type of person should design software?&lt;/A&gt; ).&lt;/P&gt;
&lt;P class=ident style="FONT-STYLE: italic"&gt;"There are certainly people who think more about high level structure than they do about low level details. This is a valuable talent, and not one that should be scoffed at or discounted. Unfortunately, in some circles, it has become popular for people with these talents to divorce themselves from code. The term "architect" takes on an aura of authority and power, whereas a coder is deemed a lowly laborer, a dime-a-dozen worker bee.&lt;/P&gt;
&lt;P class=ident style="FONT-STYLE: italic"&gt;In reality, while the difference in talent is real, the polarization into different roles with different authorities is harmful. Those folks who are good at modeling and architecture must still remain grounded in code. For their skills to remain relevant and useful, they have to keep in touch with the medium they are trying to create structures for. Likewise, the programmer who divorces himself from concerns of architecture harms himself and his team by abdicating responsibility for something he is in an intimate position to control. There is a way for these two talents to work well and closely together, but they have to put forth the effort to understand each other."&lt;/P&gt;
&lt;P class=ident&gt;More notes about the practice of architecture:&lt;/P&gt;
&lt;P class=ident&gt;&lt;A href="http://blogs.msdn.com/marcod/archive/2007/11/30/MisinterpretedArchitecture.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2007/11/30/MisinterpretedArchitecture.aspx"&gt;Software architecture is much more than structure&lt;/A&gt;&lt;/P&gt;
&lt;P class=ident&gt;&lt;A href="http://blogs.msdn.com/marcod/archive/2004/07/30/202733.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2004/07/30/202733.aspx"&gt;Architecture is not about scalability, not even about user, it is all about usage&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8447676" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>Discussing uncomfortable questions</title><link>http://blogs.msdn.com/marcod/archive/2008/04/25/DiscussingUncomfortableQuestions.aspx</link><pubDate>Fri, 25 Apr 2008 15:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8424220</guid><dc:creator>marcod</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8424220.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8424220</wfw:commentRss><description>&lt;P class="ident noide"&gt;For those with critical thinking habits, let’s cogitate about this:&lt;/P&gt;
&lt;P class=ident style="MARGIN: 1cm 0.5in; FONT-STYLE: italic"&gt;If day after day goes by with nobody discussing uncomfortable questions like &lt;A href="http://www-cs-faculty.stanford.edu/~knuth/iaq.html" mce_href="http://www-cs-faculty.stanford.edu/~knuth/iaq.html"&gt;these&lt;/A&gt;, won't the good people of my country be guilty of making things worse?” —Donald E. Knuth&lt;/P&gt;
&lt;P class=ident&gt;Could this type of questions be translated to the lesser sphere of software development and the quality of what we deliver to customers and end-users?&lt;/P&gt;
&lt;P class=ident&gt;Let’s think, for example:&lt;/P&gt;
&lt;P class=ident&gt;Could it be possible that the notion of division of labor in industrial settings just &lt;A href="http://blogs.msdn.com/marcod/archive/2007/12/09/DivisionOfLabor.aspx" mce_href="http://blogs.msdn.com/marcod/archive/2007/12/09/DivisionOfLabor.aspx"&gt;does not deliver&lt;/A&gt; the same benefits in software development?&lt;/P&gt;
&lt;P class=ident&gt;I have seen and heard that many so-called ‘software architects’ lack the ability to write shippable software by themselves (with their own hands) and that they are taking key architectural decisions based on hypothesized ideas not actually corroborated with the results from execution of models. After taking architectural decisions this way follow the expenditure of vast amounts of human effort and financial resources to carry out a given project only to find out —most often than not— that most or all of that expenditure have been wasted. Serious postmortem analysis could revel that part of the root cause are those architectural decisions taken prematurely. Why should software consumers accept increasing levels of ineptitude in software development teams?&lt;/P&gt;
&lt;P class=ident&gt;Could it be that software development industry has got wrong the practice of architecture?&lt;/P&gt;
&lt;P class=ident&gt;Could it be that software development industry has got wrong the very essence and purpose of modeling (in reference to modeling as in engineering disciplines)?&lt;/P&gt;
&lt;P class=ident&gt;Has the &lt;SPAN style="FONT-STYLE: italic"&gt;“taking the form but not the substance”&lt;/SPAN&gt; behavior gone too far among us members of software development industry?&lt;/P&gt;
&lt;P class=ident&gt;What kind of work could be expected from developers and their managers if their view of software development is based on the belief that the main task is a mechanical and repetitive task that can be industrialized with expendable and interchangeable human ‘resources’?&lt;/P&gt;
&lt;P class=ident style="FONT-STYLE: italic"&gt;If day after day goes by with nobody discussing uncomfortable questions like these, won't the good people of our software development industry be guilty of making things worse?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8424220" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category><category domain="http://blogs.msdn.com/marcod/archive/tags/life+and+character/default.aspx">life and character</category></item><item><title>Belief and behavior</title><link>http://blogs.msdn.com/marcod/archive/2008/04/21/BeliefAndBehavior.aspx</link><pubDate>Tue, 22 Apr 2008 00:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8415729</guid><dc:creator>marcod</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8415729.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8415729</wfw:commentRss><description>&lt;P class="ident noide"&gt;A belief is —for practical purposes— something that we thought is true. The incredulity or disbelief is a case of belief where we thought of a belief to be false. To doubt about something means to keep the related true-false judgment in suspended or pending state. To ignore is to have a complete absence of that judgment. To know something or to acquire knowledge is the outcome of a process that serves as basis for a special belief, one that is properly justified.&lt;/P&gt;
&lt;P class=ident&gt;A religious belief is part of just one more type of belief within the extensive spectrum of belief types any given person could uphold. In current sociology of software development, many people uphold beliefs very similar in nature as religious beliefs, e.g., &lt;I&gt;"X will remove all our problems"&lt;/I&gt; or &lt;I&gt;"This important project will succeed because we have adopted X"&lt;/I&gt;; where X is any fashionable trend or buzzword blindly followed.&lt;/P&gt;
&lt;P class=ident&gt;Most of the time, the conduct of a person can be explained in terms of the beliefs this person upholds in the occurrence context of the behavior in question. The context can include social aspects like office, school, home, church, etc. Our beliefs have great power to influence our behavior and while our beliefs remain our behavior will do so.&lt;/P&gt;
&lt;P class=ident&gt;The correlation between the chosen conduct and its consequences (costs and benefits) encompasses the fuel that feeds the process to improve our beliefs, and therefore, our behavior. This correlation is not the only input for an improvement process, it is only one that is usually more affordable in comparison with other inputs as can be a tragic or catastrophic personal experience, also it can be the increase in conscience because of the understanding of a &lt;A href="http://www.freeinquiry.com/intro-to-sci.html" mce_href="http://www.freeinquiry.com/intro-to-sci.html"&gt;justified true belief&lt;/A&gt; about the same subject matter.&lt;/P&gt;
&lt;P class=ident&gt;A key question is then: Which process have you chosen for the improvement of your beliefs?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8415729" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category><category domain="http://blogs.msdn.com/marcod/archive/tags/general/default.aspx">general</category><category domain="http://blogs.msdn.com/marcod/archive/tags/life+and+character/default.aspx">life and character</category></item><item><title>The "What's coming after X?" question</title><link>http://blogs.msdn.com/marcod/archive/2008/04/11/WhatsComingNextQuestion.aspx</link><pubDate>Fri, 11 Apr 2008 17:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8381241</guid><dc:creator>marcod</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8381241.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8381241</wfw:commentRss><description>&lt;P class="ident noide"&gt;What could be say about the question: &lt;SPAN style="FONT-SIZE: xx-large"&gt;What's coming after X?&lt;/SPAN&gt;&lt;BR&gt;Where X could be:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P class="ident noide"&gt;Object-orientation&lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;P class="ident noide"&gt;Software engineering best findings&lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;P class="ident noide"&gt;Agile development&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class="ident noide"&gt;The context for the question:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P class="ident noide"&gt;Asked by blind advocates of X&lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;P class="ident noide"&gt;Usually young people (mental youth mainly)&lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;P class="ident noide"&gt;Looking for the next sensational fad&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=ident&gt;The question remains me about the question &lt;I&gt;"What is coming after object-oriented programming?"&lt;/I&gt; to an object-object oriented practitioner and author and his reply: &lt;I&gt;"Our industry needs to understand object-orientation in the first place before thinking in what is next"&lt;/I&gt;. Or the question &lt;I&gt;"Which mayor techniques do you see coming in the horizon of software engineering"&lt;/I&gt; to Dr. David Parnas and his reply &lt;I&gt;"The mayor techniques for software engineering have been already here and for a long time, but have not been fully understood"&lt;/I&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8381241" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>Learning items in software development</title><link>http://blogs.msdn.com/marcod/archive/2008/04/07/ABooklistApr08.aspx</link><pubDate>Mon, 07 Apr 2008 14:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8365517</guid><dc:creator>marcod</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8365517.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8365517</wfw:commentRss><description>&lt;P class="ident noide"&gt;A subjectively created list of books about software development grouped in the following categories:&lt;/P&gt;
&lt;P class="ident noide" style="MARGIN-LEFT: 35.4pt"&gt;Category I: Practitioners sharing their hard-won and thoughtful experiences.&lt;/P&gt;
&lt;P class="ident noide" style="MARGIN-LEFT: 35.4pt"&gt;Category II: Foundational knowledge.&lt;/P&gt;
&lt;H1&gt;Category I: Practitioners sharing their hard-won and thoughtful experiences&lt;/H1&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Principles-Patterns-Practices-Robert-Martin/dp/0131857258" mce_href="http://www.amazon.com/Principles-Patterns-Practices-Robert-Martin/dp/0131857258"&gt;Agile Principles, Patterns, and Practices in C#&lt;/A&gt; by Robert C. Martin, Micah Martin&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Art-Agile-Development-James-Shore/dp/0596527675/ref=wl_it_dp?ie=UTF8&amp;amp;coliid=I218E7MRKO0VVA&amp;amp;colid=3G41HZV17J2XK" mce_href="http://www.amazon.com/Art-Agile-Development-James-Shore/dp/0596527675/ref=wl_it_dp?ie=UTF8&amp;amp;coliid=I218E7MRKO0VVA&amp;amp;colid=3G41HZV17J2XK"&gt;The Art of Agile Development&lt;/A&gt; by James Shore, Shane Warden&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/gp/product/0321413091" mce_href="http://www.amazon.com/gp/product/0321413091"&gt;Implementation Patterns&lt;/A&gt;by Kent Beck&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/gp/product/0321278658" mce_href="http://www.amazon.com/gp/product/0321278658"&gt;Extreme Programming Explained: Embrace Change (2nd Edition)&lt;/A&gt; by Kent Beck and Cynthia Andres&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.addall.com/detail/0805305947.html" mce_href="http://www.addall.com/detail/0805305947.html"&gt;Object Solutions: Managing the Object-Oriented Project&lt;/A&gt; by Grady Booch&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.addall.com/detail/0131467409.html" mce_href="http://www.addall.com/detail/0131467409.html"&gt;Organizational Patterns of Agile Software Development&lt;/A&gt; by James O. Coplien, Neil B. Harrison&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.addall.com/detail/0131111558.html" mce_href="http://www.addall.com/detail/0131111558.html"&gt;Agile and Iterative Development: A Manager's Guide&lt;/A&gt; by Craig Larman&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.addall.com/detail/0321482751.html" mce_href="http://www.addall.com/detail/0321482751.html"&gt;Agile Software Development: The Cooperative Game&lt;/A&gt; by Alistair Cockburn&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.addall.com/detail/0130676349.html" mce_href="http://www.addall.com/detail/0130676349.html"&gt;Agile Software Development With Scrum&lt;/A&gt; by Mike Beedle, Ken Schwaber&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/exec/obidos/ASIN/0735623376" mce_href="http://www.amazon.com/exec/obidos/ASIN/0735623376"&gt;The Enterprise and Scrum&lt;/A&gt; by Ken Schwaber&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Craft-Software-Testing-Object-Based-Object-Oriented/dp/0131774115" mce_href="http://www.amazon.com/Craft-Software-Testing-Object-Based-Object-Oriented/dp/0131774115"&gt;The Craft of Software Testing: Subsystems Testing Including Object-Based and Object-Oriented Testing&lt;/A&gt; by Brian Marick&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Test-Driven-Development-Practical-Guide-Coad/dp/0131016490" mce_href="http://www.amazon.com/Test-Driven-Development-Practical-Guide-Coad/dp/0131016490"&gt;Test-Driven Development: A Practical Guide&lt;/A&gt; by David Astels&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/gp/product/032143482X" mce_href="http://www.amazon.com/gp/product/032143482X"&gt;Concurrent Programming on Windows Vista: Architecture, Principles, and Patterns&lt;/A&gt; by Joe Duffy&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.addall.com/detail/0201824671.html" mce_href="http://www.addall.com/detail/0201824671.html"&gt;Multi-Paradigm Design for C++&lt;/A&gt; by James O. Coplien&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.addall.com/detail/0131177052.html" mce_href="http://www.addall.com/detail/0131177052.html"&gt;Working Effectively With Legacy Code&lt;/A&gt; by Michael Feathers&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Windows®-Internals-Including-Windows-PRO-Developer/dp/0735625301/ref=pd_sim_b_title_1" mce_href="http://www.amazon.com/Windows®-Internals-Including-Windows-PRO-Developer/dp/0735625301/ref=pd_sim_b_title_1"&gt;Windows Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition&lt;/A&gt; by Mark Russinovitch, David A. Solomon&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215" mce_href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215"&gt;Domain-Driven Design: Tackling Complexity in the Heart of Software&lt;/A&gt; by Eric Evans&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Agile-Project-Management-Innovative-Development/dp/0321219775" mce_href="http://www.amazon.com/Agile-Project-Management-Innovative-Development/dp/0321219775"&gt;&amp;nbsp;Agile Project Management: Creating Innovative Products&lt;/A&gt; by Jim Highsmith&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Agile-Estimating-Planning-Robert-Martin/dp/0131479415" mce_href="http://www.amazon.com/Agile-Estimating-Planning-Robert-Martin/dp/0131479415"&gt;Agile Estimating and Planning&lt;/A&gt; by Mike Cohn&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Software-Pioneers-Manfred-Broy/dp/3540430814" mce_href="http://www.amazon.com/Software-Pioneers-Manfred-Broy/dp/3540430814"&gt;Software Pioneers&lt;/A&gt; by Manfred Broy (Editor), Ernst Denert (Editor)&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Wrights-Hard-Code-Best-Practices/dp/0735624356" mce_href="http://www.amazon.com/Wrights-Hard-Code-Best-Practices/dp/0735624356"&gt;I. M. Wright's Hard Code&lt;/A&gt; by Eric Brechner&amp;nbsp; &lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.addall.com/detail/020161622X.html" mce_href="http://www.addall.com/detail/020161622X.html"&gt;Pragmatic Programmer: From Journeyman to Master&lt;/A&gt; by Andrew Hunt, David Thomas&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.addall.com/detail/0201733862.html" mce_href="http://www.addall.com/detail/0201733862.html"&gt;Software Craftmanship: The New Imperative&lt;/A&gt;by Pete McBreen&lt;/P&gt;
&lt;P class="ident noide" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Category II: Foundational knowledge&lt;/H1&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www3.addall.com/New/submitNew.cgi?query=0201722194&amp;amp;type=ISBN&amp;amp;location=10000&amp;amp;state=&amp;amp;dispCurr=USD" mce_href="http://www3.addall.com/New/submitNew.cgi?query=0201722194&amp;amp;type=ISBN&amp;amp;location=10000&amp;amp;state=&amp;amp;dispCurr=USD"&gt;Software design&lt;/A&gt; by David Budgen&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.addall.com/detail/0201924781.html" mce_href="http://www.addall.com/detail/0201924781.html"&gt;Software for Use: A Practical Guide to the Models and Methods of Usage-Centered Design&lt;/A&gt; by Lucy A.D. Lockwood, Larry L. Constantine&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/gp/product/0123740371" mce_href="http://www.amazon.com/gp/product/0123740371"&gt;Sketching User Experiences: Getting the Design Right and the Right Design&lt;/A&gt; by Bill Buxton&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Object-Oriented-Analysis-Applications-Addison-Wesley-Technology/dp/020189551X" mce_href="http://www.amazon.com/Object-Oriented-Analysis-Applications-Addison-Wesley-Technology/dp/020189551X"&gt;Object-Oriented Analysis and Design with Applications (3rd Edition)&lt;/A&gt; by Grady Booch&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Practical-Structured-Systems-Yourdon-Computing/dp/0136907695/ref=pd_bxgy_b_text_b" mce_href="http://www.amazon.com/Practical-Structured-Systems-Yourdon-Computing/dp/0136907695/ref=pd_bxgy_b_text_b"&gt;Practical Guide to Structured Systems Design (2nd Edition)&lt;/A&gt; by Meilir Page-Jones (Author)&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Structured-Design-Fundamentals-Discipline-Computer/dp/0138544719/ref=wl_it_dp?ie=UTF8&amp;amp;coliid=I32CVI9E4XIIFY&amp;amp;colid=3G41HZV17J2XK" mce_href="http://www.amazon.com/Structured-Design-Fundamentals-Discipline-Computer/dp/0138544719/ref=wl_it_dp?ie=UTF8&amp;amp;coliid=I32CVI9E4XIIFY&amp;amp;colid=3G41HZV17J2XK"&gt;Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design&lt;/A&gt; by Edward Yourdon&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Structured-Design-Fundamentals-Discipline-Computer/dp/0138544719/ref=wl_it_dp?ie=UTF8&amp;amp;coliid=I32CVI9E4XIIFY&amp;amp;colid=3G41HZV17J2XK" mce_href="http://www.amazon.com/Structured-Design-Fundamentals-Discipline-Computer/dp/0138544719/ref=wl_it_dp?ie=UTF8&amp;amp;coliid=I32CVI9E4XIIFY&amp;amp;colid=3G41HZV17J2XK"&gt;Structured Analysis and System Specification&lt;/A&gt; by Tom Demarco and P. J. Plauger&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Structure-Interpretation-Computer-Programs-Engineering/dp/0262011530/ref=pd_bxgy_b_text_b" mce_href="http://www.amazon.com/Structure-Interpretation-Computer-Programs-Engineering/dp/0262011530/ref=pd_bxgy_b_text_b"&gt;Structure and Interpretation of Computer Programs - 2nd Edition&lt;/A&gt; by Harold Abelson, Gerald Jay Sussman&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/dp/0262692201" mce_href="http://www.amazon.com/dp/0262692201"&gt;Instructor's Manual t/a Structure and Interpretation of Computer Programs - 2nd Edition&lt;/A&gt; by Julie Sussman&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Computer-Science-Overview-Glenn-Brookshear/dp/0321387015" mce_href="http://www.amazon.com/Computer-Science-Overview-Glenn-Brookshear/dp/0321387015"&gt;Computer Science: An Overview (9th Edition)&lt;/A&gt; by J. Glenn Brookshear&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.addall.com/detail/0201309777.html" mce_href="http://www.addall.com/detail/0201309777.html"&gt;Generative Programming: Methods, Tools, and Applications&lt;/A&gt; by Krzysztof Czarnecki, Ulrich Eisenecker&lt;/P&gt;
&lt;P class="ident noide"&gt;&lt;A href="http://www.amazon.com/Foundations-Empirical-Software-Engineering-Legacy/dp/3540245472" mce_href="http://www.amazon.com/Foundations-Empirical-Software-Engineering-Legacy/dp/3540245472"&gt;Foundations of Empirical Software Engineering: The Legacy of Victor R. Basili&lt;/A&gt; by Barry Boehm&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8365517" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/design/default.aspx">design</category><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item><item><title>Message to the whole body of management teams in software industry</title><link>http://blogs.msdn.com/marcod/archive/2008/03/12/DecayedBeliefs-.aspx</link><pubDate>Thu, 13 Mar 2008 01:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8176749</guid><dc:creator>marcod</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/marcod/comments/8176749.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcod/commentrss.aspx?PostID=8176749</wfw:commentRss><description>&lt;P class=ident style="FONT-SIZE: x-large; TEXT-INDENT: 0px"&gt;To all management teams in our industry:&lt;/P&gt;
&lt;P class=ident style="FONT-SIZE: x-large; MARGIN-LEFT: 0.5in; TEXT-INDENT: 0px; MARGIN-RIGHT: 0.5in"&gt;Please consider doing more of this: Increasing the minimum level of knowledge and modern actual practice required from software development sales personnel in order to negotiate projects with customers/users. Most of current sales personnel have notions, beliefs and premises no longer valid in the software development high-tech market in general. For example, that “analysis” or “design” or “programming” are separated stages in the software development process; they are not stages, they are concurrent activities. And many more decayed beliefs which could seriously decrease the chances for those projects to reach better business results and better customer satisfaction.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8176749" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcod/archive/tags/agile/default.aspx">agile</category></item></channel></rss>