My Secret Life as a Spaghetti Coder
home | about | contact | privacy statement
Before reading Chad's book, I was a one-"stack" kind of programmer. I knew a bit about Java and .NET, and I was fairly competent in C and C++ (though I wouldn't say I knew much about OO). I had done a couple of things in PHP and ASP. But for the most part, I was only using ColdFusion and Microsoft SQL Server on Windows with IIS as the web server. Consequently, I knew HTML and a bit of CSS too. I largely shied away from learning anything new, and tried my hardest to only work with what I knew well.

That sounds incredibly unlike me now. Although the change was occurring before I read his book (as evidenced by the fact that I was reading it in the first place), it certainly helped accelerate things.

(Let me also say I feel weird posting a link to the book each time I write one of these, but I don't want someone new to come along and think "WTF's he on about?" So for all you regulars, please ignore what must seem like link spam for the greater good of improving oneself: I'm not a PragProg salesman or affiliated with them in any way. Though I am an affiliate with Amazon, I don't get any special consideration for promoting this book out of all the other things I could be writing about.)

Anyway, Chad suggests making "a list of early, middle, and late adoption technologies" (page 23). Then, note the one's you're strong in, ones you have some experience in, and some you have no experience in. Try to notice any pattern there. And finally, "are there any technologies around the far edges that you have some special interest in?" Those are the high risk/high reward type cases where there is more money to be made. The middle has many more jobs, but also much more competition from other programmers.

So here's a small list I made (from early adoption to late adoption). A + marks technologies I'm fairly strong in while a - is just some experience. I 'm trying to be honest with myself, so call me out if you think I've got something wrong:

Early adoption: Lisp(-), Haskell, Erlang, Ruby(+), JavaScript(+)

Middle adoption: SQL(+), Python, Perl, ColdFusion(+), PHP(-), ASP.NET(-), C#(-), Java(+), .NET(in general)(-)

Late adoption: ASP(-), JSP(+), ASM, Visual C++(-), COBOL

I put Lisp in early adoption because I could foresee it becoming big at some point. Probably not, but I don't think its mainstream or in its sunset years either. Similarly, I think JavaScript while abundantly adopted is only done for simple web scripting. I see its importance rising.

I'm not sure where CF belongs, honestly. Certainly not early adoption. It's in the middle somewhere, but I don't know how early in the middle or how late. I'm tending later. For Java, I put it near late adoption because I think its importance as a language is diminishing, though its importance as a platform will remain steady.

I'm not sure where to put PHP either honestly. I almost went with late adoption because I can't foresee myself ever looking for a job doing PHP. But that's just me. I certainly don't think its importance is on the rise, however. Of course, I don't think that about CF either, given prevailing attitudes.

That's just a few large things- a lot related to web development (since that's what I'm most familiar with). I'm also having trouble thinking of technologies I have no experience in whatsoever. There are tons, to be sure, I'm just not finding any when it comes to the language level of granularity. What important languages have I missed? I know I missed SmallTalk, but I don't know whether to put that in early or late adoption. At the moment it belongs in late, but will its importance rise?

Anyway, what does your list look like? What technologies are missing from mine and where would you put them on the curve?

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!

Leave a comment

What a timely post!

At the moment it's actually coming down to choosing between vendors - and their future - for the technology stack.

I've invested a lot of time and energy over the years in the Adobe camp (via Macromedia) with CF, Flex and now AIR, having turned my back on Microsoft when ASP.NET was in it's infancy. Lately I've been pushing specific issues to assess support and growth potential of Adobe's offerings to see where the cracks are. It's as if Adobe doesn't know what it wants to be when it grows up.

Meanwhile I have Scott Barnes from Microsoft (literally) in my neighbourhood (and ear) with SilverLight, ASP.NET 3.0 and DLR.

At this present time the jury is still out...

Posted by barry.b on Aug 04, 2007 at 11:00 PM UTC - 5 hrs

Sam, Save your job - learn the in's and out's of business. You will be far better served if you learn business skills.

Take a course in finance, practice public speaking, business requirments (a must). Business users don't care about your skills beyond your being able to do the job - they DO care that you can work with them and give them the solutions they want.



Posted by David on Aug 04, 2007 at 11:26 PM UTC - 5 hrs

@Barry - I like the direction you took in going to web development and comparing the choices from vendors. Something I hadn't thought about and missed the opportunity to mention AIR/Silverlight and that end of web development. Looking at it that way, I might put CF and parts of .NET further left on the middle adoption list.

@Davo - That's good advice. I'd like to think I'm competent at eliciting requirements from clients and understanding them. What I lack in that skill, iterative and incremental development makes up for. I'd like to take a class just to see what I'm "missing" though.

I completely agree with your assesment that business users only "care that you can work with them and give them the solutions they want."

After all, we don't want to be just a code monkey:

Posted by Sam on Aug 05, 2007 at 06:54 PM UTC - 5 hrs

@Sam, I'd like to offer that it can go a bit further than just the core technology choice, especially when it comes down to choosing between tweedle-dee and tweedle-dum

(I'm not qualified to talk about other vendor offerings...) but it seems that both Adobe and Microsoft are making it easy for developers to sit within their technologies for their core needs and stay there. I come to Flex (and now AIR) via ColdFusion and NOT VisualBasic. (lets ignore different databases or webservers).

so what matters then is the "ecosystem" that supports those technologies - whether you "buy into" a vendor will give you good returns in the future. In short, whether you will enjoy using these tools for years to come and whether you will be adequately employable with them. Heaven help you competing for positions with only CF + Flex + LiveCycle skills against .NET/Winforms/Webforms/Silverlight positions unless you're willing to drop a couple of pay scales for the privilege. Cobol anyone?

EG: the warning bells are already ringing with the shortage of CF programmers in my region, now with poaching between cities and soon projects moving to other platforms. An "ecosystem" investment into growing the future developers a couple of years ago would have alleviated this. Something that Microsoft understands with it's support in the Education sector (as opposed to just certification). Sure it's hard work to compete against the Microsoft Juggernaut in this area - but it's not impossible.

there's another school of thought (triggered by your initial post) that, because one cannot "do it all" (and be satisfied in doing a good job), instead of a vertical stack that relies on vendor offerings, perhaps a horizontal one might be safer. Being proficient with RIA technologies from all vendors, or back-end web technologies of all flavours or all types of databases, etc.

just don't attempt Flex + AIR + SilverLight + ASP.NET + CF + LiveCycle + ... your head might explode!

my 2c only, your mileage may differ.

Posted by barry.b on Aug 05, 2007 at 07:41 PM UTC - 5 hrs

@Barry - Of course. I think there are many levels of granularity here - you could go with tools, languages, paradigms (like desktop vs. web development), or any number of other things.

On your comment about vertical vs. horizontal Chad relates a story of when he was in India interviewing and hiring programmers. When they were just looking for "Java" they were interviewing far too many candidates, and those candidates weren't of high enough quality. On the other hand, when they looked for "Java" and "Smalltalk," the pool was smaller and higher quality.

Posted by Sam on Aug 05, 2007 at 08:58 PM UTC - 5 hrs

With over 11 years experience in Smalltalk, I can safely and authoratively say that you should forget looking at Smalltalk. Smalltalk is dead and so is everyone's career on which it depends...

Posted by x on Aug 06, 2007 at 08:02 AM UTC - 5 hrs

I read it and i think you right.

Posted by Sohbet on Nov 01, 2007 at 11:20 AM UTC - 5 hrs

Leave a comment

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


Subcribe to this comment thread
Remember my details

Picture of me

.NET (19)
AI/Machine Learning (14)
Answers To 100 Interview Questions (10)
Bioinformatics (2)
Business (1)
C and Cplusplus (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 (76)
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 (8)
Windows (1)
With (1)
YAGNI (10)

Agile Manifesto & Principles
Principles Of OOD
Ruby on Rails

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

Delivered by FeedBurner