My Secret Life as a Spaghetti Coder
home | about | contact | privacy statement
This week's advice from Chad Fowler's gem of a book really resonated with me when I read it, and it continues to do so. It was one of my favorite chapters in the book: Be a Generalist.

Don't be "just a coder" or "just a tester" or just anything. Doing so leaves you useful only in certain contexts, when reality dictates that it would be better to be generally useful.

Towards the end of the chapter, Chad tells us about his early days in IT:
What first amazed me most when I entered the information technology field was that many well-educated programmers (maybe most) didn't know the first thing about how to set up the systems they used for development and deployment. I worked with developers who couldn't even install an operating system on a PC if you asked them to, much less set up and application server on which to deploy their applications.
After reading that, I thought to myself, "That's me." Rather than wallow in self-pity, I decided to do something about it.

Where I used to ask "our server guy" (that's his official name) to do something, I started asking him how to do it. ButI didn't immediately start there - I started trying to figure it out on my own before going to him for help (à la Mr. Raymond's famous guide). Now I don't need help in setting up virtual directories or web sites or my development environment (yes, I was that bad).

Instead of being helpless, I set up Rails, installed Linux and fixed up dual widescreen monitors, set up Subversion, set up my own development environments in general, and played with ANTLR, among a slew of other things past, present, and planned for the future (on my TO-LEARN list).

Doing things like I mention above is not impressive. Certainly things like that aren't hard to do. But doing them helps you get over your fear of new technology and take responsibility for your own improvement.

The chapter ends with advice to "list the dimensions on which you may or may not be generalizing your knowledge and abilities" and to do something about it. There are an "infinite number" of aspects for which you could do it, but Chad limits his discussion to five: "Rung on the career ladder, Platform/OS, Code vs. data, Systems vs. applications, [and] Business vs. IT."

I've got a long way to go, but I'm slowly getting to where I want to be. Are you doing anything?

Hey! Why don't you make your life easier and subscribe to the full post or short blurb RSS feed? I'm so confident you'll love my smelly pasta plate wisdom that I'm offering a no-strings-attached, lifetime money back guarantee!


Comments
Leave a comment

Thanks for this very interesting article, and the stuff described certainly rings a bell to me too -- but as a typical self-employed "lone warrior" in the web biz I have to admit that I simply don´t succeed being everyone´s "all-in-one device suitable for every purpose".

Personally I´d rather rephrase this a little :: *try* to be a generalist and learn as much as you can -- but know and respect your *current* limits, and if someone else is better in a certain field of work, team up with him/her to provide an overall better quality to the customer.

To my mind a true "generalist" doesn´t always need to be able to do it all himself -- an orchestra conductor usually doesn´t know how to play the violin perfectly, but he "knows some folks" who do provide this quality, and makes the best of it.

Posted by Günter Schenk on Aug 17, 2007 at 01:54 PM UTC - 6 hrs

@Günter - I agree. I wouldn't go charging customers for my deficiencies. I might consider charging the time I /think/ it would have taken me had I known what I was doing in the first place, erring on the lower end. Generally though, we'll try to partner with someone who does know what needs to be done, just as you suggest.

There is also another upside of teaming with someone more knowledgeable than yourself, aside from providing better value to the customer: that you can learn from them at the same time and hopefully amplify your own skill set.

Posted by Sam on Aug 18, 2007 at 10:10 AM UTC - 6 hrs

It's tough to be a generalist in a field which seemingly demands so much specialized knowledge, but I wholeheartedly agree with you. In the end, the people who are busy transforming entire companies are the ones who have a good grasp of all 5 of these aspects!

Posted by Justice~! on Aug 25, 2007 at 11:55 AM UTC - 6 hrs

Leave a comment

Leave this field empty
Your Name
Email (not displayed, more info?)
Website

Comment:

Subcribe to this comment thread
Remember my details
Google
Web CodeOdor.com

Me
Picture of me

Topics
.NET (19)
AI/Machine Learning (14)
Answers To 100 Interview Questions (10)
Bioinformatics (2)
Business (1)
C and C++ (6)
cfrails (22)
ColdFusion (78)
Customer Relations (15)
Databases (3)
DRY (18)
DSLs (11)
Future Tech (5)
Games (5)
Groovy/Grails (8)
Hardware (1)
IDEs (9)
Java (38)
JavaScript (4)
Linux (2)
Lisp (1)
Mac OS (4)
Management (15)
MediaServerX (1)
Miscellany (75)
OOAD (37)
Productivity (11)
Programming (168)
Programming Quotables (9)
Rails (31)
Ruby (67)
Save Your Job (58)
scriptaGulous (4)
Software Development Process (23)
TDD (41)
TDDing xorblog (6)
Tools (5)
Web Development (7)
Windows (1)
With (1)
YAGNI (10)

Resources
Agile Manifesto & Principles
Principles Of OOD
ColdFusion
CFUnit
Ruby
Ruby on Rails
JUnit



RSS 2.0: Full Post | Short Blurb
Subscribe by email:

Delivered by FeedBurner