Half Sigma


  • Click here for The Wall Street Journal!

Persian Rugs

  • If the United States places some sort of economic embargo on Iran, this probably means there will be no more Persian rugs for sale in the U.S. I urge my readers to visit this online rug store before it's too late.

    There is nothing like a quality handmade imported Persian rug to add that special look to your home. I have one in my apartment and everytime I look at it I'm glad I don't have one of those cheap machine made rugs.

« IQ and the collective consciousness | Main | Penn and NYU move up in the law school rankings »

March 28, 2007

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00d8341bf6ae53ef00d8341fb3c553ef

Listed below are links to weblogs that reference The death of the generalist software developer:

Comments

You really have a problem confusing the specific with the general.

All liberals are not the rich Manhattan liberals you happen to be acquainted with and all programming jobs aren't like the ones in your company.

Specialization has the effect of lowering salaries

This isn't generally true. Of course if the development process has been changed so that the work can be broken down in such a way that lower-skilled people can do easier, more discrete tasks, then skill requirements and salaries may drop. But the overall picture you paint is kind of self-contradictory; if there really is a constant need to learn new technologies, and it's difficult to do so, then salaries should rise.

the computer programmer who becomes obsolete when a new technology comes out.

Except that reasonably good programmers do not become obsolete when a new language comes out. Why is Half Sigma unable to understand this?

There really shouldn't be a constant need to learn new technologies. Some egotistical, super high-IQ PhD computer scientist at Microsoft, Sun, Bell Labs decides to invent a new language that'll make histhe future better, and marketing departments create the necessary spinevangelism to get customers to utilize their latest snake oil.

Anything corporatized loses its soul. I'm sure there are plenty of parallel examples in BIGLAW, finance, medicine of overspecialization and pigeonholing.

I don't think there's really any reason to get into a programming discipline unless you have some crazy idea and are willing to hack it together using whatever's on hand - Perl, Java, VB, or whatnot. Look how Microsoft, Yahoo! and Google started. Most projects I've successfully completed (stuff that still performs after years of use even) involved learning some language on the fly and liberal use of band-aid hacks and square pegs in round holes.

I work in a mixed engineering and architectural environment. That programmers don't have state-level professional licensing standards and more commonly-accepted professional organizations and standardization practices is the real drag on career satisfaction and effectiveness.

A company looking to hire a business analyst or project manager with five years of experience will not be interested in a computer programmer with zero years of formal experience doing these functions full time.


I dont know whats the matter with your company, or maybe the problem is that you are a straight contractor that no one is interested in investing in.

What you do it go to management and say, "hey I am interested in helping out with project management for the Widget X project. " You get put under the overall PM to help out with some specific area and roll up your tasks to his mpp. PM's like this because they might not have understood all the dependencies in the first place, so you bring technical knowledge. Delivery managers like it because it saves them support time when someone who knows their area identifies task early.

I see people do this *all* the time. It really is quite easy to segue into project management. And it pays better than you think.

Regarding your statement (in your previous blog) about "who cares if you know Cobol?"...
Cobol developers can basically decide their OWN salary simply because it's so "un-hip" to be in the Cobol world that nobody wants to do it and there's virtually BILLIONS of TONS of Cobol code that needs to be maintained!
Check up your facts... ;)

.t

HS is right again. These are precisely the reasons I got out of software development, even though I couldn't articulate them at the time. As an organization grows, there is a gradual evolution towards specialization. Pretty soon you're left doing a "code monkey" job unless you want to go non-technical.

People who can handle complexity are continually in demand.

I don't see employers being able to hire people from off the street who can understand how to understand and avoid deadlock in complicated systems.

Moreover, I am into my sixth decade now, and I get enquiries about joining this or that startup at least every month.

HS:
I've gathered that you currently work in the IT department of a non-software company. Have you ever actually worked in the software industry?

Because while I can believe your posts on the topic accurately describe how things work in the IT departments of non-software companies, the things you've said aren't consistent with my experience at a major software firm.

Also, it's kind of silly to mention quicksort as an example of "fancy coding expertise." We covered quicksort in my introductory high school programming class. And again in my introductory college programming class which even non-CS majors had to take (this was Georgia Tech). And any idiot can copy it out of a book, even if he has no idea how it works.

"Fancy coding expertise" isn't about having well-known algorithms committed to memory. It's about writing code that's reliable and maintainable even when it grows to hundreds of thousands, or even millions, of lines (or being able to straighten out the mess of someone who can't). It's about finding good solutions to hard, non-standard problems. It's about writing and debugging complex multithreaded code, which is still hard in any language, and which is going to become more important with the trend towards multicore processors.

