The Second System

This first post is not going to be a cheery “hello, world”. I’m not a blogger. I’m not going to introduce myself. This is just yet another blog, and you know what to do with a blog, so just do it. This post is about the second system effect.

Many a year ago, somewhere around the start of my career, I read the book The Mythical Man-Month by Frederick Brooks. If you create software, in any form of it, you should have read this. There’s no point in explaining why, and I’m not here to sell the book — if you love your profession, read it.

Brooks devotes five pages of the book to the phenomenon of the second system. That’s a bit too much really; for the concept of the second system is something simple and so fundamentally human, that it can be understood by just a few paragraphs, maybe even a blog post. Why it is so interesting, however, is its omnipresence in just about all aspects of software development.

Consider: a person develops a software. A tool, let’s say, that solves a problem faced by his team daily. He shows it to his colleagues. They like it. They love the fact that it saves them time and effort. They’ve a few suggestions, however. A few things that’d make it more convenient for them. Sure, says the developer, happy to help. He realizes some very cool and helpful features cannot be added without changing basic assumptions and algorithms in the code. So those features will have to wait.

Days go by. The software is a hit. The developer has incorporated quite a few suggestions from his happy users. There are some cool features, however, that’d make it really a blockbuster. It’d take time though, since the core design will have to be changed substantially to implement these. He realizes how the design should have been in the first place — more general, more flexible, like this, not like that, use this, not that. The scribbles on napkins and doodles on whiteboard develop into UML diagrams. He researches similar tools offered by others, and realizes that with the new features his software would simply be the best in the market.

It’s not easy, he realizes. He shouldn’t really have had to do this, if the original design was more open and flexible. And more generalized. Backends, what about backends — of course, it should be able to work with any database! Yes, that’s what has to be done. Quite generic, of course. That’s how it should have been, always.

Most of the old code was thrown away, since they couldn’t be refactored into the new design, or had assumptions that tied to specific systems and situations. His faithful colleagues still used the old software, however, since it solved many of their problems. The developer worked all his spare time on building the second system.

Stop.

At this point, the tired architect would like to interrupt the gentle reader. Because the story does not end here, or ever. The building of the second system goes on. And on, and on. Until they’re forcibly put to death by emptied budgets, tired management, or burned-out developers. Second systems are tempting visions painted by the devil himself, take the path and you’ll find yourself in purgatory sooner or later.

The second system originates from a deep, basic need of humans — to make things better. To correct mistakes. To live life one more time, without making the same mistakes again. The Undo button. Do it till you get it right. Citius, Altius, Fortius.

The second system is not a disease, it is a symptom. Which indicates that the people involved have not worked on a second system, or are not aware of what is the second system.

If you haven’t worked on a second system, you just can’t appreciate it. As they say, good judgement comes from experience, and experience from bad judgement. It makes you a better architect, like how pain makes you appreciate health better.

Look around your world today — do you see people engaged in second systems? People trying to build the “next version” of their software that will be the “biggest and most light-trippin’-fantastic” ever? Versions that keep on getting written? Rewritten? Refactored? People trying to create their own software that will solve all the problems of the previous one? Programming languages? Web frameworks? IDEs?

If you haven’t been there, be aware enough to catch yourself from falling into the trap. Good luck.

