Code Craft
The art, science and craft of writing quality software

Aug. 4, 2005 - Now is NOT the time to write an assembler

Posted in Management

I've interviewed hundreds of people for software positions over the years, but few of them stand out like the guy who wanted to write his own assembler.  Let's call him Bob the Builder or just Bob for short.  In the first fifteen minutes of the interview Bob had proclaimed his intent to write a better editor, make system, and assembler.  There may have been one or two more, but it was the assembler that stuck with me.  For every item on Bob's list there was a litany of very legitimate and very specific complaints.  He was sure he was just the man for the job of rewriting each one.  You can say one thing about Bob, it takes a lot of brass to believe you know enough to write a better assembler than the legions of folks who have already done it. 

 

I had a different interview with a "senior" engineer that would never have stuck out if I hadn't been thinking of Bob.  Let's call her Natalie Merchant or Natalie for short.  Natalie was some kind of anti-Bob.  She had been working as an engineer for almost 8 years and couldn't identify one piece of software she was proud of having written.  What she did do, however, was proclaim quite loudly that she would never write a single line of code if she could find it for sale or free (with the former preferred due to its generally higher quality).  How, I asked, do you determine if a piece of software is suitable for your needs?  "It's not too hard; you can always change what you need if the software isn't a good match."  When I showed her a piece of obviously broken code she looked at it and said, "it looks like it should work just fine."  Of course Natalie was looking for a job as a manager.

 

The Bobs and the Natalies of the world, the Builders and the Merchants, represent two extreme world views.  They are the build and the buy of the build vs. buy dilemma.  I don't want to try to answer the unanswerable question of who is right, but ask yourself this question: who would you rather have working for you if you ran a software development company?  To me the answer is easy: Bob. 

 

Bob looks at software and sees opportunity for improvement.  He's confident he can do it.  Natalie just wants to find a way to get the job done and trusts others to do it more than she trusts herself.  Bob may never be pleased with the software we write, but he can probably be counted on to at least write some of it.  Natalie, on the other hand, may be great at finding creative work-arounds for customer issues, but I don't think we can expect her to come up with elegant technical solutions.  It's also easier to keep Bob's tendencies in check.  I can always tell him to fix element A and rewrite element B later, but what do I do when I need Natalie to get her hands dirty?  Bob may eventually quit if he doesn't get to rewrite things, but Natalie will never quit (which is much worse).  Also, what company doesn't have something it really does need to rewrite?

 

To be honest, I'm pretty sure Bob's eyes were bigger than his stomach and I'm glad we didn't hire him.  People that far out on the edge are a little too far.  I am even more glad we didn't hire Natalie.  No matter how hard you try to avoid it some Natalies wind up in every company and the last thing you need is another one.  You need at least two Bobs to clean up the mess made by just one Natalie.

 

The funny thing is that in the years since interviewing Bob people have written a better editor, a better make system and even a better assembler.  We've seen better search engines and better compilers.  Hardly a single piece of technology hasn't been done over and been done better.  I wonder if Bob played a part in any of that.

 

 

 

Post A Comment!

Aug. 4, 2005 - Natalie

Posted by Anonymous
I understand everything you just said...but I must admit I'm a Natalie. Though, as a Natalie I'm not completely oblivous to the technical side of things, but I'm also not in tune with things. I do not even know what an assembler is or what it does? But I can guarantee I'm intrigued to know what it is and I will find out, minutes after I post this comment. I do not know a lick of code and never wanted to learn, but I can manage and support software...hardware...networks....etc. It would be great if I could manage and support with a deeper understanding of how the code allow devices to communicate and the communication of the two, but I'm just not interesting. To me it's the same as learning a new language like French. If a French speaking-person needed directions then I couldn't tell them how to get there...but I could point them in the right direction.

Also, I believe there are many more Natalies out there in the world than there are Bob's and I truly believe we need more Bob's, because us Natalies are running on a treadmill...."going no where fast". But I must say, us Natalies will always put a smile on your face!
Permanent Link

Aug. 4, 2005 - *APPLAUSE*

Posted by MyImmortalLust
Wow, I don't know Jack Shit about code, and I haven't got a clue what an assembler is, but I absolutely love your post!! Maybe you should write a book in your spare time!!!You have tallent as a writer (not just for code). Would you mind if I copied that and read it at my next staff meeting? I have a lot of Bobs and Natalies who need to know who they are!
Permanent Link

Share and enjoy
  • Digg
  • del.icio.us
  • DZone
  • Netvouz
  • NewsVine
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • YahooMyWeb
<- Last PageNext Page ->

Kevin Barnes

Code Craft is the place for my thoughts, rants, ideas and occassional jokes on what it means to write code, why some people are better at it than others, and how we think about software in general.

Links

Home
View my profile
Site Feed (RSS)
Archives
Email Me
StorePerform
TechNexxus
Soul Craft (my stories and discussions)
My Wall

Joel on Software
Paul Graham
Patric Logan
Martin Fowler
Free Blogs
Free Blog



Copyright (C) 2005, Kevin Barnes. All rights reserved.

portfolio