If you've never done it before, you should try getting a job at a real software company, just to see what it's like.

By the way, how did you get into programming? It's a bit unusual for someone with your educational background.

There's a lot of truth to what you say. It was great, like back in the '80s, when there were fewer leading-edge tools (less powerful, more labor-intensive) and greater opportunity/person. There's still a lot of opportunity, but as you say profiency across a broad range of tools/systems can be extremely tough. I have many great tools, incl the .NET/VS suite, that I can't take time to get really good with, bec I'm too busy paying the rent, with more mundane things.

I've been out of the corporate world for many years now, but I'm still an avid reader of SD Times, eWeek, Infoworld, and various websites of maj trade pubs and such. If generalists are so valuable, why is there a constant, annual debate about bumping H-1B visa limits ? Why are maj corporations trying to completely divest internal development via outsourcing ?

I know w/o any doubt that HR people/headhunters have a very hard time assessing real-world tech proficiency, specialist or generalist. When I was doing the corporate thing, I was playing on both sides of the hiring "street", simultaneously as a supervisor hiring people and as a screener for local headhunters. They didn't understand what really made a good candidate then and I seriously doubt things have improved in the intervening years. My point is that the people on frontlines indirectly have a big impact on issues like this.

There are many forces at play here, beyond the the points you've made, but your mini-essay has made for interesting reading. Later....

It'd be nice if all places were like you list. Small-medium businesses don't have separate managers and developers and qa teams and testers or even paperwork trails. It still takes a generalist to run these kind of shops with a dozen or so developers, and fifty or sixty staff.

> In the modern paradigm...

Well, depends who you are talking to. My impression is that you simply work in a less than stellar corporate IT department run by PHBs, and mistake your local situation for the going trend in the bigger world.

In my world, the "modern" paradigm you are talking about is considered obsolete, and being replaced by methodologies that *de*emphasize formal process and specialization.

By the way, interpretation of trends non-withstanding, anyone suggesting that with the right kind of process a bunch of code monkeys working off detailed specifications can (or ever will) predictably produce quality software at reasonable price should really be laughed at.

A piece of spam that's ironically relevant to the discussion! Wow!

Interesting that there is such a diversified response to the article. Being one with an MIS degree and having worked in both Sales and as the Director of Technology in a couple of organizations I can honestly say that virtually all of the Analyst (either Systems or Business) want coding experience with extensive experience. They do not want to hire people who might be able to learn it, they want to hire the people who know it... and they leave the position open until they find what they want. The IT world has become complex and varied and it is hard to get a new position, other than entry-level, as a technology generalist and harder still to find one when you have too-deep a specialization in one technology. While I wish I saw something different I have to agree with many of the statements being made.

Tools like Visual Studio .NET make it possible for a generalist to pull together a fairly complex application in a reasonable amount of time. There is no need for a marching army of coders. What is needed is the experience of the generalist to avoid the many pitfalls that will lead to disaster in a very complex process. It is the experience of the generalist that allows application of a tool like Visual Studio without learning a bunch of detail about pieces of it that are not being applied to the problem. I know what a regular expression handler does, I don't need to study all the detail of how to use all it's features. I just need to find out how to make it do what I need it to do. My experience tells me that it will a good place to look for a solution a specific problem (as an example).

Dev shops are mobs. There is no rule there is only chaos.

In the GOOD dev shops, the mob is a bunch of solid engineers who wont let anyone spoil their fun at creating great solutions.

In bad shops, the mob is commonly management or process losers who get off on taking developers (who are generally smarter and better paid than themselves) to task to compensate for their lack of ability to create anything of real value to anyone.

So if you want a good programming job, find that good mob and avoid the evil mobs.

Not that some bad shops are a mob of bad programmers, but usually these get superceded very quickly by a process mob or a mgmt mob because of their failure at creating good solutions. So it ends up being the same in the end. A bad mob of programmers will lose their ability to make even simple choices very quickly.

Dev shops are mobs. There is no rule there is only chaos.

In the GOOD dev shops, the mob is a bunch of solid engineers who wont let anyone spoil their fun at creating great solutions.

In bad shops, the mob is commonly management or process losers who get off on taking developers (who are generally smarter and better paid than themselves) to task to compensate for their lack of ability to create anything of real value to anyone.

So if you want a good programming job, find that good mob and avoid the evil mobs.

Not that some bad shops are a mob of bad programmers, but usually these get superceded very quickly by a process mob or a mgmt mob because of their failure at creating good solutions. So it ends up being the same in the end. A bad mob of programmers will lose their ability to make even simple choices very quickly.

HS - this article and your "why a career" post echo my sentiments exactly about the current IT industry (in fact, we must be working for the same employer). I see a lot of critics posting comments, and I think it comes down to who you consider your peers.

If you work at a "good dev shop", your friends work there, you have no desire to be a real decision maker, and you keep the blinders on, I can see how it might be possible to stay content as a developer.

However, many of my peers are on the business side, MBA holders, executives, etc...to hear how IT is viewed by the real decision makers of a company...well, it's almost impossible to consider IT contributions as more than an after-thought.

Critics - don't get me wrong - I'm a passionate techy that contributes to dev projects during my free time, but imho the truth is - unless your job is in a top-line-generating part of a business (sales, marketing, billable-hrs, M&A), you'll always be viewed as cost to be minimized. I don't measure myself by other people's opinions, but it's hard to see the prestige or opportunity-for-reward in being a commoditized cost.

As much as I love tech, I can't see a future in it that leads further than middle-management in a suburb. I'm going to have to come to terms with that, or change directions quickly.

HS is a fucking moron. These two articles are the biggest pieces of crap I've read in a blog, period. We all saw during the dot com boom the rush of programmers coming into the market, then the implosion, and most of them went home. That's fine. But saying that programming as a career sucks is totally missing the point. You should do what you love doing, and for a lot of people that's programming. So, being a programmer should be what you are driven to be, and the rest be damned.

One thing that was especially annoying was the generalist argument. Being able to cut and paste Object.Sort() after googling for the syntax is fine. But let's say you've actually coded a quicksort algorithm in college, then you probably know when to use quicksort, what the O-notation behavior is for quicksort on random and nearly ordered lists, when to use it, and when not to. You probably know about insertion sort and skip lists and binary trees, and when to use them, and what the trade-off's are. See, this kind of generalist knowledge is all part of what it means to be a programmer, not just some hack.

I would love to see the types of programs HS produces. Fucking moron.

Just leave aside the flame-warriors man and keep on posting very good articles like this one.

Everything in these 2 articles is pretty much spot on.

The only bright spot for programmers are positions like Technical Lead and Application Architecture. Technical Lead jobs can give you higher pay, at the cost of being a little less hands on. But once you have this position nailed down, there is still nowhere to go. You're not a Manager, even though you may manage the technical tasks and day to day issues of 3-7 developers. You're not a Project Manager, even though you basically do their job for them. So its a bright spot, but not much of one.

The architecture route I have yet to travel down, but I feel pulled towards it even though I've never really seen anyone in architecture do anything. But hey, if they want to pay me more and give me more prestige, while doing less, who am I to complain.

I think you are pretty much ignorant regarding both the programmer's profession and what's going on in the industry in general.

I've seen too many generations of slackers that lose it and declare programming dead. It did not happen so far, but those generations had to look for something to do.

Good writing.

There is such a wide range of programming skills that I think it brings a top C++ programmer down to a common denominator and the Flash programmer up to a common denominator.

I created my own Will using a software package so that now qualifies me to be a trial lawyer, I guess would be the example.

Distinguish between programmning and computer science. A career in computer science is very cool and very fun and well paid but you really need to complete a PHD.

Of course a programming career is better then most.

Picking grapes in the central valley in the middle of summer sucks.

I also believe computer programming is actually a trade and should be distinguished from computer science.

Why do you Devry teaches programming next door to the plumbing class?

In fact my father was a bricklayer and I believe tradesmen (plumbers, bricklayers) can make the same as programmers and stay healthier due to the physical nature of the work.

Now a computer scientist career involves working on interesting project similar to say a medical researcher.

For you young folks if you love programming then become a plumber and if you love computer science then get your PHd.

Very funny and pretty close to the truth from my experience.

I love the fact that I went to Devry and can run rings around the PHDs.

Do what you love and the money will follow.

I have worked for many years in large companies that, in the 80s and 90s, would employ generalists to write their own bespoke systems. In the 80s it was IBM COBOL that ruled, then in the 90s VB grabbed the crown. However the biggest change has, in my opinion, been the incredible number of IT jobs that have gone eastwards. This is globalisation in action and it will only get worse for IT people in the West. The figures are quite shocking. Big corporations will say it is the cost effective thing to do but from an employment point of view our governments (UK and USA are the worst) have allowed corporations to simply ship jobs eastward. There are no employment laws governing this, we are wide open.

Sorry to depress you all - I told my kids not to get involved in IT!

The comments to this entry are closed.

My Photo

About the Blog


  • My Twitter profile

    Click the button below to donate money to help support my blogging efforts:


    Half Sigma is a resident of New York City.

    If a comment was deleted, it's probably because it violated the comment policy.

    Glossary: HBD NAM SWPL Prole

    ©2005–2009
    All Rights Reserved

Site Meter