55 Comments

  1. cumpsd said,

    Oct 22, 2007 at 2:11 pm

    Nice explanation! I’ve been involved in quite a few of second systems on my personal spare time, always due to being too perfectionist. And burn-out was usually the result after a while, making me work on a slower pace for a while, till the fire got lit again and the energy was back at full force.

    But, as you say, it’s such a strong need.

  2. Maik said,

    Oct 25, 2007 at 1:04 pm

    Sorry, but I don’t believe this blog post amounts to much. Software development is much too complex for simple concepts like “second systems are evil”. Often they are, sometimes it works and results in a better piece of software, sometimes they are absolutely necessary. It depends on countless factors. Would we know the name “Firefox” today if it hadn’t been a complete “second system”? WHY the hell do developers work in their free time on the “second system” at all? You say so yourself. Doing something from scratch is highly motivating, it’s like cleaning up your desk and getting a fresh start. You can try out new things you’ve learned, new concepts that evolved in your mind. Programming is all about motivation, about passion. Every one should have a “second system”.
    The real factor leading to burn out and “emptied budgets” is not tighly controlled, incremental “seconds systems”. It’s feature creep, a very common and totally orthogonal concept. You can have feature creep with legacy software too. This has nothing to do with refactoring or rewriting at all. Feature creep happens when you don’t set specific goals and concentrate on getting usable versions out of the door in short intervals.

  3. Riccardo said,

    Oct 25, 2007 at 1:06 pm

    Hello,
    actually I’m working on a big project that just looks like a second system. Basically is the rewrite of a BIG As/400 application to a .net frontend -> java backend through web service.
    At the moment I can’t tell how is it going to end but it is an awful lot of work… :-(

  4. Franck said,

    Oct 25, 2007 at 1:17 pm

    This is an interesting version of the “good enough” theory that tries to teach us where to stop in an effort to switch to other priorities.

    P.S: You should check how you associate “time” with your posts, because it seems that you are already October 22… and on my calendar it is only October 3 ;o)

  5. Anonymous Coward said,

    Oct 4, 2007 at 12:40 am

    I’ve created a kick-ass system at work, that is getting attention from other parts of the company too. Why am I rewriting it from scratch? Because I’m too ashamed of the code produced by short deadlines and huge work load.

  6. Mike Kaufman said,

    Oct 4, 2007 at 12:50 am

    Brooks also says “plan to throw one away; you will, anyhow”. Which clearly implies a “second system”.

    I don’t think Brooks is saying that a “second system” is inevitably a mistake (as he points out, an architect can’t just skip his second system). Nor is he necessarily just referring to a rewrite or other such second attempt at the same system. Much of the chapter talks more generally about an architect’s second “task”.

    Instead, I think he’s just pointing out that what an architect thinks they have learnt from their first system can make them overly bold and can generally lead them astray when approaching their second system. In particular, they then have exactly one example to draw lessons from, and can’t tell what’s specific to that one example and what has a broader truth. We need to be aware of this and take it into account, both in terms of self-discipline and in how we manage projects (e.g. not regarding architects as fully competent until after they’ve worked on multiple systems – though nowadays I suspect the tendency is to regard people as senior achitects even before their first system).

    In any case, however much I enjoy and admire Brooks’ book in its context, we shouldn’t blindly take all of it as an absolute gospel truch regardless of circumstances. For example, in those days the technology and requirements didn’t “churn” as quickly and there was a lot more similarity from one project to the next than I ever see today (though maybe that’s just me…). Some of the economic trade-offs might also be rather different now due to different tools and techniques (for example, the “extreme programming” movement is at least partly based on an explicit recognition of how modern approaches have changed these trade-offs).

    To quote something else from the same period, and in keeping with your 42!,42!! post, the key is to always “Think”.

  7. Miro said,

    Oct 4, 2007 at 5:04 am

    You have pointed out several valid concerns – but what do you suggest as a solution ? Do you see any way “out of the trap” ?

  8. Oct 4, 2007 at 4:46 pm

    […]   Second System Oct03 3 October 2007, admin @ 4:07 pm From: The Second System  […]

  9. James said,

    Oct 5, 2007 at 2:28 am

    I haven’t read the book. Very interesting idea. I’ve been working on a second system for years. My main objective is to make it so that someone besides me can figure out how to configure it. I just spent 11 hours yesterday making the major changes to core that are needed to make it understandable but in the process broke all functionality. I’ve been putting yesterday off for months because it sucked so bad and now I got to go line by line and fix everything. Maybe I should have just stuck to the first system. Well, it was already the second system. Yesterday began the third system. Anyway, I’m just hurting my job security, right?

  10. Mehrdad said,

    Oct 5, 2007 at 5:25 am

    My two cents:
    “Second system” is the way of nature! Biologists call it “Evolution”. You change and update to adapt. In evolution, the result and the functionality counts, the design is the second issue. You go for the “Second system” because the very “cool features” can keep you on the top. If you don’t, others will and your tool becomes irrelevant, i.e. you go extinct!
    So may be sticking to the “first system” is the real trap that prevents you from progress!

  11. David Durand said,

    Oct 5, 2007 at 8:02 pm

    One thing missing from this post is that Brooks counts higher than two. The first system succeeds because fear of failure forces pragmatism in building. The second system fails (or is a bloat-master) because it’s over-generalized dues to ambition and confidence. The Third systems (and after) are the best. They’re better built than the cramped first version, but ambition is tempered by the experience gained from the runaway second version.
    While this is a learning process for all software architects and engineers, even experienced engineers may fall back into the trap if they move into a different enough area that they lose perspective.

  12. Ramachandran M said,

    Oct 6, 2007 at 9:51 am

    Grate expression born out of deep impression.

    I am also involved in the development of a second system in one way or other so I can appreciate your view point. What about this point of view. Software developer is rather considered as creator who enjoys his creation than an employee who do some mediocre work.. Especially when he is an architect . Every creation is painful and is born out of no mind, which will be normally simple and intelligent. It is actually an intellectual property of the person. The term Intellectual Property (IP) reflects the idea that its subject matter is the product of the intellect. The very reward of creation is the joy we get out of it. If it is frustrating then it is born out of mind. In this point of view is it not better to be caught in a trap…?

  13. news said,

    Jun 6, 2012 at 12:28 pm

    Have you given any kind of consideration at all with translating your main web site in to Chinese? I know a few of translaters here that will might help you do it for free if you wanna contact me.

  14. Jun 22, 2012 at 8:11 am

    I was basically wanting to know if you ever considered modifying the design of your site? It is well written; I love what youve got to say. But maybe you can include a little more in the way of content so people could connect with it better. Youve got a great deal of text for only having one or two photos. Maybe you can space it out better?

  15. Jun 23, 2012 at 6:44 am

    When I start your Feed it seems to be a ton of nonsense, is the issue on my side?

  16. account said,

    Jun 24, 2012 at 3:12 am

    Im getting a small issue. I cant get my reader to pick-up your feed, Im using msn reader by the way.

  17. save on said,

    Jun 24, 2012 at 6:47 am

    Is it fine to insert part of this in my personal blog if perhaps I post a reference point to this web site?

  18. Jun 24, 2012 at 12:21 pm

    Have you considered adding a few social bookmarking buttons to these blogs. At least for flickr.

  19. sponsor said,

    Jun 24, 2012 at 6:51 pm

    While I really like this post, I believe there was an spelling error shut towards the finish with the third sentence.

  20. trading said,

    Jun 25, 2012 at 12:21 pm

    This is really a fantastic site, would you be interested in going through an interview regarding just how you created it? If so e-mail myself!

  21. webaddress said,

    Jun 27, 2012 at 12:01 pm

    Re: Whoever created the remark that this was a great site actually needs to have their head evaluated.

  22. Jun 28, 2012 at 12:17 pm

    Can you message me with a few tips on how you made your website look this good, I would appreciate it.

  23. buy fridge freezer said,

    Jun 30, 2012 at 9:01 am

    As soon as I at first left a comment I clicked on the Notify me any time new comments are added checkbox and currently each time a remark is added I get four emails with the exact same comment.

  24. Jul 1, 2012 at 12:08 am

    Just to let you know your web-site appears a little bit strange on Firefox on my laptop using Linux .

  25. Jul 2, 2012 at 6:58 am

    I love this site layout ! How do you make it. It is so cool.

  26. Jul 2, 2012 at 9:44 am

    How did you make a site look this awesome. Email me if you can and share your wisdom. Id be appreciative.

  27. web address said,

    Jul 3, 2012 at 9:03 am

    Odd , this page turns up with a black hue to it, what color is the primary color on your webpage?

  28. Jul 4, 2012 at 12:29 pm

    The structure for the weblog is a bit off in Epiphany. Even So I like your web site. I might need to install a normal browser just to enjoy it.

  29. Jul 5, 2012 at 7:28 am

    Have you considered adding some differing opinions to your article? I think it might enhance everyones understanding.

  30. Jul 6, 2012 at 3:04 am

    I enjoy your wordpress format, where did you get a hold of it?

  31. Jul 6, 2012 at 7:41 am

    Is it okay to place part of this in my personal blog if perhaps I submit a reference point to this webpage?

  32. Jul 6, 2012 at 7:54 am

    Do youve got a spam issue on this web site; I also am a blogger, and I was asking yourself your situation; we have developed some great methods and we are looking to exchange options with other folks, be certain to fire me an e-mail if interested.

  33. Jul 6, 2012 at 4:20 pm

    I tried looking at your website with my cellphone and the format doesnt seem to be correct. Might wanna check it out on WAP as well as it seems most smartphone layouts are not really working with your web site.

  34. this month said,

    Jul 7, 2012 at 5:27 pm

    Re: Whomever produced the comment that this was a great website genuinely needs to get their brain looked at.

  35. privacy said,

    Jul 8, 2012 at 6:49 am

    Wanted to drop a comment and let you know your Feed is not functioning today. I tried adding it to my Yahoo reader account and got nothing.

  36. Jul 8, 2012 at 7:35 am

    This is a wonderful website, would you be interested in going through an interview regarding just how you produced it? If so e-mail myself!

  37. e cigarettes said,

    Jul 9, 2012 at 12:12 am

    I adore this blog site layout ! How was it made. Its so cool.

  38. Jul 9, 2012 at 6:35 am

    While I truly like this publish, I think there was an spelling error close to the end with the 3rd sentence.

  39. sponsor said,

    Jul 10, 2012 at 12:22 am

    How come you do not have your site viewable in wap format? cant view anything in my phone.

  40. Jul 10, 2012 at 6:24 am

    Have you given any consideration at all with translating your web page into Chinese? I know a small number of translaters right here which would certainly help you do it for free if you want to make contact with me.

  41. Jul 10, 2012 at 8:34 am

    Oh man! This website is awesome! How do you make it look like this !?

  42. Jul 10, 2012 at 1:08 pm

    Can you email me with some hints & tips on how you made this blog site look like this , I would appreciate it.

  43. Jul 12, 2012 at 9:16 am

    Cool post ! Thank you for, writing on my blog page dude! I shall message you again! I didnt know that.

  44. Jul 12, 2012 at 7:37 pm

    Have you given any thought at all with converting your current web page in to Spanish? I know a couple of of translaters right here that will would certainly help you do it for free if you want to make contact with me personally.

  45. Jul 13, 2012 at 12:28 am

    Hey there, I just hopped over to your site using StumbleUpon. Not somthing I might usually browse, but I enjoyed your thoughts none the less. Thank you for creating some thing worth reading.

  46. save on said,

    Jul 13, 2012 at 7:05 am

    How come you do not have your website viewable in wap format? Can not see anything in my iPhone.

  47. Jul 13, 2012 at 7:39 am

    This website is extremely cool. How was it made !?

  48. Jul 13, 2012 at 8:15 pm

    Have you given any consideration at all with translating your current blog in to German? I know a few of translaters right here that would help you do it for no cost if you want to contact me personally.

  49. go here said,

    Jul 14, 2012 at 11:06 am

    Do you might have a spam problem on this website; I also am a blogger, and I was wondering your situation; weve developed some good strategies and were searching to swap solutions with other people, be sure to blast me an e-mail if interested.

  50. Jul 14, 2012 at 5:50 pm

    When I start your Feed it appears to be a ton of garbage, is the problem on my side?

  51. Jul 14, 2012 at 5:55 pm

    Do youve a spam concern on this website; I also am a blogger, and I was questioning your scenario; we have created some nice techniques and we are looking to trade solutions with other folks, be certain to shoot me an e-mail if planning to pursue.

  52. sponsor said,

    Jul 16, 2012 at 11:03 pm

    Wow. This blog is awesome. How do you make it look this good .

  53. Jul 17, 2012 at 7:41 am

    Weird , your post shows up with a black color to it, what color is the primary color on your web site?

  54. Jul 17, 2012 at 7:53 am

    When I open up your Rss feed it seems to be a lot of garbage, is the problem on my part?

  55. tarot gitano said,

    May 15, 2013 at 12:24 pm

    I really like reading through a post that can make men and women think. Also, thanks for allowing for me to comment!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: