Only Me and Me


Proud to be a developer

晚上在看MSDN杂志,07年6月那期的卷首有一篇Adam Barr写的Proud to Be a Developer:
When I was a senior in college,  I remember a conversation with a fellow computer science major who was going to work for an investment bank. He explained that he would be involved in designing software, but he would not busy himself with the mundane task of actually writing it. That would be handed off to a coder—evidently a lower species. In other words, me. Coming from a university environment in which the ability to hack code was the ultimate status, I felt vaguely insulted.
However, he had a point. Back then, I was just a coder (not that he was any better). Today, as in the title of Mike Gunderloy’s book Coder to Developer, I have moved beyond being a mere coder and now consider myself a developer. I know more than just how to write code that compiles; I can produce software that is fast, reliable, well-tested, secure, maintainable, globalizable, and on down the list of attributes of high-quality code. The software industry in general is maturing from an army of coders to an army of developers.
Now, if you ask developers about their next career step, they may say they want to be an architect. The word conjures up visions of titanium and frosted glass, and relegates the mere developer, by comparison, to the role of construction worker. So do I feel like taking the theoretical next step and styling myself as an architect? My answer is no.
No insult to architects is intended: software development does need people to lay out the interaction between components of a system, and to keep the big picture in mind. Nonetheless, I am proud to be a developer, and I hope every other developer can feel the same pride.
What if you envy the freedom of design available to physical architects like Frank Gehry or Rem Koolhaas? My response would be that the discipline of software engineering is too immature to climb that conceptual ladder. Architects can design buildings like the Bilbao Guggenheim Museum and the Seattle Public Library because they are supported by centuries of knowledge about civil engineering. The software industry can’t afford the luxury of having everyone operate at this level; most of us are still trying to build a one-story house that doesn’t collapse when you slam the front door.
When Microsoft examines the cause of its bugs, it identifies a significant number that aren’t design bugs—the kind that would be found when an architect reviews a design document—but neither are they coding bugs—when the source code doesn’t do what the programmer intended. This intermediate class occurs when the source code does what the programmer intended, but there is a localized error in the intent: issues like passing the wrong flags to a method, or misunderstanding the meaning of a configuration parameter. This isn’t the province of architects. It’s something that we developers have to do correctly on our own.
Fred Brooks alluded to this in his famous "No Silver Bullet" essay where he wrote "The essence of a software entity is a construct of interlocking concepts: data sets, relationships among data items, algorithms, and invocations of functions" and then went on to say "I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation." He is not talking about what architects do; he is talking about what developers do. He is saying, in effect, that being a coder may not be too hard, but being a developer certainly is. We should recognize the merit of what we do.
I know this is not the glory work of programming. It can be a thrill to perfectly architect multiple components in a way that neatly encapsulates variation and allows for future extension. Programmers like precision, and there is beauty in having all of the pieces fit together just so. But there is a large part of producing software that involves working like a skilled craftsman: performing code reviews, writing unit tests, cleaning up comments. Customers may not directly recognize how our hard work is ensuring their privacy or guarding their system against attack, but we know the value we provide. And there are areas like performance optimization and power management that are true black arts: not high-level architecture but close-in work, just us applying our skill and experience to the problem at hand.
I’m proud to say I’m a developer, not an architect. Maybe someday we’ll solve all the engineering problems in software, and then we can all become architects. In the meantime, we have some well-crafted software we need to finish.
我希望有一天我能成为一个Software Architect,但the pride of being a developer会是肩上永远的徽章。

9 responses to “Proud to be a developer

  1. Annie June 14, 2007 at 4:04 am

    and eventually design a "world" that is more open, more visible, and less distant ….
    : )

  2. 蚊子 June 14, 2007 at 12:26 pm


  3. shallshallwe June 14, 2007 at 2:58 pm

    wait a second, is there any misunderstand of architect?… haha, nevermind, however, not anybody is like Frank Gehry or Rem Koolhaas, could design whatever in their imagination, and even realize. So most of the architects, just as u software designers, have the dreams of freedom in our mind, but seldemly have a chance to realize them. And, most of energy are spending on many basic issus, such as the security, the convenience, something sounds not that exciting, but pertty impertant. So…haha, anyway, any designer is trying so hard, just want to make our world more beautiful and 带给人们幸福,不是么:)

  4. Ting June 14, 2007 at 7:57 pm

    Coder->Developer->Architect->… There\’s a very straightforward career path, though there might be ups and downs. However, fighting for ur life Man, we can be

  5. Ting June 14, 2007 at 8:02 pm

    AO,  accidentally added incompelete one…. following word should be:
    A man can be destroyed but not defeated 🙂

  6. Demon June 15, 2007 at 3:14 am

    @ Annie: I am not sure about the last requirement, : )
    @ 总结里需要的是facts,光喊口号是不行的, : )
    @ 嘴角上扬:这会遇到真正的architect了,呵呵。
    @ Ting: Developer未必一定要成为Architect,可以往Technical Fellow这边发展,那是技术职位上最高的头衔。Architect其实是有些区别的,我只是更倾向于那个方向而已,for now, : )

  7. Annie June 15, 2007 at 3:36 am

    Internet does make it a smaller world…to some extent…

  8. Steven June 15, 2007 at 7:59 am

    无论是Coder, Developer还是Architect,有一点是不变的,那就是对技术的热忱以及对美感的追求。最近看了一条新闻,很有趣,程序员把枯燥的数字变成了具有艺术气息的图像,有些图像还被博物馆收藏了。

  9. Demon June 16, 2007 at 6:33 pm

    I am with yo, : )

Leave a Reply

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

You are commenting using your 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: