tag:blogger.com,1999:blog-119657622009-02-21T07:19:14.848-05:00Lean CincinnatiLEAN SOFTWARE DEVELOPMENT <br/>
Unites Lean Business Models and Agile Technology<br/>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comBlogger29125tag:blogger.com,1999:blog-11965762.post-1126392186840854942005-09-10T18:41:00.000-04:002005-09-10T18:43:06.850-04:00Lean Cincinnati is Moving !To get better Blogging facilities Lean Cincinnati is moving to <br /><br /><br />http://typo.railsstudio.com/<br /><br /><br />Please reset your RSS feeds.<br /><br />-Thanks<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-112639218684085494?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1126185387341551422005-09-08T09:15:00.000-04:002005-09-08T09:37:13.836-04:00Field of DreamsIn the last week, I've talked with two very smart, highly motivated programmers. Both are making plans to leave the Cincinnati area.<br /><br />Why? Both say that there are no interesting programming projects going on here. All they see is old-style java and .NET projects that are missing the wave of new approaches.<br /><br />And they feel that they would put their career at risk by staying here.<br /><br />The questions we have been discussing on a local mailing list (http://groups.yahoo.com/group/grow_cincy_soft/) are:<br /><br />(1) Why are programmers leaving Cincinnati?<br />And (2) How can we keep and attract more?<br /><br />If we conclude that they are leaving because Cincinnati companies are not offering them interesting projects, why is that??<br /><br />Some say it is because Cincinnati is somehow "Conservative".<br />That doesn't answer anything really.<br />Is WalMart (which considers IT as part of their core competency) somehow "Liberal" ??<br />I don't think so!<br /><br />It's not a about being "Conservative".<br />It's about seeing IT as either a competitive advantage or as a cost center to be minimized.<br /><br />It's a fundamental VALUE choice that each company has to make.<br /><br />And the question shifts to:<br />Why don't Cincinnati companies embrace technology as a competitive advantage?<br /><br />If you see technology as a competitive advantage, and invest in it, the programmers will love to stay and work on the important projects.<br /><br />ITS THAT SIMPLE.<br /><br />If you see IT as a cost center to be minimized and out-sourced, then don't be surprised if the good programmers prefer to move away from Cincinnati and work for Google, or ThoughtWorks, or someplace that wants to us IT to MAKE money.<br /><br />As they said in the movie "Field of Dreams"...<br />Build it and they will come.<br /><br />- Mark<br />http://leansoftwarecincinnati.blogspot.com/<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-112618538734155142?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1119408986076534702005-06-21T22:40:00.000-04:002005-06-21T22:56:26.083-04:00Throughput AccountingAccounting has different problem solving schools of thought just like software development does.<br /><br />If you want to measure the effectiveness of a management decision you want to count the costs and benefits of that decision. The traditional way to do this is with Cost Accounting. In the Lean-Thinking approach, Cost accounting blamed for guiding companies toward inefficiencies. <br /><br />Instead an approach called: Throughput Accounting, measures end-to-end benefits on a system wide basis.<br /><br />One difference is that with Cost Accounting inventory is valued as a good thing - an asset. The more inventory you have on the books the more your company is worth (on paper anyway).<br /><br />Using Throughput accounting, Value is only recorded when a product is actually sold. The piles of out of date parts carried in inventory are seen as a liability. The more incomplete work you've got in the process the lower your value (on paper).<br /><br />Thoughput accounting seems to me to reflect the real word a bit better. Your company sells a product, you record value. Not before.<br /><br />But there seems to be a struggle in the accounting community between these two camps. Partly, because they are advising management to take different paths toward success.<br /><br />It reminds me of the struggle between the Data Processing and the Object Oriented approaches to software development. More on that later.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111940898607653470?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1118262795745869492005-06-08T16:26:00.000-04:002005-06-08T16:38:05.890-04:00Lean Software StrategiesI just got a Lean Case study published in chapter 25 of <br /><B><a href="http://www.productivitypress.com/productdetails.cfm?PC=327">Lean Software Strategies</a>: Proven Techniques for Managers and Developers </B>. <br /><br /><a href="http://www.productivitypress.com/productdetails.cfm?PC=327"><br /><img src="http://www.productivitypress.com/client/products/prodimagelg/3055.jpg"></a><br /><br />And for a <a href="http://leansoftwarecincinnati.blogspot.com/2005/04/recap-lean-software-development.html">Recap of Lean Software Development</a> see this previous posting.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111826279574586949?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1117982461599213712005-06-05T10:25:00.000-04:002005-06-05T17:11:04.036-04:00The Rails Day-AfterWell, I didn't give as many "updates from the front" as I intended. But here is my rapid-review of the day of coding.<br /><h1>Wow !</h1><br /><h3>Ok, now more detail...</h3><br />It was the quickest 18 hour period that I've experienced in a long time. Everything I looked at the clock it jumped another 2 hours. Among the 6 coders we all seemed to feel that way. After an 8 hour day at work we usually feel tired out. After 17 hours in the contest and at 1:00 am, we were all still wishing we had another hour or two, to squeeze a little more functionality in before the deadline. I did not see one single yawn the entire time. As the evening was getting late, we inadvertently missed dinner entirely. We did have plenty of snacks to keep us going.<br /><h3>The Contest</h3><br />About 120 teams were signed up. 100 competed. This contest was world-wide. More details at <a href="http://railsday.com">railsday.com</a><br /><h3>The Application</h3><br />It was a very good start on the app. It was usable and functional. The PhotoDepo sets up user accounts for Photographers, Guests, and Administrators. Photographers can upload Photo's, arrange them into albums and add "tag words" to them. Guests can browse and search the photos by the "tag words". Administrators set up and manage the accounts. And other users can browse without signing on to the application.<br />We do wish we had another few hours to add some of the cool AJAX features and polish it up a bit more. <br /><h3>Lines Of Code Produced</h3><br /><table> </tr><br /><tr><td>App Code</td><td>445 (not counting the rhtml) </td></tr><br /><tr><td>Test Code</td><td>524</td></tr><br /><tr><td>Total Code</td><td>969</td></tr><br /></table><br />That's about <b>20 lines of code per person per hour</b><br /><h3>More Railsday Review's</h3><a href="http://scott.elitists.net/users/scott/posts/railsday-is-done">Scott's Review</a> and <a href="http://onestepback.org/index.cgi/Tech/Ruby/RailsDay2005.red">Jims's Review</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111798246159921371?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1117907659029331472005-06-04T13:51:00.000-04:002005-06-04T13:54:19.033-04:00RailsDay MilestonesThe two programming teams in Cincinnati are Team8 and Team32.<br />Team8 is doing a food tracking system.<br />Team32 is doing a photoDepo<br /><br />The contest rules require at least 12 check-ins.<br />At this point Team34 has 16 check-ins and Team8 has 32.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111790765902933147?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1117893537342765372005-06-04T09:56:00.000-04:002005-06-04T09:59:27.576-04:00Today is Rails DayRails day has started. If you would like to check how it's going ask me at AOL Instant Messager Nickname: <b>objwind</b> <br /><br />Also available for video iChat with Apple iSight.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111789353734276537?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1117835531715945102005-06-03T17:49:00.000-04:002005-06-03T18:08:04.893-04:00Show Time !Tommorow is the first www.RailsDay.com. <br />A 24-hour contest to code an interesting web application.<br />Cincinnati has 2 teams entered, and we will be coding in public at the Kenwood towers<br />The Towers of Kenwood<br />8044 Montgomery Rd.<br />Cincinnati, OH<br /><br />Directions and organizational information are available at:<br /><a href="http://onestepback.org/cgi-bin/osbwiki.pl?RailsDayPlanning">Rails Day Planning</a><br /><br />Stop by and visit the coders in action.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111783553171594510?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1114438923052378252005-04-25T07:10:00.000-04:002005-04-25T11:58:50.973-04:00Meta-DataThe Server Side has an article on when to use <a href="http://www.theserverside.com/news/thread.tss?thread_id=33525">code Annotations</a>.<br />Code Annotations are Meta-Data in the code. And the Java community is happy to be getting annotations in Java 5. THe .NET crowd has had them for a while now.<br /><br />But maybe the emphesis in my title gave away my point. It's Meta-<b><i>Data</i></b>. Get it? More Data.<br /><br />The Object Oriented way to solve the same problem is with objects. Meta-Objects, or Meta-Classes. Java followed .NET down the road of taking the <a href="http://www.theserverside.com/news/thread.tss?thread_id=33525">Data-Processing</a> approach.<br /><br />Annotations may look helpful. And perhaps they are. But they won't solve development problems as cleanly and maintainably as OO could.<br /><br />We need to look to other languages (like Ruby perhaps) to actually provide Meta-Classes and an Object Oriented approach.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111443892305237825?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1113571495820675332005-04-15T07:16:00.000-04:002005-04-15T09:24:55.820-04:0024 hours of codeLean Software Development produces code on an ongoing basis, rather than in long waits and big chucks of deployment. Using xp <a href="http://www.lifeware.ch">www.lifeware.ch</a> delivers code into production every working day. This is made possible by Agile processes like Extreme Programming (XP). And by smart technology choices. LifeWare uses Smalltalk.<br /><br />Another continuous code delivery technology will be demonstrated<br />"<em>On June 4th, Ruby on Rails developers all over the globe will have 24 hours to build the best application they can.</em>"<br /><br />See what is possible by tuning in or participating <a href="http://railsday.com/">http://railsday.com/</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111357149582067533?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1113187614175316342005-04-10T22:22:00.000-04:002005-04-11T03:17:02.443-04:00Recap: Lean Software Development[The links in this recap all point to previous entries. It is a recap after all.]<br /><br /><a href="http://leansoftwarecincinnati.blogspot.com/2005/04/problem.html">The Problem</a> is that software projects still deliver an unacceptable level of quality and responsiveness. Part of the reason for this is the <a href="http://leansoftwarecincinnati.blogspot.com/2005/04/scientific-project-management.html">industrial-era Scientific Management</a> approach. Part of the reason for this is the <a href="http://leansoftwarecincinnati.blogspot.com/2005/04/language-and-culture.html">progamming culture</a> that grows up around a language.<br /><br />Lean software development provides information-era Lean management: Reduce <a href="http://leansoftwarecincinnati.blogspot.com/2005/04/cycle-time.html">Cycle-time</a> and start <a href="http://leansoftwarecincinnati.blogspot.com/2005/04/expecting-zero-defects.html">expecting zero defects</a>.<br /><br />But the cultural issues and <a href="http://leansoftwarecincinnati.blogspot.com/2005/04/reason-2-why-java-is-written-in-data.html">organizational structures</a> remain extraordinarily difficult to deal with. Some hope may be appearing in a new programming language (and more importantly programming culture) <a href="http://leansoftwarecincinnati.blogspot.com/2005/04/looking-at-ruby.html">Ruby</a><a href="http://leansoftwarecincinnati.blogspot.com/2005/04/looking-at-ruby.html">.</a> Which includes in it's libraries and way of development, new technologies that are merely <a href="http://leansoftwarecincinnati.blogspot.com/2005/04/since-java-10.html">bolted onto J2EE</a> (and .NET).<br /><br />The promise of applying Lean-Thinking to Software development is available now. It consists of a Lean Business Model, combined with Agile Processes and a deeply Object Oriented environment and culture. All these parts are currently available.<br /><br />Knocking the competition for a loop, only requires putting them all together.<br /><br />How hard can that be ?<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111318761417531634?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1113186152869267782005-04-10T22:08:00.000-04:002005-04-11T03:14:41.206-04:00Looking at Ruby<a href="http://onestepback.org/">Jim Weirich</a> is a bit of a local (Cincinnati) legend. He has been modesty and quietly mentioning an up and coming programming language in various local users' groups and forum's for years.<br /><br />It's a measure of how entrenched a culture can get that even when highly respected community leaders encourage a new idea, the idea still does not really sink in. So, I kept thinking he was right, but not relevant for my own work and interests. And I kept pushing <a href="http://www.ruby-lang.org/en/">Ruby</a> down the list of things I wanted to look into.<br /><br />Finally, after I did study up a little on Ruby, I caught up with Jim. I apologized for ignoring his mild suggestions that Ruby was really something, nice to know.<br /><br />What was it that finally did it?<br /><br />Initially, in January of 2005, it was seeing the <a href="http://www.blogger.com/www.rubyonrails.org">RubyOnRails</a> framework video.<br /><br />After that, it was the appreciation of the <a href="http://www.ruby-lang.org/en/">Ruby</a> culture, and the currently forming <a href="http://www.blogger.com/www.rubyonrails.org">RubyOnRails</a> sub-culture. More on that later ...<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111318615286926778?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1113185231814572392005-04-10T21:32:00.000-04:002005-04-11T03:21:48.606-04:00Since Java 1.0I like Java and J2EE. I work with these often and enjoy the tools and environments. I've been through a number of generations of the <span style="font-style: italic;">hot technology</span>, and I like to play the game of trying to see around the next corner. That means looking hard at the current state of the art. That's what I'll do now ...<br /><br />The Java language entered mainstream production usage in parallel with the raise of some other increasingly important technologies. One of course was Web development, and Sun was very quick to adapt Java to help address the needs of the web. The web and Java go together very powerfully.<br /><br />Some other technologies while successful, have been bumpier to integrate. <span style="font-weight: bold;">Meta-level</span> programming was added to Java in the form of Reflection with a useful but clumsy API.<br /><br /><span style="font-weight: bold;">Aspect Oriented Programming (AOP) </span>is being added both at runtime with libraries, and at compile time with AspectJ byte modifications. And in a similar way as the Meta-level API, AOP in Java is useful, yet just a bit convoluted.<br /><br />The most important after-market addition to Java, in my estimation, has been <span style="font-weight: bold;">jUnit</span>. And the whole idea of unit testing. The practice of automated programmer testing, is still struggling to become standard operating practice by the typical Java programmers.<br /><ul> <li>Meta-Level programming</li> <li>Aspect Oriented Programming</li> <li>Unit Testing</li> </ul> My point is that these three new technologies are available for Java, but not integrated into the programming approach of the typical Java programmer. But that's ok since there are plenty of production Java programs written without these three making money for companies.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111318523181457239?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1113183084761523202005-04-10T21:13:00.000-04:002005-04-10T21:38:16.856-04:00Reason #2, Why Java is written in Data Processing style?Ideas don't thrive unless they fulfill a need. That's simple <a href="http://en.wikipedia.org/wiki/Meme">meme</a> propagation theory.<br /><br />So even Object Oriented enthusiasts like myself, have to admit that something in the use of Java Data-Processing designs works well, for someone, somewhere.<br /><br />Objects have been shown to be easier to test, and adapt, and extend. What is it about separating Data and Processing that seems to trump, those good things???<br /><br />Just because Objects are the best thing for Application development, <span style="font-weight: bold;">AND</span> just because the agility Object provide is the best thing for businesses, does not mean that Objects are the best thing for organizational structures. Departments are often separated by concerns not strictly focused on the delivery of <span style="font-style: italic;">Value</span>.<br /><br />Separating the Database and Application programming into different management hierarchies puts enormous pressure on the organization to produce Data Processing architectures. This is an instance of <a href="http://c2.com/cgi/wiki?ConwaysLaw">Conway's Law</a> which states that the shape of the architecture will resemble the shape of the organization.<br /><br />Is is any wonder that the best flexible, agile software is produced by smaller companies that have not grown so big as to split their people into departments tuned for something other than pure, full-out, software delivery?<br /><br />Reason #2: the organizational structure encourages the separation of Data and Processing, which results in Data Processing designs.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111318308476152320?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1113181985172207332005-04-10T20:57:00.000-04:002005-04-10T21:13:05.173-04:00Reason #1, Why Java is written in Data Processing style?During my presentation on <a href="http://www.objectwind.com/present/COBOL_J2EE.pdf">COBOL Oriented J2EE</a> I talked about the separation of Data and Behavior that plagues so many Java applications. JavaBeans fro data and Transactions scripts for behavior is the opposite of Object Oriented development. This however, is exactly the style advocated by the Sun J2EE blueprints. It is how many programmers designed their web applications.<br /><br />So why is do much J2EE code written in a Data Processing style? Reason #1, because Sun said it should be.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111318198517220733?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1113067914060178322005-04-09T13:28:00.000-04:002005-04-10T10:26:31.773-04:00ROIFinally, there are two ways to increase the payback (or Return On Investment) on a software project:<br /><ul> <li><span style="font-style: italic;">lower the cost</span> or</li> <li><span style="font-style: italic;">increase the value</span>. </li> </ul> <span style="font-weight: bold;">Lower costs</span> can be accomplished with offshore development. Understandably, corporate executives are unhappy with paying high dollar rates for poor quality software built locally. Instead they reduce labor costs by moving projects offshore. Offshore programming gets low-cost, & talented programmers to produce the <span style="font-style: italic; font-weight: bold;">same poor quality software as before</span>. Reducing cost increases payback.<br /><br />An alternative way to increase payback is to <span style="font-weight: bold;">increase project value</span>. This can be realized by savings of time to market, closer understanding of the real customer requirements, and customer goodwill by providing defect free applications. Lean Software Development provides the business case for this approach. Extreme Programming provides the most popular way to implement Lean Software Development.<br /><br />A closing thought. In the 1980s Japanese Lean Auto Manufacturers established engineering and production facilities in the U.S.. Did they move development off-(Japanese)-shore for lower U.S. labor rates? No way! They now build cars in Ohio and Michigan, in order to be closer to the customer, to ship quicker and to understand more deeply. They moved closer to customers to produce more profitably.<br /><br />The same occurs in companies that adopt Lean Software Development. Offshore may be less expensive, but when software is business critical, locally built <span style="font-weight: bold;">Lean Software Development</span> with <span style="font-style: italic;">short cycle times</span> and<span style="font-style: italic;"> low defects</span> are the <span style="font-weight: bold;">cost effective, high value </span>option.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111306791406017832?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1113067671879863312005-04-09T13:24:00.000-04:002005-04-09T13:27:51.880-04:00Expecting Zero DefectsIf you expect zero defects a fundamental change in thinking occurs. Do I mean to say that no single defect will ever occur? No. I mean that we treat every defect as something really, really bad, and figure out how to prevent that class of defect from occurring again.<br /><br />Lean Manufacturing production lines encourage each assembly worker to <span style="font-style: italic;">stop the line</span> if a defect appears. Paradoxically, lean production lines almost never stop.<br /><br />In Scientifically Managed production lines, only the manager can stop the line, yet they often crash because defects are not reported creating bigger problems downstream.<br /><br />Expect zero defects and you realize that the way you schedule, test, program, and release software all needs to change to accomplish your goal. And since 80% of current software project dollars are spent removing defects the goal of Zero Defects becomes financially justifiable.<br /><br />Extreme Programming has a practice of Test-First coding that is fundamental in achieving the goal of Zero Defects. Test-First coding requires that an automated unit-test is written before the production code and the test-to-code cycle time be 5-15 minutes long. Additionally, automated acceptance testing insures that the correct business value is delivered. Acceptance tests are built directly from the requirements before the production code is written. All tests are built one at a time immediately before each piece of production code. Moving the tests to the front of the process gains efficiencies in providing a tight discipline and direction to the team.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111306767187986331?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1113067473688658922005-04-09T13:19:00.000-04:002005-04-09T13:24:33.690-04:00Cycle TimeThe software industry finds itself in a situation today similar to automobile manufactures in 1970s. Defects are sapping resources and angering customers. Defects and long cycle times are reducing our ability to respond to new business opportunities. The most heavily marketed solution is to add more bulky process steps and to do more testing at the end. This approach lengthens cycle times. Meanwhile the Lean approach is delivering successful projects using processes with unlikely names like: <span style="font-style: italic;">Scrum, DSDM</span>, and<span style="font-style: italic;"> Extreme Programming</span> (XP). Lean Software Development reduces defects and cycle times while delivering a steady stream of incremental business value.<br /><br />Cycle time for software development is measured in the number of days needed between feature specification and production delivery. This is called:<span style="font-style: italic;"> Software In Process (SIP)</span>. A shorter cycle indicates a healthier project. A Lean project that deploys to production every 2-weeks has a SIP of 10 working days. Some Lean projects even deploy nightly.<br /><br />Going to production every 2-weeks may raise fears of introducing new defects. Lets deal with that. In order to achieve short cycle time we need to eliminate defects. Doesn't that sound pretty straightforward?<br />Start by expecting zero defect software production.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111306747368865892?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1113065241473242092005-04-09T12:40:00.000-04:002005-04-09T12:48:26.893-04:00Scientific Project ManagementHenry Ford built his early automobiles using <span style="font-style: italic;">scientific management</span> techniques. Every production step was optimized for return on investment. Cars were shipped directly from the factory to the dealer without testing them. The focus was on efficient, not quality production. As the auto industry grew factories added testing and repair stations <span style="font-style: italic;">at the end of the line</span> to catch defects before the customers did. It was a helpful innovation. Quality assurance became focused on that final phase. When defects were found components were disassembled and fixed. The <span style="font-style: italic;">cost of this re-work was high</span>.<br /><br />Parallels can be found in how most of the software industry builds software today. Programs are either released to the customer for testing, or they are tested as the last step before release to the customer. And much of the current focus of quality assurance is on <span style="font-style: italic;">finding defects at the end</span>. Is it reassuring that we are following the same path as the automotive industry before 1970?<br /><br />Certainly if we do a good job of testing at the end, many of the defects will be caught.<br />Testing cars at the end does find the defects. But since a mass-production factory produces in <span style="font-style: italic;">large batches</span>, many cars are built with the same defect before the defect is detected at the end. Consequently <span style="font-style: italic;">many</span> cars often need to be re-worked because of the same defect. When cycle time between error, detection, & correction is long it causes repeated errors to occur before correction. Now that is expensive!<br /><br />Could this be why <span style="font-style: italic;">80% of software development costs are spent on defect removal</span>? If we wait until the end of a month-long cycle to test, programmers will introduce similar kinds of defects across the system. Repeated defects in software occur when communication with the customer breaks down causing multiple wrong features to be built; when wrong assumptions are propagated; or when programmers don't share information among themselves and multiple programmers make the same mistake. These defects show the limitations of long cycle times.<br />That is the approach of <span style="font-weight: bold;">Scientific Project Management</span>.<br /><br />I'll talk about how Lean Manufacturing does it in the next post ...<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111306524147324209?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1113064755223111572005-04-09T12:36:00.000-04:002005-04-09T12:47:55.660-04:00The Problem$59.5 Billion is wasted every year! The U.S. gross domestic product loses 0.6% a year because of software defects. Currently, over half of all errors are not found until 'downstream' or during post-sale software use. This occurs even though vendors <span style="font-style: italic;">already spend 80% of development costs on defect removal</span>.<br /><br />The software industry is becoming increasingly interested in removing defects <span style="font-weight: bold; font-style: italic;">after</span> the defects are created. A focus on defect removal sounds like a good idea. But what if the defects are <span style="font-style: italic;">not created in the first place</span>? What would that be worth?�� Is it realistic to suggest that software can be built without defects� Teams using Lean Software Development are demonstrating that it can be done. To see what we mean by Lean, let's start with what is not Lean.<br />We'll save that for the next post ...<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111306475522311157?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1112923994347403892005-04-08T00:35:00.000-04:002005-04-07T21:33:14.346-04:00Language and CultureMost J2EE development is in DP style That does not mean that you cannot do Object Oriented J2EE. But what people do with a language creates the language culture. Perhaps some people could build OO programs in a culture of DP, but it will always be fighting against the norm.<br /> <br />You can certainly build OO designs with java. Lot of people do. Often however, requirements are presented in terms of DP vocabulary. This makes building it in OO more difficult for the users to understand.<br />DP is encouraged when requirements:<br /> * Specify the screens<br /> * Specify the DB schema<br /> * Specify the data fields, flags, switches, and codes<br /> * Specify the data transformations.<br /><br /> Fitting that into an OO mold is another impedance mismatch.<br /><br /> OO requirements would<br /> * talk in Business terms<br /> * Name the concepts involved (Classes)<br /> * Iterate furiously to refine understanding, and reduce concepts to a minimum<br /> * define and place behavior (not data) into and among the classes <br /><br />This requires business uses to talk in business language. However, I'm noticing that most Business users are now talking in terms of data and processing. Not in their own native business language. <br />Many Business users speak DP. They expect DP solutions.<br /> <br />So, to really do OO, the upstream expectation need to be broadened. The business users need to speak in their native language of concepts again. This is a switch in culture. And will be difficult.<br /><br />The first step is for us Java folks to understand that what we have often been delivering is not OO. But at the core of most J2EE systems are data structures and processes, hence DP-style.<br />Much of the common literature in Java has encouraged this. The J2EE blue prints, Struts, Entity Beans, etc. These all encourage a DP approach.<br />So to do OO in J2EE, is often swimming against a powerful set of fundamental assumptions, and frameworks. Thats why I'm exploring the Ruby language and culture. The assumptions in Ruby are tilted heavily toward Object Orientation.<br /><br /> I worry that trying to do OO in J2EE will often make one a frustrated outsider.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111292399434740389?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1112923560338661062005-04-08T00:24:00.000-04:002005-04-07T21:26:00.340-04:00DP style developmentData Processing style also involves the use of:<br /> * data structures (called Beans) that have only data with gettters/setters.<br /> * Util classes to operate on the Data Structures<br /> * Managers, Services, and Helpers, etc, that do all the real processing.<br /> * And global public constants that are shared by multiple algorithms scattered across the code base<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111292356033866106?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1112923190357402302005-04-08T00:21:00.000-04:002005-04-07T21:20:44.176-04:00J2EE as Data ProcessingI claim that most Java/J2EE applications are written in a Data Processing (DP) style. Rather than an OO style. I'll also say that over 90% of the java being written is DP-oriented.<br />Since most development is in DP style, is Java really the best choice for building DP programs??? (Years were spent in attempts to use C++ as an everyday OO langauge.) That's why I'm trying to raise the issue of COBOL oriented J2EE.<br /><br />Java is a mostly-OO language. But the culture that surrounds it is a mostly Data Processing culture. You can't (probably shouldn't) build OO apps in a DP culture. I have nothing against Data Processing. It has a cost/benefit model that may work in some situations. I'm just concerned that an OO language being used in a DP culture is a mismatch.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111292319035740230?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1112922281677591952005-04-08T00:00:00.000-04:002005-04-08T01:49:38.020-04:00COBOL oriented J2EEI gave a talk in Febuary 2005 at the local java group called<br /><a href="http://www.objectwind.com/present/COBOL_J2EE.pdf"> COBOL oriented J2EE</a><br /><br />The point to the talk is not to say that "COBOL orieinted J2EE " (COJ) is good.<br />COJ makes development and maintenance harder and more expensive.<br /><br />However, "COBOL oriented J2EE" (COJ) is the dominant paradigm.<br />And if we want to make our jobs easier, we need to <br />understand:<br /><br />(1) why does COJ exist?<br />(2) what is Domain Design?<br />(3) who benefits from COJ?<br />(4) How can those same people benefit more from OO Domain design?<br />(5) What small easy steps can we take to more toward OO Domain Design? or How to escape being just a "COJ on the wheel" (couldn't resist :-)<br /><br />That's a pretty long list to cover in one short presentation.<br />But I tryed to give some jumping off points for people who<br />want to go deeper in a particular area.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111292228167759195?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.comtag:blogger.com,1999:blog-11965762.post-1112922634679218532005-04-07T21:06:00.000-04:002005-04-07T21:24:09.693-04:00OO Projects in DP cultureAfter the presentation below Steve G. asked :<br />-----------------------------------<br /> When the user (the one who is paying the bills) starts the project off with 'we know what data is available, and we've mocked up what we want the pages to look like and how they should flow, what we need is for someone to get it on the Web'<br /> ... you'll never get out of the Data and Processing scenerio. How do you typically address these?<br />-----------------------------------<br /><br />He's absolutley right. That's why I say the the Data Processing attitude is deeply dug into<br />the larger culture. The OO or DP decision is usually made before anyone knows that they<br />are actually making a decision.<br /><br />However, you can at least put together a Simple Domain Model and build with that.<br />The requirements above do push you into talking about data and transformations, where you implemented is still (maybe) under control of the programmer/designer.<br /><br />It's best, of course, if you can refocus the requirements discussion away from data fileds and transformations and onto business problems and behavior.<br /><br />That is often quite tricky given that most IT people and most business people deep in their sub-conscious can only think about programs in terms of non-OO, data processing concepts.<br />That's one reason I also talked about small improvments we can make like eliminating the use of un-encapsulated, public constants.<br />It's a small thing. But it can move us all to focusing more on Behavior and Nameing.<br />With any change, I encourge Baby Steps in the OO direction.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11965762-111292263467921853?l=leansoftwarecincinnati.blogspot.com'/></div>Mark Windholtzhttp://www.blogger.com/profile/09321739799659802091noreply@blogger.com