In a recent Joel on Software forum post Thinking of Leaving the Industry, one programmer wonders if software development is the right career choice in the face of broad economic uncertainty:
After reading the disgruntled posts here from long time programmers and hearing so much about ageism and outsourcing, I'm thinking of leaving the industry. What is a good industry to get into where your programming skills would put you at an advantage?
Joel Spolsky responded:
Although the tech industry is not immune, programming jobs are not really being impacted. Yes, there are fewer openings, but there are still openings (see my job board for evidence). I still haven't met a great programmer who doesn't have a job. I still can't fill all the openings at my company.Our pay is great. There's no other career except Wall Street that regularly pays kids $75,000 right out of school, and where so many people make six figures salaries for long careers with just a bachelors degree. There's no other career where you come to work every day and get to invent, design, and engineer the way the future will work.
Despite the occasional idiot bosses and workplaces that forbid you from putting up Dilbert cartoons on your cubicle walls, there's no other industry where workers are treated so well. Jesus you're spoiled, people. Do you know how many people in America go to jobs where you need permission to go to the bathroom?
Stop the whining, already. Programming is a fantastic career. Most programmers would love to do it even if they didn't get paid. How many people get to do what they love and get paid for it? 2%? 5%?
I tend to agree with Joel's brand of tough love. What he seems to be saying -- after taking my usual poetic license -- is this:
Programming: love it or leave it.
Unless you're fortunate enough to work for a top tier software development company, like Google, Microsoft, or Apple, you've probably experienced first hand the huge skill disparities in your fellow programmers. I'm betting you've also wondered more than once why some of your coworkers can't, well, program. Even if that's what their job description says.
Over the last twenty years, I've worked with far too many programmers who honestly had no business being paid to be a programmer. Now, I'm not talking about your average programmer here. We're all human, and we all make mistakes. I'm talking about the Daily WTF crew. People that actively give programming a bad name, and you, as their coworker, a constant headache.
Like Joel, I'm not ready to call the current conditions a new dot com bubble yet, because business is still quite good. But one of the (very) few bright spots of the previous bubble was that it weeded out all the people who didn't truly love software development. Once the incentive to become an overnight dot-com genius programmer millionaire was gone, computer science enrollment suddenly dropped precipitously at colleges across the country. The only people left applying for programming jobs were the true freaks and geeks who, y'know, loved this stuff. The kind of people I had originally enjoyed working with so much. At least until a bunch of careerist gold diggers suddenly showed up and started polluting our workplace.
As much as the dot com bubble sucked, I was intensely glad to see these people go. Now I'm wondering if the current economic conditions are an opportunity to clean house again.
I mean this in the nicest possible way, but not everyone should be a programmer. How often have you wished that a certain coworker of yours would suddenly have an epiphany one day and decide that this whole software engineering thing just isn't working out for them? How do you tell someone that the quality of their work is terrible and they'll never be good at their job -- so much so that they should literally quit and pursue a new career? I've wanted to many times, but I never had the guts.
Joel implied that good programmers love programming so much they'd do it for no pay at all. I won't go quite that far, but I will note that the best programmers I've known have all had a lifelong passion for what they do. There's no way a minor economic blip would ever convince them they should do anything else. No way. No how.
So if a programmer ever hints, even in passing, that they might possibly want to exit the field -- they probably should. I'm not saying you should be a jerk about it, obviously. But if someone has any doubt at all about programming as a career choice, they should be encouraged to explore alternatives -- and make room for another programmer who unashamedly loves to code.
Then again, maybe I'm not the best person to ask. I spent Christmas Eve setting up servers. I'm on holiday right now, sitting in a hotel room in Santa Barbara, and you know what I spent the last two nights doing until the wee hours of the morning? Writing code to improve Stack Overflow. Oh yeah, and this blog post.
So I might be a little biased.
You are absolutely right. During the christmas break I stopped working on my studies (computer science) for a few days and did some Project Euler (http://projecteuler.net/) riddles to learn a new programming language (Scala). I think people who do not enjoy riddles like that and at least wish they had time to work on them are in the wrong business :)
Daniel Lehmann on December 29, 2008 2:55 AMI would say, I know both sides of perspective concerning the current topic.
I had some time where I was frustrated to work as a software developer, because I was faced every day with this truth - what ever I can do creating great software, there is someone around destroying my efforts with bad decisions and management.
But then after a while, struggling with that situation, I come to the basic idea. Even if there is someone stupid around, I still do great software. Even if decisions making projects fail, my software works well and is good designed.
Thus my call to arms for all developers is: Focus on your job. At the end, if a project fails or succeed, you will be proud on your work, crafted with your skills.
And I fully agree, programming is one of the best jobs available. Because we can work under excellent conditions (in most cases). And we create something which can be used by someone else and which can help making live or the job of other people more easy.
Juergen on December 29, 2008 3:03 AMThe thing about programming is that it's easy as hell once you relealise how most OO-languages are structured.
Then again, I can imagine that after 20 years of doing the same stuff over and over, you want a break.
I dunno, I like programming because it's easy once you know where to find which piece of code. Most things you want have allready been written before you and are just waiting to be picked up.
When I work on something new, I always use the same structures I used on previous programs. Sometimes I even just copy-paste, since it's all that needs to be done.
Programming, love it or leave it... or something more individual then that perhaps?
I'm writing software for more than 10 years (counting only my professional work as a programmer/developer), so this clearly must be some kind of love. ;)
zgoda on December 29, 2008 3:06 AMI agree. I work a few people that should not be programmers, but I also work with some brilliant programmers. So the trade off is usually the not so good programmers work need to be redone, but the good programmers work always learns me something new or just different from how I would have done it.
When it comes to remuneration, yes programmers are really getting paid well and I lived through the bubble burst in 2000 and I always had a job that paid well.
On the project failure rate, unfortunately a lot of my projects failed but I am glad to say that none of them failed because of bad code or not meeting requirements, was almost always bad management decisions or just plain over spending by management on luxuries for themselves etc., so cash flow would become and issue and the good programmers will leave seeing as they do not need to take pay cuts just because management could manage the cash flow correctly, so then it will all go downhill from there.
Marthinus on December 29, 2008 3:19 AMI'm currently half way through a Software Engineering degree and I'm still amazed at some of the people on the course. In the first year, the class size dropped from ~90 to 9. Even some of the other students utter comments like "Programming is stupid, it's too hard." I don't think I've ever felt the urge to leave the programming world, only to make myself a better programmer. If Universities and employers just did an "enthusiasm test" for prospective students/employees they could probably weed out a whole segment of would-be-shouldn't-be programmers.
Luke L on December 29, 2008 3:21 AMActually most programmers are bad programmers. No really, they are. The problem is that everyone can be a programmer. This isn't true for other jobs. Not everyone can work as a lawyer or doctor for example. However nobody forbids you to work as a programmer, you don't need a special license, there is no mandatory education either. If a company hires you as a coder, no matter if you ever had any education on this matter or not, you work as a coder; period. And this itself is not even bad. Some of the best coders on earth never had any education in computer science, still they are brilliant coders. However, many people had no education and are just horrible coders.
I'm forced to work in teams - not every project can be a one-man-project. I just got disappointed too many times, so I don't really trust other team members. Right now there is exactly one person on my team I trust to write decent code. She still isn't doing things the way I would do them, but I've seen some of her code and is pretty good; thus I have no fear to delegate a task to her and I know she will do a good job implementing it. Regarding the rest of the team, we usually split tasks into independent sub-tasks, each handled by a different programmer. Usually I prefer to not even see the code of the other programmers. I will just rely that their code worked as we said it should and if not, they shall please fix their own code. Whenever I have to read and fix other people's code it only takes me a couple of minutes to get the point where I feel like hitting my head straight onto the desk. "Can anyone write any less readable code?", "Ever considered that RAM and CPU time are limited resources?", "Wow, is there a more complicated way to solve this simple problem? I don't think so"; these are the usual thoughts going through my head. That's why I don't want other people playing around with my code on the team.
Often when I tell someone how they shall implement it, they start writing a horrible mess of something that slightly reminds one of code, then they get all desperate because it does not work and get mad at me for telling them how to implement in the first place. Usually it ends with me saying "Come on, stop whining - I'll do it". After half of the time they already spent on it and with about half as many code the task is done; exactly like I suggested it in the very beginning. I fail to see how somebody can write 1000 lines of code and spend 4 hours on the task if the implementation doesn't even take 500 lines and can be completed in less than 2 hours.
I think the problem is, not everyone loves coding the way I do. I started programming in Basic when I was still in primary school, I learned x86 assembly only one year later (not enough to write any meaningful applications with it, but enough to understand how CPUs work), I learned Pascal, I learned Java, I learned C, I learned PHP, I learned Perl... just for the fun of it. I love my job, it is actually my hobby and my job at the same time. So I love my code. The lesson I had to learn is that not everyone is like this.
Doing something with "love" makes you doing it well. The saying "something has been made with love" (e.g. when baking a cake) is really a meaningful one. If I hire someone to remove all wall in my living room and replace it with a new one, he may not love doing that, he may hate doing it, but he does it, why? It's his job, I pay him for doing it and he needs the money for a living. So he will do his job, he will try to make a decent job, but he won't do it with love. You can see this by the result. It is not his living room, I'm sure if he does the same at home for himself, he will make a much better wall. If I do it myself, it is my living room, I want it to look perfect, I will do my best to perfectly align the bricks, I will make the plaster on it as smooth as possible (maybe polishing it with sand paper to make it perfectly smooth before painting it), etc.
This is the way how I code. I want to solve a problem with as little lines of code as possible, using as little RAM as possible, making it run as fast as possible on current CPUs, writing as readable code as possible. Coding is for me like art, the program is a painting. I love being a coder and thus I write all my code with "love". I want my code to be beautiful and I want to be able to proud of my code (even if it isn't my code later on - it is owned by my company). I'm sure I'm not the best coder on earth, others may be able to write faster code or more beautiful code - but it's not important to be the best, it's important to know that you did *your best*! Coding is not just a job I do because I need the money. If I couldn't be a coder any longer and had to work in another business, I'd still write code at home and if it is just for myself, since it is my hobby and I won't give it up for no money in this world. Or I'd start writing code for open source projects so other people could benefit from it.
As a closing word: I tried to participate in open source projects, but I can't. I see the code and I see it has not been made with love. It is far from being good code. Actually I was horrified to see some code of Firefox. Firefox is the browser I love, I use it daily - but some code of it is so ugly. It is way too complicated (it could be much simpler, one third of the code), this also makes it very hard to read. And what horrified me even more, it wastes tons of CPU time for nothing. Some information is regathered hundreds of times a second, even if storing the information would only take 4 byte of memory (this is ridiculous little memory) and in case the information is outdated, the system will notify the application (so one could easily cache it and only update the cache if the system notifies Firefox that this information has changed). Same holds true for other parts where polling is used, even though polling is absolutely unnecessary. Seeing code like this brings up a strong desire to rewrite major parts of it, but I don't feel like rewriting 2000 lines of code from ground up if I in fact only planned to fix a tiny bug I found - so I refrain from touching this code at all.
Mecki on December 29, 2008 3:38 AMWhile all great developers I have met, love programming. I have also met some very poor programmers who love programming. Love of the art is not the sole determinent of a great developer but it certainly is a good indicator of a poor programmer. I could always spot those who were not passionate in my former workplaces. The typical developer has a whole library of programming books and magazines - many of which are easily found in their cubicle. The not-so-passionate had a desk that was indistinguishable from that of a non-programmer.
One treats programming as a profession which requires an ongoing learning process. The other treats programming as a job. Something to provide a paycheck. And that is not good for them or the profession.
Joe Brinkman on December 29, 2008 3:38 AMHm. I disagree, having gone through that same set of doubts just recently. Notice, the man is talking about leaving the industry, not leaving programming behind.
Here's my observation:
I've spent 10 years working on core areas with a direct correlation to revenue that brought in billions of dollars. Yes, that big. It's been a constant battle with managers and morons, which I passed through because I loved my job and did focus on the problems and making the software the best possible under the circumstances. In the end, what got me was that the folks who constantly (not making this up) forced decisions that I argued against upfront and that proved incorrect later in the cycle were the profiteers. Meanwhile, 10 years later, I have a personal wealth of 300k, no house, no family and shoddy health.
I am aware that there's people much worse off - but in a similar age and qualification bracket, I can't help but notice that people who went into careers other than software development (management, marketing, law, medical, journalism, administration ... ) end up progressing much quicker and have more time for their private lives.
The problem with working in a field you love is that it opens you up to being exploited - you'll work the extra hours at night and on weekends because you refuse to ship low quality, you make up with your time for your managements mistakes and you'll do it at low pay and you'll be reluctant to walk away and switch, all because you love what you do.
So, yes, I'd like to switch industries, too. I'll never stop programming, but I am sick and tired of doing the lions share of the work and seeing others reap the rewards. My considered advice to graduates is to find a field where they are not at the end of the production chain (it's easy to produce high level design documents in word and you won't get held to deadlines that you miss early in a project lifecycle) and/or a job where the net value is in controlling a resource someone else needs (doctors, lawyers, adminstration).
Focus on your family and programming in your own copious free time.
While working as a programmer I have met really lots of programmers who just couldn't do anything programming-related. Honestly, it looked like they were missing some body part (brain part maybe?) that is required to understand basics of programmers job.
Then again, they didn't like this job. But they stayed there even hating it, for a simple reason - as a poor programmer in a poorly managed company you can produce a lot of crap-quality code and spend the rest of your day reading blogs or visiting online dating sites. That's, from what I've seen, was the largest pit full of bad programmers.
Pawel Maczewski on December 29, 2008 3:51 AM@Mecki: Nice comment!
Daniel Lehmann on December 29, 2008 3:51 AMI agree - there's always a place for a pragmatic programmer.
Software won't go away. There's always a place for smart people who get results. Aren't devs the ones who made blogging take off? Aren't devs why platforms get adopted? Aren't devs how things like Amazon's stack and ITunes, and whatnock innovate and make things happen, changing the game, and in turn making new business models possible? Geeze, it's probably a dev who will invent the next resource technology innovation that saves the world.
Ironically, the *job market* matured faster than the industry. Software has so much opportunity to grow in terms of engineering and a craft. Agile's been cool. Lean will be great. Hopefully we'll see more bridges between archs and devs ... as well as some more focus on system stories and business stories, in addition to the user stories. And I'd love to see patterns and pattern languages become the way we share, support, and grow the knowledge in our fields.
I think there's a realistic concern about a global resource pool and market maturity. Nothing's static. It's a time to simply renovate, regenerate, and reinvigorate programmer 2.0 (or ship an alpha of programmer 3.0 -- I am curious and I'd like a sneak peek).
J.D. Meier on December 29, 2008 3:51 AMI'm 34. I started coding when i was 12. I'm still in love with programming. Every day i learn something new, there are no nights, no sundays. I LOVE my passion (work is not the right word): programming is every day a new experience.
So after 20 years of coding I:
1) started my own company (software house of course)
2) founded a .Net community with some coding lovers...
3) started an open source framework
4) started a blog about programming
Just for fun.... It's a privilege....
I could not agree with you more. What we need in the software industry and IT in general are people that GET IT. They get that they have to learn there trade. I graduated in Comp Sci at an engineering college with other engineering grads. Most had to obtain a professional license to offer their professional services directly to the public (http://en.wikipedia.org/wiki/Professional_Engineer#North_America). Steve McConnell has an interesting view from his side covered in a book he wrote where he wrote a chapter called Novum Organum that outline how the software professional community could start going down a path:
"Software development is at a major decision point. We can stay safe in our code-and-fix harbor, not venturing past the Pillars of Hercules and not achieving the significant gains that have already been discovered by software engineering explorers. Or we can boldly venture toward a new profession of software engineering and begin colonizing a new world of higher productivity, lower costs, shorter schedules, and better quality." -- Steve McConnell, Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers
I agree with Mr. McConnell that the software industry is not at a point where states or the federal government can certify people in the profession yet but we need to do something beyond vendor certifications. Do I think most people in my industry are horrible programmers? No but I do think that there is a portion in my industry that do not have the skills needed to move forward and that it is these people that either need to re-train or leave the industry.
Chris Woodruff on December 29, 2008 3:57 AMThat's... Just what the effin' hell does America have to do with this?
Cook-a-doodle on December 29, 2008 3:59 AMI'd agree that it never hurts to re-evaluate career choices if you're feeling unsuited for your job, and to explore new avenues. I've done this myself - tried software engineering but realised it wasn't where my strengths lay so I'm now doing something else. I like to stay in touch with that world though - still read this blog after all!
All that being said, there's a strong smell of arrogance & elitism in this discussion - particularly in that linked thread on the JoS board. There seems to be very little toleration or respect for "day job" coders - those who are competent and professional but aren't "rock stars" or especially passionate about programming. I would agree that technical incompetents probably should seek alternative careers!
Nobody would require a car mechanic, a chef or even a lawyer or doctor to be a "rock star" in their profession before accepting they could do a good job. Of course if they are such, they can command higher salaries and better working conditions, but it's surely an individual choice whether they want to do this?
If I want a car repaired, I'd be happy to go to any competent mechanic, whereas if I wanted a classic car lovingly restored I would find someone who is more passionate about cars - and I would pay accordingly. I wouldn't have any less respect for the mechanic as clearly he or she has other priorities in life! I can't see why this sort of attitude can't be applied more in programming. There's plenty of room for a range of talent and dedication - although yes, there does need to be a minimum standard of competence. It would be nice to see a little more respect, consideration and maturity applied to this debate.
One last note regarding arrogance - I hate to say it Jeff but your last Tweet sums it up perfectly. Not necessarily through any fault of their own, many people couldn't possibly start their own company. They may also have decided they don't have the right combination of business know-how, technical skill and dedication to make it a success. Suggesting that founding a company is a rational & widely applicable way to escape a poor job is, IMO, about as arrogant as it gets.
Jim Millen on December 29, 2008 4:10 AMJust because every good programmer loves his job doesn't mean that everyone who doesn't love his job is a bad programmer. And I can testify that there are bad programmers who love their job.
Nope, it's not that simple.
Programming can be a great deal of fun, an exciting roll in the hay. But comparing programming to other careers still makes it a pretty bad deal in the cold light of day. It's pretty low status, fairly poorly compensated, subject to many upheavals, and rapidly erodes your intellectual capital. So if you're a smart guy, you probably could make a better career bet.
Perhaps it's basically like being a musician and best left to the infatuated.
You can tell a passionate programmer by what they do in their free time.
I say passionate, not good, because to me passion is all it takes. Don't get offended but it's not rocket surgery, folks. Yes, programming comes easier to some than others. Yes, we'd all love to think it's a hard science. However, you give me someone that's excited about it, and I'll show you a good programmer.
So, I disagree with @Manni. Good programmers aren't miserable at their jobs. Talented programmers? Yes. However, I would rather hire a passionate programmer that has to work hard at it than a talented programmer who doesn't care enough to pick up from his job and find another if he's miserable.
So I agree, "good" programmers would never want to leave this field. Because you are doing what you love and there can be no bigger happiness in life (I hear having kids is fun too).
Sara on December 29, 2008 4:33 AM"So if a programmer ever hints, even in passing, that they might possibly want to exit the field -- they probably should."
In general, I agree with most of what you're saying, but polarized statements like this can do damage to people with limited exposure to our (or any) field. Without decent experience in at least a couple of work environments, the odds are small that anyone has a solid idea of what "the field" as a whole really is, and not an idea constructed from their own limited and potentially bad experiences. I distinctly remember, as a student, hearing a competent friend of mine express her doubts about staying on a software engineering track after one of her professors had given a similar "love it or leave it" style talk at the end of his course.
As it turns out, she just didn't like his course a whole lot. But the strong implication that "this will be your life if you stay in this field" stuck for a while, even though it wasn't especially accurate. Now she's fine, and I'm pretty sure the industry will be better off with her around. My point, then, is that doubts are not always a tell-tale sign of a permanent inner lack of passion. Sometimes people are just people.
Nick on December 29, 2008 4:33 AMJeff: What you are saying is the exact opposite to what Joel is saying. Joel says (paraphrased) "get back to work" and you "love it or leave it". And both seems to extremly negative comments for someone who has already decided to quit! There is no job that everyone will love (except taking care of unicorns). Joel is basically saying: I love to program therefore everybody will! And look you earn a lot! And you need no education! Maybe the one with the question would be better suited as a psycaitrist and is willing to spend some time and effort on that instead of being another person who hates his job. Jeff you are to kind towards Joel. ;)
Lehmann: If you haven't seen a million of programs that you would like to improve or replace or new tools you would like to create and instead focus on somebody elses problems of no value then maybe you are the one that is in the wrong business (I'm sorry, It's likely you are a good programmer, but please see these things from others perspective: project euler seems like a waste of my time).
Luke L: I fully agree! Some of the worst students of my class just wanted to create games and thought that it could be done in a flash...(it can be done in Flash though...), when they found out that it takes serious effort they quit. We also had alot of: My parents thinks I'm good at computers so programming should be quite easy for me. The sad part is that I'm not kidding.
Vordreller: “Computer science is no more about computers than astronomy is about telescopes.” Edsger Dijkstra. Read some of Donald Knuths books and then tell me programming is as easy as the OO concept. Then again, maybe I'm just trying to make computer scientists out of programmers.
Mecki: I'm better than everybody else and need to let someone know it? Whats the point? Start freelancing.
Joe Brinkman: Some may have downloaded the books on pdf's and have the books at home. "One treats programming as a profession which requires an ongoing learning process. The other treats programming as a job. Something to provide a paycheck. And that is not good for them or the profession." Excellent. I will save this quote.
"Our pay is great. There's no other career except Wall Street that regularly pays kids $75,000 right out of school, and where so many people make six figures salaries for long careers with just a bachelors degree."
I'd love to know who the hell in the Netherlands would pay so much money. These salaries are not standard anymore, at least not here. I'd be happy to make $75,000 after 20 years of working.
Herman on December 29, 2008 4:57 AMThere's a lot of careers out there where you program, but you're not a 'programmer.' Where I've used it, or seen it used:
* Research assistant
* Researcher
* Admin assistant
* Business / System Analyst
* Technical lead
I don't program exclusively, but sometimes, it's just faster to break out the Python than wait for a dev to be free. I also use it to proto-type for clients (again, faster than waiting for a dev, and cheaper, too).
Not everyone wants to sit in front of a bunch of code all day. Not everyone wants to worry if their current skillset can make it in the current market. However, using code in any profession can take you a long way.
http://elephantangelchild.blogspot.com/2008/07/why-you-should-learn-to-write-code.html
Katie on December 29, 2008 5:07 AMAnything that gets rid of the fly-by-nights from our industry can only be a good thing - we become better respected and the money no longer gets given to morons (well other than management). The only bad thing as a developer is we don't have anybody to blame if things go wrong!
Paul on December 29, 2008 5:08 AMI fear I have become troll-feeder.
@Cook-a-doodle: the 13 colonies were united by a common ideology. America is different from many countries in that until recently a huge portion of its inhabitants were immigrants. Even now I think most inhabitants aren't much more than first or second generation. Those immigrants usually had a choice about entering the USA in the first place. They chose to go to a place where there is a certain constitution. That constitution is supposed to enshrine freedom, and one of those freedoms is that if you don't like the country you can go somewhere else. Not every country allows that for its citizens.
Getting back to the topic, the job market is reasonably free. You can do other things if you don't want to be a programmer. There is a huge range of jobs available directly related to computing.
Getting onto a theological bent though, I think it's OK to have doubts. Try other things if you want, see what life is like without programming. Maybe you will love something else more. Programming is just a life-choice and does not affect your eternity. Though as a community, coders should be welcoming and should love the prodigal.
I have to say that I don't love coding. I like it. I love my family, I love my Saviour, I love music. But I do like coding and solving puzzles. I enjoy making computers do what I tell them. I know I can do things with computers that others can't. I don't know what else I would do for a living though. On the other hand, I do want to be a better programmer. I do want to learn more about design patterns and the best way to use C#'s features. I have the design patterns book and I look it up when I need to. I have Code Complete and I am getting through it slowly. I just don't have the same drive and passion as the coding superstars.
John Ferguson on December 29, 2008 5:09 AMJust to disagree with Katie for a minute, the worst thing is when you have to fix code written by non-developers that has become a big ball of mud. Although code written by somebody who understands Python might not be so bad, especially compared to the horrible VBA I've encountered over the years (or applications that use an Access database).
Paul on December 29, 2008 5:12 AMA colleague of mine recently stood up at his desk, said he couldn't take it any more and walked out - he'd been a coder for 10+ years and suddenly couldn't take the pressure; tbh he wasn't that good and didn't have much pressure, coding wasn't for him!
Halloween on December 29, 2008 5:22 AMdear Brutus,
I never met a carpenter who didn't criticize prior work.
I used to think I was smarter than the average bear too, until I met someone who was.
Modern software construction is collaborative. If your doing it by yourself, your doing it wrong. (Meki)
When I work with someone with great talent and ability I get better.
When I work with someone with less talent and ability I get better to the extent that I can impact this persons skills.
Taylorism is alive and well and continues to bleed the craft out of our profession.
Software development is like marriage, huge compromise but the whole is greater than the sum.
Dissing less talented people is really tiresome.
Lets move on and do the best we can. We can't all be Moe, there has to be a few Curly's.
Programmin' isn't so much a career, it is rather more like designing software is something that everyone reading this can do. But, most people in the world simply can't handle the deep dark reaches of the computer-machine. I mean, come on, let's face it.
So, for the people reading this, start designing stuff that people want to buy. And that stuff better be useful. Because the public demands good software. Software that people want to buy because their friend told them it was good.
Jeremy on December 29, 2008 5:23 AM@Swe (let's not call each other by second names): In my experience Project Euler is a great way to learn those things that you normally don't learn in your day-to-day job. You get a feeling for numbers, for functional programming (if you decide to do things in a functional way), for the speed of your computer, for a new programming language and after solving a riddle you can compare your solutions to those of others to get new ideas.
IMO, it's the same reason why people decide to learn latin. Or study Computer Sciene. I hardly LEARNED anything at university that would be useful by itself in my day-to-day job. I usually do gray business applications that others use to manage money or resources. Now do I want to spend my life researching new UI toolkits or Microsoft Frameworks just to be able to create those applications faster? How boring would that be? I prefer learning about new concepts like actors or monads, learning linux, doing project euler, reading Slashdot, CodingHorror.
And every now and then you encounter a problem where you can actually apply the knowledge you accumulated in your free time. It's a fun investment that pays off in the long run.
Daniel Lehmann on December 29, 2008 5:26 AMJim, the reason than most programmer here hate "day job" coder, not because we don't like people who are not passionate about their job, it's because they mostly make our job life a nightmare.
I think great developper love their job because they invent, create, and imagine, not because they code and debug.
I agree that some developer who love their job are bad developper. But I have not seen yet any "day job" coder doing great code.
"'day job' coder who are competent and professional" ? what are the conditions to be competent and professional ? to my mind for a developer to be competent he has not to make our life harder than it is.
From now, I have not seen yet such a specimen.
Slashene on December 29, 2008 5:43 AMBefore I even read your post I was thinking to myself, "Damn, Jeff is a workaholic. He was just doing updates and answering questions on the Stack Overflow blog last night." Now you've found time to respond to something Joel said in a response to a comment to his blog? There must be 25 hours in your day. :)
Bill the Lizard on December 29, 2008 5:44 AMWhere do you belong?
Quitter, how uncertain are you in the certain world?
Quitting or Realizing?
Daniel Lehmann: We seem to have a different definition of fun, that's all that there is to it I suppose. I wanted to learn about Textual Fingerprinting for a hobby project of mine, so I had to learn Hidden Markov Models. Creating a RSS reader with Scala made me learn the actor model (and later I had to use Erlang in one of my courses). Monads I learned from programming a webserver in Haskell. Linux just sort of happened ;). The thing is that I have a huge list of things I want to program, every single item of these things seem to be funnier than to do something someone else have come up with (for me). I'm quite curious if you do projecteuler because you have no such list (ludicrous!) or because you like to fix smaller problems or maybe something else?
Daniel Swe on December 29, 2008 5:54 AMI guess programming is not a job but a passion. If you love it you will never stop doing it. It's not just a job.
Even in my spare time after work I still sit at home coding things. This is a passion I share with only a few of the people I work with. Some just do the work - go home and do other things. While guys like me can not do without it.
@paul
True, I have to agree, bad code is a sad thing to have to fix. Personally, I consider code I write to be for my use only. I'm not a dev, and I'm not held to their standards. Though my code is generally clean and hack-free, it's also short, and I don't expect anyone else to run in and fix it. Hell, I don't even expect the people that follow me to use it (I left full notes on how I did things at each job, but I know they were discarded the second I walked in. Just how it is, with many positions).
Katie on December 29, 2008 6:10 AMHaven't read the comments, but I'm working with someone like that right now.
He treats every problem like a PHB - whatever the first idea he had must be right. Even worse he'll spend hours on these terrible solutions to problems and then argue against re-doing things the "right" way because "It's already done" and there's no point in letting those hours/days/whatever go to waste. Never mind that he could have followed a more correct solution, have been done quicker and with less bugs and already have moved on to other things in the same amount of time . . .
The sad thing is that he wanted to move to a less programming intensive position and management literally swooped in and offered him whatever he wanted to stay. While I've been doing things "correctly" for a while and get the impression that trying to leave will get me a "don't let the door hit you on the way out".
Now I'm stuck with all the little things he did, and the concept of having to rewrite half of them doesn't appeal to me.
Unfortunately I suppose I'm not one of those "great programmers" because I wasn't having any luck finding a new jobs when the economy was still doing relatively good, let alone now.
Greg on December 29, 2008 6:19 AMThere's a huge difference between getting paid to code and coding for fun. I love to code for fun -- I love to build libraries, take on challenges, and be a part of open source communities. On the other hand, I really didn't enjoy 90+% of the coding I have gotten paid to do. Most coding projects are, quite frankly, pretty dull. Building yet another social networking site doesn't exactly present new and exciting challenges: at best, it's mixing ingredients together and baking according to recipe; at worst, it's fighting with the limitations and bugs of your framework.
In realization of this, I changed my approach: I now focus on interesting consulting projects where I can help train people or build new structures; I'm writing a book part-time, and I supplement my income with Grails training courses (http://www.smokejumperit.com/grails_training.html). I've enjoyed the book and the training courses more, and so I'm actively working on leaving the world of paid programming for the world of academics within a decade or so.
When I do leave paid programming, I will certainly stick around programming as a hobby. My Autobase plugin is my baby and won't go anywhere. I'd like to try my hand at building a language and a bit of a framework. I may even pick up the occasional paid gig if it's got a particularly interesting underlying project.
My point through all of this is that it's not as easy as "love it or leave it" -- it's easy to love programming and be underwhelmed with the world of paid software development.
Robert Fischer on December 29, 2008 6:23 AMBy the way, nobody seems to have sounded off about the bit where economic downturns weed out bad programmers, or programmers who don't really love programming.
I'm not so sure about this. You know who *doesn't* get weeded out? People who understand that programming is a great way to make a living. Take a look around at people you think aren't great programmers, and then try to figure out what else they'd do to make a living. You think they're going to leave the profession?
D. Lambert on December 29, 2008 6:40 AMI can't understand some people, i'm half-way through a 5-year university education which contains alot of software-development. Some of the people constantly keep whining about how boring it is. Well...then GTFO, for your own sake, if you don't like it now you will not like it later. I agree that some courses might suck but some people realy whine all the time.
If I tell my classmates that i've made a homepage on my free time they look strange on me. I have to finish the sentence with "of course i get some cash from banners on it" to get some understanding :/
kalas on December 29, 2008 6:43 AM@Daniel: Freelancing is a risky business. Right now I know I get paid the same amount of salary every month (leaving aside possible bonus payments). Whether the company is doing well or not, this is not my business; they'll have to pay me anyway. It is not my business to make sure it runs well, it is my business to write a piece of software and make it work well, so the company can sell it. I don't have to decide what to code, I don't have to make contracts with other companies and decide about prices - and I don't want to do this. I'm happy to just write my code; that's all I want. And what could be better than doing what you want to do and even getting paid for it? For me getting paid for coding is like for other people getting paid for watching TV, playing WoW, or partying all night long - not that I mind doing any of this either (except WoW, not my kind of game), but I'm happy to only do this occasionally; if I had to do this 5 days a week, it would soon become just a job and all fun of it would be gone. Make your job your hobby. As a freelancer only about 50% of my work was coding, the other 50% was managing my one-man business (finding projects to work on, making contracts with companies, making up my mind what software to write next, etc.) and that would make it just a job, not a hobby.
I considered taking part in coding contests - problem is: You usually need to be a fast coder to compete in such contests. I never said I'm a *fast* coder. Speed is something my manager cares for, I care for high quality code. Writing the same software in half of the time but with twice the bugs only causes twice the support costs and in the end the company pays more than the shorter development time has ever saved them. Sometimes even I have time pressure and must go for compromises (not coding as good as I could just to save time) - however even my company learned from mistakes and nowadays we rather cut on features if we run out of time than cutting on quality. Cutting on quality never pays off. You probably think I'm a fast coder because I said I can solve the same problem other people need 4 hours in only 2. This is not because I am fast, this is because they are slow, that is a big difference! I'm only average on speed.
Mecki on December 29, 2008 6:44 AMSometimes, people just need to be challenged.
The line between a good programmer and an average one tends to settle around the point where work goes from assignment to interest. An average programmer will receive a task, complete it, then consider the work done. Good programmers will receive a task, see how to complete it, then think about ways to make it better.
Allot of this can come from environment. I've know a few good programmers who became average due to dulling from a mountain of dull assignments. Things change when they actually receive a challenge. Not in the form of do something hard, but in the form of do something better. The worst thing a manager can do is just accept an easy answer without challenging their developers to 'do it better.'
Newman Scott Hunter on December 29, 2008 7:02 AMAll great companies to work for have great management and leadership.
One should leave the field, any field, if it isn't what they want to do with their life, and it is causing them distress. The field of computer science doesn't have a special lock on that part of the human experience. One may do all the right things, in the "right way", but an uncertain economic future, and the associated fear, is a reality that saps positive potential. I don't think this person, in this profession, is alone he their sentiments. As far as ageism goes, that has to change for ALL fields.
All that has been said, could also be said about any profession. I'm thinking an accountant's or lawyer's work doesn't change much over the years? How about a Research Scientist? A teacher? (On the side, most of those fields are more difficult to outsource) It is great to have passion for one's work, but let's make no mistake about it, everyone SHOULD be getting paid for their contribution to the business. Musicians, I'm sure, are passionate about making music, but if they don't get paid, they are creating an environment that may impede their ability to make music, or at least the music they want to make in the future.
Some say, what makes programming, or do we call it information technology, or computer science, or engineering different, is the perceived ease of entry and the lack of serious professional accreditation with state and national organizations and political leadership. The field of "computer science" in a lot of cases also requires a fundamental knowledge of another field, whether it be law, accounting, construction, geology, biomedical, chemistry... Also there's specialization considerations: database administration, system administration, application programmer, design, tech support, hardware, networking... In a large shop, you may be very specialized. In a small shop, you may be doing all those jobs.
And then theres, "Most folks are about as happy as they make up their minds to be." - Abraham Lincoln
dj on December 29, 2008 7:04 AMThank you for pointing out one of the greatest features of capitalism: weeding out the jokers and fakers in the industry that have no business being in it.
I can't help but wonder (and fear) that someday anyone who calls themselves a programmer will have to go through some crazy government union or certification to legally have that title.
I highly encourage anyone thinking of getting out of software development to do so immediately.
Capitalism Rules on December 29, 2008 7:28 AM@other Daniel:
doesn't sound too different to me.
I have done big projects in the past. My biggest project was N64 Emulator that took me 4 years of my life. I learned about dynamic recompilation, x86 asm, MIPS asm, C, C++, Direct3D and even a little team building ;) But due to job and studies I don't have much time to work on big projects. I'd love work on Open Source projects that I use daily, like making OpenOffice and Swing look right on Gnome, improve Wine, speed up Gnome, make GTK look right on Windows. But it takes a long time to make yourself familiar with each of those separate projects. I guess that's why I like Project Euler at the moment - you concentrate on something small and after an hour or so (depending on the problem) you found a solution and have learned something new. Once I am finished with my studies I want to work on a big fun project again :)
The list of things I want to do exists but is not too big, at least not with computer related things (Piano, Italian, driving motorcycles) ;)
Daniel Lehmann on December 29, 2008 7:39 AMYou know, i've been doing programming for almost 10 years, and I do love it. I'll always love it. But I've thought about a second career and leaving the industry myself. Part of its the pointy haired bosses and the corporate BS, part of it is those other people have no business programming. Part of it is clients who will waste $10,000 to save $100. But if I left, I'd still do open source work and hobby projects like non-profits. Its not that we're all spoiled, its that sometimes you get tired of dealing with the same set of problems over and over, most of which have nothing to do with programming or technology at all.
fregas on December 29, 2008 7:40 AMAnd how old are you guys? How many have broken that 35 year old barrier. Well, I'm 50 and I've been doing this back when the Apple II represented the latest and greatest in hardware technology. I remember standing in awe at a brand new Compaq 386 super machine running a 32 megahertz processor and 4 megabytes of memory. That machine was all decked out and cost our company almost $30k. Which represented almost my entire paycheck back then.
Here's my big issue: This career moves too damn fast. I've learned Cobol, ZModem protocol, Kermit, C, various proprietary languages, 8085A assembly, Pascal, CP/M, CP/M 86, MS-DOS, Awk, Perl, SCCS, RCS, and many other technologies that most have never heard of. Every few years, I am learning something brand new. Every few years, my competition gets younger and younger. They come out of college knowing the stuff I am trying to learn this year. I simply can't keep up.
I am tired. I am old. If this was nature, I would be one of those lumbering dinosaurs watching those furry little mammals zip around under my feet waiting for that asteroid to take me away.
Yet, I am still here. Why? Because nothing pays as well. I could probably earn my paycheck at thousands of other occupations. I'm bright, talented, hard working, and imaginative. Yet, almost everything else would mean a 40% to 50% salary cut. Plus, with my job, I also get to run around sans tie and probably could get away without pants if I really wanted. I work from home when I don't want to get up in the morning. I can leave my job in the middle of the day to go holiday shopping and no one complains.
We are the elite of the elite. We have more say and power in our jobs than anyone else in the entire history of mankind. I get to spec out the latest and greatest hardware. If I want to spend a week learning a new programming language, I can. We wear what we want, and pretty much set our own hours. We gaggle in the hallways like jacked up geese and talk about the latest video game. It is not only allowed, but expected. Maybe with all that talking, we'll come up with the next killer idea.
Of course, I do work about 60 or so hours per week at a minimum. I get up in the middle of the night to handle crises. And, I have rare skills that people are desperate to pay for. But, damnit, I simply can't keep throwing out everything I learned every other year just to remain current in this industry. After so long a career, most people would end up being the storehouse of vital knowledge. The guru of all things relevant. Instead, I am just an attic filled with the worthless junk of the past. Anyone needs to setup a UUCP network? I'm your man!
No, not everyone who wonders whether or not they should be in this job should quit. It is a tough, tough field, and more and more people are coming in. My 17 year old son is working on the next new web idea. It is actually quite good, and really has a good chance of taking off. He has already hired and overseen several development teams, and it is very likely he'll be your next boss.
And, there are thousands of other highly technically savvy 17 year olds right behind him willing to take your jobs and boss you around. The last generation of computer geniuses dropped out of college to become billionaires. This generation isn't even waiting to get into college before they redefine the field right from under you.
Welcome to the future. You are now free to panic.
David W. on December 29, 2008 7:51 AMI've been programming since I bought my VIC-20 in 1983.
I think that this would be a great career if you were working for yourself, doing what you love...
But if you work for a PHB at a big corp, the job can be frustrating.
Steve Sheldon on December 29, 2008 7:53 AMTry being an analyst or designer instead.
Silvercode on December 29, 2008 7:58 AMWhat about those who like to program every day, but doesn't work in the industry? I've been programming since the age of 6. Started out with Basic on a VIC20. Moved to assembler on an 800XL. Learned C and Pascal on an ST. In junior high, at the age of 12, the school board hired me to come in during teacher conventions and teach teachers on the operation of CopyII+ on an Apple][ (the only time I've ever been paid for something to do with computers) I was the first person at my high school to ever be put ahead a grade in computers and given credit retroactively. In college I was 99.5% of the time the first one done in labs and would receive 100% on every, yes every lab, and an average of 85-100% on assignments. College is also where I gained a love of LISP, Scheme, Euphoria, & PERL. Then I dropped out due to financial reasons. I've tried getting jobs that have anything to do with computers and have been turned down nonstop. Employers don't want 1/2 a degree where I'm living. So I gave up trying to find a job working with computers and now I drive a semi for a living, and come home everyday to do what I love. Just the other day I created my own read-only DOS in assembler that's 362 bytes long for loading and executing binary files. Now I'm working on a full-featured multi-platform app using the wxWidgets library. I'm hoping it'll win me 500 Euro in a programming contest next year. That would make it the 2nd time I've ever been paid for doing something on a computer... I'm 34 now...
Anonymous on December 29, 2008 8:01 AMProgramming is great and I love doing it. I agree with Joel's breakdown too. Whenever I get down on my job and starting freaking out, I just go and talk to my friends that aren't in the tech biz. Shit, my wife is a special ed. teacher (violent kids, not stupid kids) and she can't go to the bathroom unless there is another adult in the room, which she'll have to request.
I'm not a active person, so the whole sit-and-get-paid thing works well for me. Programming challenges me everyday almost and I agree with Jeff in that my position is far from in jeopardy (from what I can tell). I'm happy with what I make (but more is always nice!) and any day I complain my wife corrects me, and rightly so. If you're thinking about giving up programming/development, then I'd say it's not much of a passion for you and you should look at another job.
Morning Toast on December 29, 2008 8:08 AMI had the chance to do some hiring myself briefly. I had them do a simple test where they would fill in the blanks in a program to make it do what the program was supposed to do. I also had them explain parts of the program I had already written so I could gauge their understanding of simple constructs and some more advanced things.
The main agenda of the test was: 'can you solve a problem'. It really had little to do with actual programming skills, but it would reveal readiness to gain the skills and understand programming under my guidance. It worked out great and we were able to build a good million lines of software that is now very stable and workable even after 5-6 years of continuous development.
Regardless of my efforts to improve hiring practices, it all went to dead ears and the managers hired all kinds of 'degenerates' to build the software and architecture in the most critical projects you could imagine. In the process they wasted millions upon millions of dollars under the protection of the management, leaving a legacy that few of us are now left to deal with.
So, while you can point your finger at the programmers, it's really the fault of clueless managers who hire the wrong people that is the cause of so many problems! If you hire the wrong managers, then you really have problems.
1) Hire the right managers (is harder than hiring right programmers).
2) Hire the right programmers.
3) And for God's sake, don't hire friends, and their friends who then protect each other and create all kinds of political camps inside your organization and destroy everything.
One problem...if only the people who loved programming became programmers, I doubt there would be enough programmers around to tackle everything. Think of all the mediocre business systems that would go unfed and unloved.
J Liles on December 29, 2008 8:13 AMDaniel Lehmann: Interesting. I might actually try it!
Daniel Swe on December 29, 2008 8:17 AMTruth is, outsourcing IS taking a toll on this industry AND on our nation. I continually hear the whining of local and state politicians about things like jobs and tax revenue shortfalls.
When someone says "how are we going to create new jobs?" or "where are we going to get the revenue to fix our roads, bridges and light our streets?", etc - all I can say is BRING BACK THE JOBS! Get them back from India, China and wherever else they've been sent to but corporate America.
It isnt rocket science. The more highly paid people that are working in the US, the more tax revenue the states and Federal gov't will earn... the more JOBS that will be put back so they will stop whining about where they went - as if they dont know.
And I am not talking about just programming jobs. This can be applied to manufacturing jobs and factory jobs in milling, furniture, clothing and the like. Medical tech jobs. Financial advice and expert opinion jobs. Customer service and call center jobs. BRING THEM ALL BACK.
I am not anti-globalist or protectionist by any stretch. This is logic-101. Common Sense. When your local representative begins whining about jobs and lacking tax revenues - ask him why our nations large companies HAVE TO outsource our jobs! You want jobs and more tax revenue? Then bring back the jobs. I dont think the droves of people who are forced into Target or Borders jobs are going to cover the taxes that they used to pay the state and fed. I dont think they're going to be able to put food on the table for their families without sucking off the government nipple. We're going BACKWARD in this nation. We used to produce things... MAKE things. Now we dont do squat compared to the 40's and 50's and 60's..
And no, they DONT provide better products. Not by any stretch. Less expensive, maybe. Thats debatable. I've rarely come across a product that doesnt have at least 2 or 3 design flaws in either packaging or in the product itself. And no, these companies ARE NOT saving any money. The Bank of America's and American Express' and Citicorp's and so forth wouldnt be looking for BAILOUT money if these outsourcing projects actually worked for them.
Programming needs to come back to where there are PLENTY of out of work people - the USA. I know far too many unemployed programmers who were thrown to the curb because there are people in India who will do the same work for 1/4 of the pay and THEY will live like kings on that pay. We cant. I know far too many who have had their skills rust out, while seeking work. Trying to start their own business but cant - not when you're in debt because you put $4 gas in your car going to interviews all last year and had to still feed your family.
I know way too many of these people. TRUST ME. I speak with experience.
Our nation better get a hold of itself soon, or we'll continue the BS that we've been handing our citizens to the point where the only jobs WILL be "do you want fries with that?" type jobs.
It has NOTHING to do with being good or not. It has more to do with certain circumstances, some of which are location. And NO, some people cant just pick up and move an entire family.
Mike on December 29, 2008 8:29 AMVeteran wrote:
> I can't help but notice that people who went into careers other than software
> development (management, marketing, law, medical, journalism, administration
> ... ) end up progressing much quicker and have more time for their private lives.
Bang on. I've made this exact point multiple times in queries about the low incidence of women in the field. For whatever reason, I think women generally aren't stupid enough to enter a field that provides less respect and renumeration than other professions for the same amount of required brainpower. There are tons of female doctors and lawyers.
Perhaps its because women already have to deal with lack of respect growing up more than guys, so they notice this about our profession before making the career choice.
T.E.D. on December 29, 2008 8:36 AMI lost 3 weeks of pay as an independent contractor in 2001 when the company went bankrupt. It would have cost me more $$$ to fight for it in bankruptcy court. This was also after puting in 90-120 hour weeks on the project that was supposed to save them.
I thought if I had to get back into this industry, I would end up in the funny farm, so I became a fishing guide. Excellent work, but after a few years of not making ANY money, I am back.
Though I am a little wiser now (a few years older than 35). You won't catch me working more than 50 hrs a week for ANY reason. I see pages of jobs available every day, so when my boss gets a little antsy about my attitude, I simply slip him a copy.
Mikey on December 29, 2008 8:37 AM
"All that being said, there's a strong smell of arrogance & elitism in this discussion - particularly in that linked thread on the JoS board. There seems to be very little toleration or respect for "day job" coders - those who are competent and professional but aren't "rock stars" or especially passionate about programming. I would agree that technical incompetents probably should seek alternative careers!
Nobody would require a car mechanic, a chef or even a lawyer or doctor to be a "rock star" in their profession before accepting they could do a good job. Of course if they are such, they can command higher salaries and better working conditions, but it's surely an individual choice whether they want to do this? "
VERY well said.
I enjoy programming as a JOB. I think it's a great way to make a living. However, I do not understand those people that eat, drink, breathe, and sleep code. Don't you have any other hobbies or interests besides coding? There's more to life than sitting in front of a computer 24/7.
I've become too good at attaching a cover sheet to my TPS reports to quit now.
Charles on December 29, 2008 8:58 AMAnother possibility is to try to move into another part of the field. I've been bouncing around cube jockey positions for a while now and I feel ready to move to a more creative part of the business. So a friend of mine and I are working on a Web 2.0 site and I wrote a 2D game engine from scratch and I'm looking for an artist collaborator to help me turn it into something marketable.
Software Development, like life itself, is what you make if it. If you aren't happy then you need to think about what would make you happy and start to move towards that.
Wish me luck!
Johnny on December 29, 2008 8:58 AMI loved programming so much, I switched careers to it a decade ago (at age 30) from research science. The pay is better, and the work is easier, and it's just damn *fun*.
That being said, I *am* getting tired of programming for clueless people on things I've done a dozen times already, and being treated as a replaceable part while they take all the rewards.
Now I'm spending my time trying to find or found a company that will keep my family fed and warm, let me program rather than be a full-time entrepreneur (I'm looking at you, Spolsky), and ultimately, help other programmers do what they love. Dreaming and doing...
Joe on December 29, 2008 8:58 AMI'm gonna start off by saying I've never in my life been paid to love anything. And I'm pretty sure no one here has, either.
The second point I would like to make is that anyone saying they are programmers because they love writing code - that is very immature, I'm talking World of Warcraft / Dungeons and Dragons immature. Programming is a job, and not a hobby.
If all we had to do was go to work and write code, then I would see your point. But as you and I both know, that's a very small set of responsibilities we have. So small, the longer we do it - and I've done it 13 years - it becomes more and more negligible.
Other responsibilities include being the new guy and dealing with a bunch of dinosaurs who feel 'threatened' or that they aren't paid accordingly. Another responsibility is dealing with lying, manipulative, bureaucratic management. Another responsibility is dealing with nepotism - that glorious situation where your coworker, who is coincidentally a senior programmer's twin brother, sister, wife or cousin, can do no wrong, and when you walk in at 9:31, someone's waiting in the kitchen to give you your verbal warning.
How about the responsibility where 3 out of 4 programmers spend half the day playing basketball, or Halo in the game room, and you're the one who is making it possible for the CEO to make his next Mercedes payment - because you love writing code? How about when your boss or team leader or "chief architect" has been out of school for two years, strutting around the office like he's Bill Gates, giving you orders? Or how about when you see a new programmer who is very enthusiastic about his work and trying to learn, being run through the wringer, and eventually fired?
The love it or leave it "Texas" mentality I grew up in is way off base.
This business isn't about loving your job. It is just like any other - from mechanic to neurosurgeon - and we do what we can to support ourselves and our families. What has made it the most difficult for me over the years, are the employees who have some sort of ideology that the problem is with the people who are actually coming to work to do their job - either overlooking or simply ignoring all the other factors at play.
Don't criticize the people who are thrown into the mix with little or no guidance, because that's exactly how it works. Rarely, has anyone sat down or taken the time to explain how things work, to me. Every single time, I have to learn a new technology, language, or new apporoach to solving similar problems - completely on my own. There is always some know-it-all sitting up on their pedestal, judging people like me (and people like you) who are just trying to do the best we can.
John B on December 29, 2008 9:19 AMI just talked to a guy yesterday (recently sold a hardware company) who said "20 years is all anybody can handle in the tech industry. Then you are out." I disagreed. Going into another career that pays less where you work more doesn't seem appealing. Giving up entertainment, sometimes a social life is what we do to be decent at programming. It's harder with a family - but doable. Sure the 22 year old out of school can code all weekend while I take the kids to a soccer game, but I have to make time. I know plenty of guys way over 40 and even 50 who are still on bleeding edge technologies - doing what they do best. If you are good and love it - you just do it.
John on December 29, 2008 9:20 AMI've written about this problem before.
If you care about programming, than you're part of solution, not the problem. There's a fascinating civil war going on in the world of software development, which chiefly consists of four factions. More amazingly, only two of these groups really have any idea that there's a battle raging, and the largest group of all doesn't even know it exists! It is this weird division that is crippling our ability as professionals to engage in a dialogue. Those with the credibility and expertise to get wound up and have a grand debate are a nearly invisible minority when compared with the vast remainder who don't know/don't care. That latter portion, is, ironically, the very cause of the problem.
Read the rest at:
http://www.robbyslaughter.com/musings/the-four-sided-civil-war/
"Our nation better get a hold of itself soon, or we'll continue the BS that we've been handing our citizens to the point where the only jobs WILL be "do you want fries with that?" type jobs.
It has NOTHING to do with being good or not. It has more to do with certain circumstances, some of which are location. And NO, some people cant just pick up and move an entire family.
Mike on December 29, 2008 08:29 AM"
EXCELLENT EXCELLENT comment Mike. There is a lot of disrespect and lack of resources made available for programmers to work and do their jobs. Why in the hell can't every thought worker(AKA PROGRAMMER) be given an office with a DOOR THAT SHUTS SO HE CAN CONCENTRATE? Instead of improving our craft and nurturing Software development into a profession with certifications to qualify who is fit to practice; industry icons like Bill Gates have only gone before congress and asked for legislation to allow more H1-B visas. *Sigh* The US is fast approaching third world status if only outsourcing is encouraged by businesses and politicians.
o.s. on December 29, 2008 9:38 AMJohn B,
Great post. I've dealt with all of those issues that you mentioned. Being smart and getting things done is a good way to be taken advantage of. There are a few more things I'd like to add:
How about your boss who has a GED (and no college education while you've invested YEARS and thousands of dollars/hours in your education), telling you you want to do? Or how about walking into the boss's office and catching him watching movies while you're working hard to meet a deadline, and he won't even look up when you ask him a question. Or the non-programmer co-workers who know nothing about programming who are jealous because you have a "sit down job"...yet they are the ones who spend most of their time BSing while you're cranking out code (while they are distracting you from doing your work). Or the managers who have you sit in a crowded location full of distractions, while their buddies get the private cubicles in the quiet locations so they can surf the net and play games. Or the managers who shame you when you try to take time off that you've EARNED.
I can relate that everything you learn has to be on your own. I've never been sent to any kind of training by an employer. It's been up to me to learn as I go. If somebody asks ANY question about ANY aspect on computers, I'm expected to have an answer immediately even if I haven't worked with the given technology....or look like an idiot.
And you're right, there is no shortage of people who "observe" and "judge" others. It isn't the work that bothers me about this field. I enjoy the work. It's the political BS that takes away a lot of the passion.
Ted on December 29, 2008 9:49 AM"EXCELLENT EXCELLENT comment Mike. There is a lot of disrespect and lack of resources made available for programmers to work and do their jobs. Why in the hell can't every thought worker(AKA PROGRAMMER) be given an office with a DOOR THAT SHUTS SO HE CAN CONCENTRATE? "
That's a good question. In my current job, my desk is positioned outside the boss's office so he see me and make sure I'm working. I'm also in a busy, high traffic area with a lot of distractions. While the "favorites" get desks in quiet, private locations where they end up surfing the net for much of their shifts.
In my previous job, I was in another high traffic area with lots of noise and distractions. In the job before that, I was in a cramped office with 3 other people who were always BSing. Kinda hard to concentrate in those types of environments.
>Programming is a job, and not a hobby.
You're doing it wrong.
I'm sorry that your work has gotten you so jaded, but all of the other responsibilities that you mention, aren't in every job and aren't programming. I don't know about you but I look forward to getting back to my office and getting back to work. Similarly, a friend of mine loves woodworking. He only sells the things he makes because he needs to eat.
So when you say "...And I'm pretty sure no one here has, either." I respond wholeheartedly to you with "Nay, sir. You are wrong."
Steve-O on December 29, 2008 9:57 AMUmmm, $100K is not that much in New York. And if he's paying less than $75K to good college graduates - he's ripping them off. Even Microsoft will pay more than that to qualified candidates.
DMB on December 29, 2008 10:00 AM@DMB Some will take the pay cut for the experience of working with those they admire.
PS This captcha sucks, I've emailed every bot in the tri-state area and let them know it's "orange"
Sara Chipps on December 29, 2008 10:07 AMI'm a little put off by Joel's attitude about this. He seems to be laboring under the delusion that most coders work in conditions as nice as those at his company.
I know more than enough coders who are treated little better than telemarketers. A tiny noisy cube where you're monitored for your 10+ hours to make sure you're churning out code and back from your 30 minute lunch on time while the PMs, BAs and middle managers are in quiet private offices watching porn and putting together the latest of their insane requirements documents and development schedules that you won't be consulted on and be blamed for not being able to deliver in 2 weeks.
Yes, there are other professions that pay less but their responsibilities are drastically lower and demands on their abilities both logical and creative are even less so. Some require some education and some require some training but a builder will never have to relearn how to swing a hammer or design a better roof. HR and CSRs might have to learn how to use Outlook and Word but they don't have to write them from scratch.
Other people can be passionate about their jobs but a garbage man won't stay up nights agonizing about the best way to heft a bin. When a mechanic changes my oil, no amount of love and attention will make that oil change drastically better than another.
What we do has an impact on countless people's lives. Our code helps doctors save people's lives, brings people together, prevents people from getting lost, educates the masses, protects your property, manages your savings, cures diseases and explores space.
Passionate coders take what they do seriously and give everything they have to their work. What I'm trying to say is, no Joel, I don't think we're spoiled. I think we do a very hard job that demands a lifetime of study, creativity and hard work under often under difficult conditions and without credit. I don't think its asking too much for coders to be treated as well as doctors and lawyers.
Yes, medicine and law will evolve over time but can you honestly say that at the end of a lawyer's career he's had to learn and evolve as much as a good coder? The difference is that we don't have to be licensed and go to expensive schools.
If a doctor screws up, at worst, one person dies. If we screw up thousands of people get the wrong pills, millions of dollars are lost, companies go out of business, the police don't get there in time, the lights go out.
Echostorm on December 29, 2008 10:41 AMNot sure the job market has been shrinking, I have been getting job offers for the past 2-2.5 years from companies that I had lost contact with after the big burst. Not generic offers but me specific however based on job skills and wants from 7 years ago.
As for a "programming" job I have not had one for the last 9 years but it is a rare month that I don't spend a few days or weeks doing programming, most of them are smaller standalone programs which I enjoy alot more then the massive programs of my programmer past.
The job titles usually have admin or engineer in them and pay more then programmer. With companies not wanting to do in house programming you don't get programming job titles But few people can do a simple shell/batch file and companies still have large amounts of customize stuff they need, be it web, database, small applications.
So if you say you can solve the problem you can pick what you want to do and let the uninteresting ones drop by the side.
One last item the computer business is very ripe for burnout, the subject of the original message is probably suffering from it. You are making decent money take your leave and go places and not just for a few days take a week or two at a time, leave the computer at home. Also plan to do a sabbatical, for 3-4 months, after a decade or so, it is the best way to clear your mind and get a focus on what you want to do.
will dieterich on December 29, 2008 10:42 AMMike says that it's "Common Sense" that we need to bring back programming jobs to the US from other countries. Great. How do you propose to do that? Be specific please.
Tom Faber on December 29, 2008 10:50 AMWeb developers are still in high demand and we have plenty of opportunity to be creative. After all, there usually isn't even a web designer hired for the project so you can even play with Photoshop. A bad economy just means there are more entrepreneurs trying to solve their financial problems with an online business. Just make sure you get paid. If you are a corporate developer, you should start freelancing as a web developer and acquire the necessary software and office equipment to do it full time. I even recommend web development work to the homeless. There are a lot of homeless people who manage to participate on social networking sites. By the way, I've checked on various web worker sites and most web developers are reporting higher than usual demand for their skills.
Robert S. Robbins on December 29, 2008 10:52 AMI'm glad to see you're back in your usual form :)
(After working on StackOverflow)
Someone on December 29, 2008 11:00 AMI am passionate about professional software engineering. Programming / coding is a small part of software engineering. In all the companies that I have been employed by that produce software I have not seen any professional software engineering practised in the creation of said software. Most of the people that have coded said software remarked that they 'loved' coding /programming. All of the released software has been unrelentingly poor in quality.
I do pray that the average surgeon is not the average programmer with respect to the level of professionalism attained.
Joe Reality on December 29, 2008 11:07 AM
My hope is that the cheerleading, blindfolded, fanboys like you and Joel, leave the industry. When's the last time either of you debugged a race condition? You manage programmers and therefore have a vested interest in keeping the illusion alive. Programming is a JOB. It is often HARD. It is very STRESSFUL.
You obviously have no clue.
Mike on December 29, 2008 11:15 AMHere are some relevant True Stories:
True Story #1:
After getting hired at a software company, I went out to get fitted for some new suits. I mentioned to the salesman that I was getting these suits for a software consulting job on Wall Street. Salesman says to me "oh yeah, I used to be a mainframe developer on Wall Street." I asked if he was working in clothing retail because he made his fortune and wanted to do what he loved. "Oh, no - they started using visual stuff for everything - drag-and-drop. No *real* coding in assembler like I did - just drag-and-drop. So I gave up and now I'm doing this."
True Story #2:
Real Estate Agent who sold me my current apt mentioned that he "used to be a C++ developer" but gave up and moved into real estate because he "got laid off and didn't have time to take classes to learn Visual Basic."
Now, to be fair, it's easy to forget that the Internet didn't exist 15 years ago in the form we now know it - with its bountiful tutorials and online books. But these two encounters were enough to plant the seeds of doubt in my mind regarding my career choice.
@DMB
"Even Microsoft will pay more than that to qualified candidates."
Hang on, *even* Microsoft? Microsoft rewards its programmers above average for the marketplace, at least in terms of pay.
Echostorm wrote:
> If a doctor screws up, at worst, one person dies
...but if Jeff Goldblum screws up, the aliens think to install anti-virus software and the whole earth is destroyed.
T.E.D. on December 29, 2008 11:28 AMI suspect that many of us love parts of our job(s) but there are lots of things that are frustrating or irksome. At first I was surprised by Joel's response(s), but, it's not like we really know him anyway.
Apparently he is becoming frustrated with the lack of talent he can recruit. My observation and advice to him is that either he has to relent on the co-location thing in order to get good people in the (virtual) door, or he has to sacrifice on the quality of the people he hires. I know which one I would do and I have seen that model work. (hint - it is not the one about lowering standards of people)
Joel is competing with (what has been) some of the bigger and highest paying employers around - the financial industry. Perhaps now he is not, but I suspect most of the people in that world (or who recently belonged to it) are not interested in writing a defect tracking system or a remote control help app or some other webby type application. The people want to work on harder and more interesting problems - and in an industry where millions of dollars flow in matters of minutes or seconds.
Personally, I'd like to work at fog creek, but I have no interest in either moving to NYC or commuting the 90 minutes each way from my little slice of suburbia.
I recently began to wonder why Joel is so interested in people who have learned C, C++, Scheme (all the stuff I cut my teeth on) but his company uses technologies like VB in daily activities. The people he wants to hire (at least from my experience) have an aversion to that sort of stuff. They WANT to work on hard problems and from what I see of Joel's stuff it is not that technically interesting.
So perhaps we can forgive Joel his seeming cruelty and advice to "suck it up".
I sometimes love my job (not my day job tough - just the two side/freelance/startups I am working one) and many times I can't stand some of the work I do and the people I work with and the ridiculous policies and bosses. Again, I suspect I am not alone in that. How else can yo explain the near universal acceptance, appeal, rejoicing and identification with Dilbert, office space and "the office"?
Life would be great if we all were as smart, talented and productive as Linus or Edsgar or Anders, but we're not and that's ok. At times we aspire to do great things and sometimes we actually do them. Other times we just want to get through the day.
I'm just hoping I don't waste so much time on stack overflow tomorrow so I can get some work done on my business plan.
Tim on December 29, 2008 11:29 AMWell, I took the extended christmas holiday opportunity to... set up Eclipse and Scala on my new computer. God, I'm a geek! Thanks! :-)
Daniel on December 29, 2008 11:34 AM> When's the last time either of you debugged a race condition?
Sounds quite interesting, actually -- would love to see a blog post on the specific work you did!
> Programming is a JOB. It is often HARD. It is very STRESSFUL.
All of this is true, but it is also AWESOME. And, seriously, you should blog about your work! There is a community of people like us who are interested and engaged, and it can only help you professionally.
Second post in a row based on something on JoS.
Getting ready to jump that shark, Jeff?
Adam Philips on December 29, 2008 11:49 AM@echostorm: you're a little off here; most code doesn't mean much in the bigger picture. some manager or offshore outfit or paradigm shift will make it obsolete.
I need my oil change done right, I need my car brakes done right -- these things can save my life.
Joel wrote a bug tracking software and was lucky enough to have some Summer interns write his next successful product.
Jeff is a great blogger not so much anymore because of his knowledge, but because he figured out how to LEVERAGE his blog, linking to himself and Amazon, and most importantly, get people (including me) to read and comment (hmmm, a New Year's resolution is coming...) and STIR the pot of silly emotion.
@Veteran: Absolutely. There is a problem with doing what you love as a job. If you really love it, of course, you'll do it for nothing, and when someone takes advantage of that it's called exploitation.
When I refuse to work extra (or even HARD), it's not because I don't love programming (I positively do). It's because there are other things I care about more. Like my health (primarily mental health, but also physical), my own programming projects, and a life outside of work! So fsck the attitude that says a good programmer is one who will do anything for the benefit of the project, at the expense of everything else.
I would even go so far as to say that if you are one of those programmers who does anything and everything for the sake of shipping a great product, STOP! Think about what you're doing. It's not fair to your co-workers to be held to such a (horrific) standard. Just because you're ok with being exploited doesn't mean everyone is. Start a project of your own or something. Chill out! (something most good programmers seem to be unable to do) Attempt to uncover (and heal from) the mental wounds that you've suffered from for so long, the wounds that allow you to be put in a position where you're ok with being exploited.
Dylan Nissley on December 29, 2008 11:53 AMMecki: you can't be a truly good programmer until you can read other people's code. You may think the other people can't program: sometimes their idioms will just be different from your own, and they are great in their own way. The worst programmers I've ever met were very, very proud of their own work and couldn't stand anyone else's. They tend to be the ones who can't learn new tricks. Are you sure you are not one of them?
Personally I don't think we should teach writing code before we teach reading code. If I had a programming class to teach, my final exam would be "Here is a 100,000 line program. There are 14 known bugs. Here are the bug descriptions. Fix them".
@EchoStorm
I agree with you on there for the most part.
In the end, I like programming and think it's fun -- unfortunately now that I HAVE to do it every day (and mainly to build things for other people) it just ... isn't as fun anymore.
In terms of stress and the 'having to take work home' aspect ... as I've got some physical problems, being a 9-5 programmer is sometimes all I can physically stand.
The way things move so fast nowadays, it seems that unless you are spending your Christmas holidays fooling around with servers you aren't dedicated enough to eventually fall into obsolescence.
Mal on December 29, 2008 12:00 PM@steve I'm off because you say so? You might be writing ho hum business apps but a lot of the guys I know are in a little deeper.
One friend writes an app that keeps track of pharmacy orders for nursing homes. Another works on stock trading software. I write software for a major home security company. My old boss maintains an app used in hospitals to keep track of patient records. Another at CMU's work is used by NASA. One uncle does mainframe work for an energy company. Another uncle codes things for the DOD that he can't even talk about. An old classmate handles the online billing for one of the major telcos. I could go on.
While I do have coder friends in game companies and less critical companies the majority do have rather heavy burdens.
I'll agree that I'd prefer that my mechanic is competent if it came down to one bad oil change or the children's ward getting the wrong meds I think its a no-brainer.
Echostorm on December 29, 2008 12:06 PM"Personally I don't think we should teach writing code before we teach reading code. If I had a programming class to teach, my final exam would be "Here is a 100,000 line program. There are 14 known bugs. Here are the bug descriptions. Fix them".
Gil on December 29, 2008 12:00 PM"
Ha Gil that sounds good but you would weed out MOST of the students in the class! A 10,000 line program with the same number of errors would be better for the little tykes who are in college and haven't ever worked professionally. As for your comment about Mecki I'll leave that between you two.
o.s. on December 29, 2008 12:20 PM"So if a programmer ever hints, even in passing, that they might possibly want to exit the field -- they probably should."
That is an extreme over simplification. As Veteran described, there ARE other reasons to leave software development than incompetence although I acknowledge that there is a disgusting amount of incompetence in our industry.
I love to code, design software, develop products, market solutions, and plan business strategies, and I happen to be pretty damn good at them all, but that does not mean I have never reevaluated my career and the pros and cons it has on my life.
Yep I agree love it or leave it. But post-assembly most abstract languages have lowered the barrier to program, which means a whole lot of people can do it without loving it. my 2 cents to add to a great post and even better comments.
Dipankar Sarkar on December 29, 2008 12:27 PMIt can depend on *what* your programming, I found when I started doing jobs that were too far away from the bits of programming that interested me (doing server side stuff with j2ee, with a really horrible codebase) for a while, I started to question whether I wanted to give it up - turned out that I just needed to be coding the stuff that interested me to have an interest + put the effort in.
Stu on December 29, 2008 12:40 PMI totally agree, but with one small exception. The thought of leaving the field is sometimes garnered by the inept and the exhausted.. sometimes a bad work environment can really twist your perception of what a field is supposed to be.
Hutch on December 29, 2008 12:42 PMI was going to write a long rant, but forget it. No hard feelings Jeff, but you admitted it yourself: you're too biased to make this call, SO DON'T MAKE IT. You're simply too disconnected from real programmers and the working world for this post to mean anything. You lack... perspective.
Dylan Nissley on December 29, 2008 12:42 PMOne more thing: why are you doing this? What do you hope to achieve? Do you think people will actually quit their jobs because you told them to love it or leave it? Why is it unfair for bad programmers to hold down jobs that good programmers have? Wouldn't most good programmers have the mental faculties to understand the sacrifices one must make in order to do what one loves for money? Wouldn't most good programmers choose against those sacrifices for the good of their craft?
Dylan Nissley on December 29, 2008 12:50 PM1) I have been developing code for over 15 years now. Before that I worked for 7 years in S/W QA. I am passionate about my work, but not obsessed with it. Yeah, I used to work 70 to 80 hours a week when only 40 to 50 was required. Now I don't for a number of reasons: I don't need to (I am more productive now), I have other interests that occupy my off time, I need the downtime to recharge/reboot/flush the cache. I try to work smart instead of long hours. So don't measure whether someone is good or passionate by the amount of time they put into an endeavor. A well rounded person is usually a better worker in the long run.
2) Judging other people's work by how you would solve a problem is not always valid. There are many different ways to write logic to solve a coding problem - many are as equally valid, elegant, concise and readable as the one you would choose.
3) Would I leave programming? Not until I retire. I like what I do. Often I love it. Once in a while I hate it - but I get over that. I got into s/w dev by mistake (I have a EE degree), and before I went to college I worked just about every crap job you could imagine to make ends meet - many of *those* jobs I hated, so I know the difference.
But if I won the lottery today, I would retire and probably not write another line of code. I have plenty of other things I would do instead - like laying on a beach in Tahiti, or touring Europe on my Ducati, or taking an occasional philosophy/science/math class - of which none would earn me money, but none of which I would ever get bored with either.
Meanwhile, until I retire - I like what I do, but it is a job and I wouldn't do it if I didn't get paid or if I didn't need to get paid.
I am not a 'rockstar' (most of the coders I have met who think they are a 'rockstar' aren't either) - a totally overused term. I take pride in what I write - but I am often held back by deadlines, by supervisors who feel we aren't going to need what I want to do then six months later decide we do indeed need what I wanted to do at the beginning (much more often than not).
4) I do agree that most projects/companies/startups seem to fail mostly due to managerial decisions/mistakes - some significant portion of which were scheduling problems (impossible deadlines/milestones, etc.). Sometimes it was also the market/economy taking a left turn or downturn that was unanticipated or that could not be planned for. Sometimes the technology was at fault (the code, the platform, the hardware, the architecture, the time estimates which most devs are terrible at - including myself). But yes, more managerial problems than dev problems - and yet it is usually the management staff that stayed employed and the dev staff that was let go.
Certainly, if you don't enjoy writing code, think about finding a profession that you do enjoy. Life is too short to work in a job that you hate while there is something you could work at where you look forward to going to work everyday. BTDT.
LCB on December 29, 2008 12:53 PMLCB said: "Certainly, if you don't enjoy writing code, think about finding a profession that you do enjoy. Life is too short to work in a job that you hate while there is something you could work at where you look forward to going to work everyday."
This is the problem. Life is too short to be working a job in the first place! let alone a career where you have to go to school for 4 years! and then work at least 8 hour days 5 days a week! OF COURSE life is too short to be doing that! Life is too short to be doing anything you don't want to do longer than you have to. So take my advice: work as little as possible. I swear to god you will be happier.
Dylan Nissley on December 29, 2008 12:59 PMI still love programming -- nothing is better than finding that 'groove' where you're building up something simple yet sophisticated -- but over the years I've found that a counter-balancing 'frustration' has been growing as well. We keep writing new stuff, different, but ever so rarely better, and I keep finding that the instabilities, and the awkward interfaces, and the overcomplicated behaviors, and all of the once existing but now vanished features have formed some type of wall that we seem unable to break through. We've built up lots of data, but overall we've made dreadfully slow progress, given the sheer number of people in this world that are hammering away at their keyboards.
I'd be far happier if our efforts were really contributing to something huge, rather than becoming short-term disposable code. It's hard to see so much effort get wiped out every five to ten years and replaced with yet another group of people building similar things, in a similar way, with similar problems.
Given that, there are some days that I keep thinking it would be nice to switch to wood-working, or some other more hands-on occupation. At least if I sweat really hard to build a gorgeous desk or cabinet, it will last my lifetime, and there is no chance that it will get replaced by someone else's wood 2.0 version.
Paul.
Paul W. Homer on December 29, 2008 1:18 PMI have recently quit my secure and well paid corporate job to go back doing software development because I love software development. My corporate job as an IT Architect became more and more frustrating every day, got too abstract and I did not get the feeling of changing anything. With software development I get rewarded everytime I see people using my software. Software development allows me to do *real* and useful stuff and gives almost instant rewards. I strongly believe that the software industry is still a great place to be and any software developer who does the job with passion will have no problem to find decent and challenging work.
One of my principles is to be selective in what I am accepting as a job. I wont accept any quick job that brings in some quick money using a technology I don't like. As a software developer I have the chance to attract the jobs I am interested in.
It has been so much fun since I quit my corporate job.
Armin Kroll on December 29, 2008 1:23 PMPart of it is that if you're passionate about the field and live and breath it in both your on and off time, there is no longer a 'closing up the computing station in a cupboard' mentality. I equate this as to someone that can see a vast terrain and they have full vision, compared to less savvy folks that are feeling around and running blind. It isn't arrogance but rather just a new reality, and it becomes more exaggerated the longer the separation exists. If I had to make a prediction it would be that role reversals are really inevitable here. With these economic downtimes we are hopefully witnessing the rolling out of a few million wheel chairs, figuratively speaking, with the surviving companies operating in intelligent, transparent, and well intentioned manners.
Jeff's is very similar to the old "you're either with us or you're against us" mantra, with "us" this time being what Jeff considers to be a good programmer. Not every good developer will automatically share Jeff's attitude, and Jeff seems to think that if someone doesn't agree with you on certain things then they cannot be a good developer. That's a rather myopic attitude.
Programming is all about solving problems, and a perfectly competent problem solver might want to leave software development because:
* I love solving logical problems, I might get more satisfaction out of applying my skills to other problems (maybe science or logistics or business analytics or diplomacy?)
* The advice I give might be ignored and the work I do might get destroyed in front of my eyes.
* The job might require me to put in more hours than I am willing to do or place me under more stress than I am happy to deal with (these two vary from region to region)
* I might one day want to move up the food chain, or find something which gives me more money. What are the options for a developer, apart from architect or dev team leader?
I can already hear some of you shouting "if you're good, as you claim to be, and you hate your job then find another job" (probably including smug comment about how good your own job/office is) - generally you can usually find one where the work is more interesting, or less stressful, or where you have more clout or where you get more money, in your region, but it's rare to find one that beats the old one on every criterion.
If I express doubts, does this mean I am unfit to do the job or that I am selfishly depriving someone more deserving of my job? This is a 40 hours a week of my time in return for money, not a religious crusade.
Mike K on December 29, 2008 1:57 PMPay is important, in The Netherlands the salary for developers isn't really great so that is an important reason to quit programming.
Theo on December 29, 2008 2:13 PMWhat a load of elitist garbage.
Microsoft Bob on December 29, 2008 2:17 PMAs a recent graduate of a bachelor of computing (more a general degree rather than strictly programming) I have to agree. I never ever wanted to be a programmer, but I am obsessively interested in interface design and business cases and a bunch of other related things. Unfortunately a lot of people feel software development is programming, when it's a whole bunch of other careers as well.
I don't want to be a programmer, I'm only ever going to be average at it (mostly due to finding it tedious and boring by nature) and I'm very proud of that. I'm now pursueing an MBA (Master of Business Administration) because I'm still interested in making quality software. Just not coding it up myself, if that makes sense.
So I totally agree. There are a lot of those people being average at programming who should be marketing, or going into a company and changing it's methodology, or working on the usability and visual design elements of software.
Just my 2 cents in passing from a mature aged recent university graduate.
Steven Clark on December 29, 2008 2:51 PMLet the anti-Indian comments begin ..oh wait they already did.
john_capitalist on December 29, 2008 2:55 PMHi Jeff,
While I think you make some good points in this post, I disagree with you on this point: "if a programmer ever hints, even in passing, that they might possibly want to exit the field -- they probably should". I have been programming for fun since I was 15 (first language was C/C++ for hacking my BBS software), and didn't stop when I made the relatively obvious choice to go into it as a career. I really love to program, and I have since the exhilerating moment that I realized it wasn't that difficult to understand and modify the computer code that underlied my favorite software.
That said, I have considered abandoning programming as a career in the past (possibly to go into a non-coding technical management role). Its not because I don't enjoy programming, its because I also enjoy other things and I am sickened by all the bile on industry blogs and twitter that is given creedence by thought leaders in our industry, rather than cast aside and repudiated as it should be. Unfortunately, many of the leaders in our industry feel that everyone except them and their circle of friends (or the people that share their particular methodologies and/or technology preferences) are somehow incompetent. (I still have yet to meet this Mort fellow.) Each leader has their own little list of pet methodologies and/or technologies and/or books (be it TDD or the latest MSDN fad or Lean or NHibernate or the latest UX design fad or the insistence that every programmer must be an avid blogger) that they feel every competent programmer should know, and basically you're a "Mort" if your list of skills is not a superset of their list. The only thing all of the leaders seem to agree on is that there is some sort of list that programmers worth their salt should live up to. The problem is that none of them live up to each other's lists, so its hard to take any of them seriously.
Although I enjoy programming, I also enjoy hiking, socializing with my friends and family, mountain biking, playing with my dogs, lifting weights, cooking, canoeing and more. If I read every post on all of the "must read" industry blogs and read every "must read" software book and played with every new relevant technology, and contributed to OSS, in addition to working my day job, I would never get to do any of the other things I enjoy doing, and probably wouldn't be married for long (and as much as I love programming, just programming *all* *the* *time* isn't enough for me). At first blush, one is given the impression that the only two alternatives to this sort of all-encompasing career obsession is to either leave the software field or be the forever disregarded, mocked and insulted work-a-day programmer known as Mort. This sort of black-or-white fallacy is the impression that one is left with by reading posts like this.
The reality is that there is a whole spectrum of programmers, from really bad to really good and everything in between. Some programmers are experts in this, some are experts in that, and some seem to be experts in pretty much everything (usually the ones that are unmarried and don't seem to have any non-geek friends or hobbies).
At the end of the day, I won't leave the field because I love to program and I can't think of anything else I enjoy as much that I could get paid as much to do. The right solution for all programmers is to recognize the nature of the spectrum, and pick the place on it that they feel most comfortable. I know a lot of developers that spend less time staying up to date than I do, and I still respect them and their opinions, and they are still able to do a great job delivering technological solutions to business problems. This is not directed at just you, but to all the software pundits: Please stop picking on the work-a-day programmers that make the business world function. Just because they don't read your blog or use your methodology doesn't mean they're not effective at what they do. Give people some credit and exercise some professional courtesy.
Regards,
Pat Gannon
Jeff, what should I do if I love programming but constantly doubt my technical ability? I mostly work alone lately (and make some decent money doing it), so I don't have full perspective.
My persistence over the years has led people around me to believe I am a good programmer, but I often wonder whether I would be naturally better at something else? However, I am in a very good position and am concerned I would give up all of this for something that isn't as good.
I guess that's a case of the grass is always greener on my side of the fence :)
Adam on December 29, 2008 3:10 PMI'm also glad "those people" have moved on--or moved back--to their original industries. Most of them tended towards the VB side of things. Marketing majors, finance... a varied bunch, none of them with computer science or engineering degrees. Most didn't even have a hobbyist's background!
We work in a great industry. I've been doing it long enough now (~15 years) to have seen some of the good and bad and, trust me, there's much more good than bad.
Scott Marlowe on December 29, 2008 3:19 PMPeople have always asked me why I chose to be a dancer. I did not choose. I was chosen. I was chosen to be a dancer, and with that I live all my life. When a young dancer of mine asks me if she should be a dancer, I always answer, ‘If you have to ask, then the answer is no.’
- Martha Graham
@Tom: "Microsoft rewards its programmers above average for the marketplace, at least in terms of pay."
Yeah, right. They also hire talent that's WAY above average. Anyone who passed their 5 hour interview can get at least 15-20% more elsewhere. Took me 8 years to figure this out. :-)
DMB on December 29, 2008 4:10 PMDude, have you counted how many self-referencing links you have? Jesus Christ. It makes your posts impossible to read.
annoyed on December 29, 2008 4:59 PMThey had a great analogy on the Java Posse a few weeks ago. Your programming team is much like a professional sports team.
Expanding on that, when you imagine how a pro basketball team would operate if their scouting practices were the same as your hiring practices; that's how your team performs.
If every company had its own basketball team, I imagine that they would all suck pretty bad compared to a pro team.
Only one in a hundred(thousand? million?) people who WANT to play basketball, could actually qualify for a pro team. They all live and breathe the game. Few would ever consider voluntarily changing careers.
Any two pros could seriously outperform entire teams made up of people who play at the level most programmers program.
Yes, there is THAT much of a difference--at least.
Bill K on December 29, 2008 5:09 PMOn the face of it, the folks who are saying "Passion-smassion, software development is just a job" are quite reasonable. I am not inclined to treat for-profit companies as charities. However, I think that they are missing a practical point. The threads here and on JOS started because some people find themselves hating their software jobs, and want to get out. However, there >are< good jobs in the software industry, jobs with good management, clever and personable co-workers, and rewards (financial and otherwise) commensurate with the effort expended. The catch is that the competition for the good jobs is almost always much stiffer then the competition for the sucky jobs. Since there is fierce competition, given two candidates with equal skill and experience, the one who has demonstrated more passion and devotion to the trade will have the edge in getting one of those good jobs.
Spending your passion on a job you hate, and are stuck in, makes no sense at all. That's a no brainer. The harder problem is if you are trying to work your way out of one of these bad jobs, and into one of the good jobs. Do you throw the dice, and invest your time and energy to establish a "passionate and dedicated" track record, or do you say "screw it", and resign yourself to a series of jobs that are at best tolerable. The dilemma is even more difficult to sort out, because intelligence, skill, and passion, don't guarantee a good job, they just give you a better shot at it.
Charles E. Grant on December 29, 2008 5:19 PMMy 2 cents here:
You have to explain someone how to accomplish a task using only a dozen of words. There are no concepts or ideas or implied or ... only very tangible notions. This is programming. Anyone can do this. Anyone can drive.
Now assuming that what will differentiate programmers. Why some are good, some are not so good and some are really bad? The same reason there are good, not so good and bad drivers. Only bad programmers kill less frequently than bad drivers!
Programming is not rocket science - and this will hurt the egocentrics landed in the programming profession. And there are a lot. Specially the ones who failed to train or become businessman or politician or other powerful guy. So they will seek revenge in writing very obscure and complex code to leverage their mad personality. By the way - have you seen a lot of good programmers becoming politicians? Or good CEOs ? Don't shake B.G. here! He wasn't good programmer.
And programs end always working. As good as bad they end doing what the boss is expecting. So why seek only good programmers? This will require to pay them too much. There is no natural selection in the programming field. Anyone can program. As programmer you can make more or equal to what a waiter makes. And you sit comfortable and do not have to bear rednecks customers.
Now honestly, how many Ernest Hemingway or Edgar Allan Poe do you know? Have you tried to write poetry? And you have handy much more words Java or C# has directives...
So why wonder good or bad programmers? Let's enjoy it before some really good programmer will write a program which write programs.
END of delirium :o)
Steven on December 29, 2008 5:34 PM@john_capitalist: it's not anti-Indian. If you check other countries you would be hard pressed to find one that allows a US Citizen to come in and take a job from that country's locals.
We here in the US do not mind it, we welcome supporting illegals, and on and on. It could be another country but it happens to be India much of the time. There's also a lot of Italians that are Mafia. Big deal.
The fact is, a job should first go to a US born citizen, then, if no one can be found, start looking around to fill it.
This will become a big deal in 2009. The good ol' US has not seen what will be coming, at least since 1929. People who were born and raised here, pay Social Security, have paid into the system, probably think they deserve first shot.
To all of you bitching - I don't want to hear it. I don't. I think your attitude is a reflexion of the rest of your lives. I could be working at a crap company too, guess what, I was. I've only been a web dev for 2.5 years. I hardly have my pick of places to work. Last year my position was outsourced and that SUCKED, but I sucked it up and found something I thought I would love. Guess what, I didn't love it. The position I thought would be building a great app into an awesome app turned out to be for turning a crap legacy app into something legible. So what did I do? I did not accept mediocrity and I looked for something else. I had security, hey, I was even getting the big money. However, I wasn't happy so it wasn't good enough for me.
Now? Well, my company has one detraction - it's not a tech company. Besides that I work with a group of brilliant people in a gorgeous office for a boss that is obsessed with making us happy. We work 4 day work weeks, get kicked out of the office at 5, get a week off every quarter and are treated with massage days, free lunches, happy hours, and dinners out on a regular basis. For all that he gives us we crucify ourselves getting stuff done for him and we love every second. I was supposed to have this week off, and I actually have to work (I don't have to, but I am). I'm not even mad because I love it so much there.
This is only because I don't accept mediocrity from myself or the people around me or my surroundings. Those of you that are miserable at your jobs, no big surprise that that's not the only thing you are miserable about.
You can choose to change it, or you can complain about it. You don't have time for both. That has nothing to do with programming sucking, or the industry sucking, or that things are so hard for you we just don't understand. If you don't like it, leave, and not because I don't want to work with you but because there is no reason not to be happy.
Nice article. It has inspired me to write a response relating to how WE can improve things rather than waiting for the bubble to burst. http://www.fliquidstudios.com/2008/12/30/weeding-out-the-weak/
Michael Little on December 29, 2008 6:20 PMI'm glad to learn that you used your Xmas Eve time to install servers instead of being with your family, or loved ones or at least friends.
If being passionate and loving his job and everything said means that explaining things to a machine is more important, more fun, more interesting than to be with people you love, specially on Christmas Eve, then I'll be glad to not love that job of mine.
As this other guy said :"Get a life, this is just a TV show"
Spou on December 29, 2008 6:31 PMI used to be a web developer. I got downsized in March 2007. I enjoy programming and continue to do it during my spare time, but I didn't enjoy spending a lot of time on something only to be told it's not what the customer wants even though they previously told you they did.
I moved over to IT where I stayed until April 2008. I enjoy building computers and setting up networks, but I didn't enjoy having to deal with other people's stupid problems.
I decided to try a completely different direction and worked in a warehouse for a few months as a shipper/forklift driver. It was a little like defragging a hard drive and never making much progress, though I blame that on the company and not on all warehouses in general.
Last month I started working for a manufacturing company and I'm loving every minute of it. My job is to investigate all the processes and make sure the company is profitable. It has the problem-solving fun of programming, but the path from A to B is a little more straightforward. It also requires significant knowledge and experience with software development, because software problems are what causes A to lead to C when you were expecting B. I spend most of my day in Microsoft Excel with an ODBC connection to the database.
Scott on December 29, 2008 6:50 PMI think one of the great things about working on open source is that you <em>do</em> get to work with a lot of people who would do it whether or not they are being paid.
I've had occasional thoughts of going into some other industry, though. I'd love to work outside, or go more places, or just be able to leave my computer off for days and days at a time <em>if I wanted to</em>. Not saying that I always want to. :-) It would just be nice to have the option.
-Max
Max Kanat-Alexander on December 29, 2008 8:22 PMAs someone who will be graduating from a CS grad degree and heading off to one of your aforementioned big 3, I still feel inadequate and went through a great deal of struggle wondering "if I was cut out for cs" many times in my education.
I think that's essential to establish your love for it.
Well, maybe not the first...I am hypercritical of myself and even with an ivy league education and a 6-figure salary from a top-3 software company as proof that I should consider myself a 'great programmer," I still struggle to believe I am that good. I constantly look to improve myself in every facet of life, not just programming, so maybe that's another trait, is the willingness to never settle and constantly improve his/her programming.
As far as the other problem with wondering if you're good enough, I mean I remember spending nights in the computer lab crying because I didn't think I would finish a project in time. I struggled through some projects, I asked myself if I was cut out for it, I wanted to throw my laptop a few times at code that I swore was supposed to work. But regardless of it all, I couldn't see myself doing anything BUT computer science. I couldn't leave it, and I still can't, and I don't think you can truly appreciate your craft unless you REALLY hit hard times and REALLY push yourself to the limit -- even if it means a double-all-nighter to finish that final project. I have a greater appreciation for it now that I have questioned the very thing you believe should instantly drive someone to leave.
I think you also need to have a life outside of your work. As much as I love doing this, and I've already considered work to be "permanent summer vacation" when I leave school, I still demand that I give myself a life outside of programming. I don't think you can truly gain perspective for your passion unless you take up other hobbies. If you smother yourself in code and choose not to do anything else, you can burn out or worse, grow to hate it with enough time.
Anyway, I think I've rambled way too much, but I think you need to question your work just like one would question his or her beliefs in religion, politics, etc. in order to truly appreciate the gravity of his/her work.
Adam on December 29, 2008 9:23 PMHere's my $0.02 -- I love programming. Really. I've gone to bed wrestling with a problem only to have an "Aha" moment at 04:00, then leapt from bed, fired up the computer and banged out an elegant solution. I read blogs, I volunteer my programming skills for community projects, I try to stay abreast of new technologies. I really do love this stuff, and I'm recognized by my peers as being a "go to" guy.
But you know, if I were offered a package deal to leave my job tomorrow, I'd think long and hard. Why? Because I'm tired of filling out redundant information in three separate systems (incident tracking, workflow and CM). Tired of endless rounds of audit reviews and requirements for the simplest solutions. Tired of having a trivial issue (literally -- half an hour or less to code and test a solution) take weeks to get into production because of the above, all the while fending off clients questioning why I can't get work done more quickly.
It's not the coding I can't take or don't want to do -- it's the endless, mind-numbing bureaucracy surrounding every little nit.
Bill on December 29, 2008 10:15 PMjohn_capitalist : Let the anti-Indian comments
john_capitalist : begin ..oh wait they already did.
What's wrong with 'anti-Indian' comments?
Chris on December 29, 2008 10:20 PMTo be a great software developer is to be a sharp sword -- a tool for the manipulative, deceitful courtiers. You love the sharpness of your intellect and the power of your design. But the day you differ with your master is the day she'll put you away they'll put you away to rot.
John Garrison on December 29, 2008 10:48 PMNice article
Kamran Shahid on December 29, 2008 11:28 PMThe problem isn't that programming sucks, it's the programming *jobs* out there.
Snacky on December 30, 2008 1:00 AMLooking at the amount of responses and the pure length of some of them, I would say the topic hits the nail :)
Juergen on December 30, 2008 1:50 AMThis is a most righteous debate...
I'm not in the industry... But I try to follow it through others' blogs... Good coder, bad coder... It doesn't matter... At least you're being paid to do what I love to do in my spare time... What I've loved to do since the age of 6... At 34 years of age it is past my time to go back and finish that B.Sc.CS degree and do what you guys do, what with life's responsibilities and all...
Anonymous on December 30, 2008 2:48 AMI'm a programmer (and I've loved playing with computers for 28 of my 37 years), but I do something else for a living.
The mistake is to throw in your lot with the people who think that computers are (a) useful and (b) lucrative.
Malcolm on December 30, 2008 4:22 AMI concur. Getting paid to do something you love is a privilege. Indeed in some ways I think one could legitimately talk about a moral duty in ones approach to programming. For example I think it's pretty close to a 'moral duty' for developers to grok at least the basics of parallel programming in order to enable the next leap in computing that the move to many core offers us now that that the 'free lunch' of fast enough clock-speed increases is over. By accepting that we're all going to have to be a little humble and maybe learn some new stuff then we can help give back to society by ensuring that we continue to be able to deliver engines that keep abreast of ever increasing data volumes. Science, healthcare, manufacturing, education, entertainment – these are just some of the industries we as developers can empower. It frankly rocks to be a developer (even during those 2am debugging sessions).
Tom Kirby-Green on December 30, 2008 4:23 AMI'm a damn good programmer, the go-to-guy for all kind of problems, the person who is always ahead of the curve and comes up with inventive solutions, but somehow I lost the love for this stuff. Anymore the computer is a tool, any dev job I happen to work on is just a job.
I stick with it because the money is good, that's pretty much the truth.
Partially it's because I got tired of seeing my best efforts turn to nothing due to things out of my control (budget cuts, politics, power-plays, management changes, no management, too much management, hype, etc), but that can't be all.
I truly don't know why, but I can't have any more discussions about algorithms, practices, patterns, and stuff like that. I skip company parties because people always end up talking shop, and I get a sick feeling in my stomach. Often I just want to throw the monitor out of the window.
Been feeling like this for over three years.
Maybe I'm just burnt out.
Good article. From my experience, before I continue, I am from India, and I am a programmer, I got into programming because I am interested in programming, not because someone forced me into it and certainly not because it is some hot trend, and certainly not because I want to get a fat pay cheque. I choose to be a programmer. Programming is profession and an art, and a very creative process, and requires thinking. I usually do things my own way, I enjoy writing programs with my own hands, rather than copying and pasting from Google, and also I can't get a good night if I can't solve something. I changed jobs not for pay, but because the work got boring, or because there was no work, or I did not get along with my higher ups, or because the work was not challenging enough or because of too worst office politics. Truly if you are really interested in programming and as long as the pay is enough to pay is descent enough to pay your bills and run your family without any financial problems, by that I mean enough to have a descent life without having to borrow money at the end of month, enough to give you some descent sleep everyday. I am really not convinced with companies paying so much salary and bonuses that people actually amass wealth for their next 3-4 generations. I can take the liberty of quoting few examples I suppose, these highly paid programmers buy 3-4 houses in the name of their children, invest in few places 2-3 cars, or buy a flat that on EMIS and spend the rest of their paying EMIS, I am talking about people who want to display their lavishness, I am not against them enjoying what they earn, but with a little future thought had they been careful it would have helped them now, because the current economic situation is bad, people are losing their jobs, companies are paying half salaries, these high paid programmers who got used to spending money lavishly are suffering because either they have been kicked out of the job, or getting paid half of what they used to earn, ok how does it relate to this topic, because most of these programmers have joined because of the pay and some of the have jumped jobs like rabbits for few dollars more, not because they like programming. I ranted too much, one last thing to say before I close my ranting, lot of people sorry to quote about software testing here, but lot of people I know have become test engineers without having a good foundation in programming, and really have no idea what the hell they are testing and why, they can’t write a descent test case, but they jumped into the bandwagon because the pay is high. I blame the companies for paying so much and hiring people without proper interview process “Hire people because we have a huge project”, I guess the good old concept of “Hire the right person for the right job” doesn’t fit any more. I ranted too much.
Anand.V.V.N on December 30, 2008 5:51 AM"So if a programmer ever hints, even in passing, that they might possibly want to exit the field -- they probably should"
Like Nick said yesterday, I totally agree with everything, but the above statement.
To add to what Nick said; I've felt this way once, and it just turned out to be that my job sucked, and I'd been stuck in a rut for so long, that I'd forgotten why I loved it. Once I started learning something new, my fire was reignited.
John on December 30, 2008 6:08 AMI feel about the same as GVdP.
Mark on December 30, 2008 7:04 AMI agree completely, people that complain like this really don't have a passion for writing software; maybe they did at one point and lost it or maybe they never did.
When you have a passion for programming you will write code at home just for the fun of it, you are always looking at new ways of doing things, and you stretch your abilities by 'tinkering' with things you don't know anything about, like machine learning or signal processing.
I feel very lucky to have found programming late in the game. I started when I was 22 and I have been at it for 11 years (8 professionally). I do not have a degree and I make over six figures. There aren't many industries where that would be possible.
I've also been lucky to work at places where cutting edge technology is a core focus. I can understand someone hating their job but, if you're worth your salt, you will be able to find a good, fun job with a little effort.
Todd on December 30, 2008 7:12 AM>> The second point I would like to make is that anyone saying they are programmers because they love writing code - that is very immature, I'm talking World of Warcraft / Dungeons and Dragons immature. Programming is a job, and not a hobby.
Hey buddy, what's wrong with Dungeons and Dragons?!
Level 20 Paladin on December 30, 2008 9:02 AMConsider yourself lucky gentlemen... I've applied... And never, ever once had an interview...
Anonymous on December 30, 2008 9:17 AM"My hope is that the cheerleading, blindfolded, fanboys like you and Joel, leave the industry. When's the last time either of you debugged a race condition? You manage programmers and therefore have a vested interest in keeping the illusion alive. Programming is a JOB. It is often HARD. It is very STRESSFUL."
@Mike:
I can relate. But success is such a destination that comes from something. These guys apparantly reached it! So..
My observation about the trouble with working as a developer is due to people above, so called "Managers". Most of the time anyone who can't be very techie starts thinking of getting into management and then suddenly we have people making technical decisions, who in first place left it for not able to cope with complexity and competition. Same people then make life difficult for everyone around them and people start thinking to quit or do something else.
jais on December 30, 2008 10:04 AMGet a life, will you people?
It's... it's just a TV show!
William Shatner on December 30, 2008 10:05 AMCouldn't agree more with this post. Being a good programmer requires an enoromous amount of practice and patience for the rest of your career. If you don't love it, you'll either 1) fail or 2) waste a lot of time doing something you hate.
JaredPar on December 30, 2008 10:47 AMGil: The worst programmers I've ever met were very, very proud of their own work and couldn't stand anyone else's. They tend to be the ones who can't learn new tricks. Are you sure you are not one of them?
Don't confuse attitude and productivity. Is Steve jobs the biggest asshole in the Silicon Valley? Yes. Is his company currently the most successful in the Silicon Valley? Yes.
So is Steve Jobs a bad CEO or a good CEO?
There are a couple words I would use to describe somebody who is proud of their top notch code. "Bad" isn't one of them.
W on December 30, 2008 1:43 PMI must be grossly underpaid. If I made /half/ the money your posts which gave dollar amounts said ($70k? Average $90k?!), I'd be rich (for my area anyway (a small city in New York state)).
Your blog makes me want to ask for a raise.
anonymous on December 30, 2008 2:07 PMI didn't get my programming degree until I was 30. Maybe that's I appreciate it more than my peers. It's not something I picked blindly out of the college book, went into because a friend or family member did it or chose because I wanted to make big money. I chose it because I enjoyed working with computers and wanted to learn more. Until that point I worked in just about every aspect of manufacturing from assembly line worker to clerk. When I downsized at a job it took me 5 months to find a new job because I had no education. I may not make $70K but I make a lot more then $8 an hour.
I love being a programmer. I write programs as a hobby. I love learning new languages and keeping up my skills on languages I don't get to use. That's why I hate hearing some of my coworkers talk about how they need to get out of this business. How they hate to write code all day. Well you know what - do it! Stop raining on those of us who actually enjoy what we do.
Mogura on December 30, 2008 3:52 PMYou need to shut the fuck up, you pretentious little turd.
WTF on December 30, 2008 4:06 PMWhat happens to surgeons with shaky hands, or surveyors who can't see through a transit? They become managers. The same thing happens with programmers who can't code or EE's who can't ground their circuits. They still need to eat, feed their families, etc. They can't all sell real estate or build custom furniture. Be happy they're no longer inserting rubbish code in your libraries, and are only asking for absurd schedule and budget requirements. They won't be around very long. They'll be replaced by some failed manager from some other failed project.
Lepto Spirosis on December 30, 2008 4:11 PMHave you been a programmer before the Internet days? Because I'm under the impression that the majority of web programmers are lacking skills when compared to desktop ones. Probably cause they're used so much to filling their application with free code from the web, code they don't bother studying.
jason on December 30, 2008 4:35 PM"But if someone has any doubt at all about programming as a career choice, they should be encouraged to explore alternatives -- and make room for another programmer who unashamedly loves to code."
You *seem* to imply (but I may be misunderstanding) that if you need to explore something else, your love for code is questionable and you should move over. I think you'd be wrong on that one: there is an age where you'd be an idiot not to consider alternatives. Case in point: I started programming at 10, published my first professional video game at 12. My carrier was clear, right? When 17, I decided there might be more to life, and started seriously studying math (I was still a geek, that was my way of exploring the wide world :) ). Then, I tried to understand that beautiful universe and got myself a PhD in physics. And then I decided that programming was still lots of fun and offered better carrier opportunities than physics, so here I am, working for Microsoft. But I really don't know what I'm going to be doing in 5 years, maybe I'll be a writer, maybe I'll do something completely different. What I'm trying to say is that the viewpoint you expose here might be just a little bit narrow-minded. I'd tend to think reversely that a good engineer, given enough time, should be able to be successful and have fun in any field. And maybe they should. Isn't it a little sad to do the same thing for 50 years? Or are you trying to say that you just want idiots out. I'm sorry to announce that this will never happen in any field...
David W. writes:
> But, damnit, I simply can't keep throwing out everything I
> learned every other year just to remain current in this
> industry.
You won't throw anything out. I am 42, and am keeping up just fine.
The trick is to discover that the more everything changes, the more everything stays the same.
I am getting the opposite impression from you in fact, and am dismayed how the majority of fresh grads seem to know nothing.
rblaa on December 30, 2008 7:29 PM"I love being a programmer. I write programs as a hobby. I love learning new languages and keeping up my skills on languages I don't get to use. That's why I hate hearing some of my coworkers talk about how they need to get out of this business. How they hate to write code all day. Well you know what - do it! Stop raining on those of us who actually enjoy what we do."
Don't you have any other hobbies or interests besides sitting in front of a screen 24/7? You do realize that you're wasting your time when you "keep up skills on languages that you don't use", right?
dude on December 30, 2008 8:17 PMI usually try to talk young people out of it when they ask me about doing software for a living... unless they say that they're *really* passionate about it. If it's a default career for them, I tell them that there's passionate, and hungry, people across the pond that will eat their lunch.
@Bill:
"It's not the coding I can't take or don't want to do -- it's the endless, mind-numbing bureaucracy surrounding every little nit."
Ding ding ding! For whatever reason, Joel, Jeff (and others) don't understand that these are the kinds of things what people are complaining about, not programming itself. "Passion" isn't going to solve this. (And let's have a cease-fire on all "passion"-related arguments, please)
Crimson on December 30, 2008 8:24 PMHmm... Your views are true on the other side of the globe as well. I believe programming is more about passion rather than a just a JOB. Well, fortunately enough I joined an open source project and soon going to be a Committer with Apache Software Foundation.
Ashish on December 30, 2008 8:46 PM153 comments, and I'm surprised nobody's pointed this out. Jeff, you're misusing the "dot-com bubble" metaphor. The "bubble" was when things grew out of control, and everybody thought they could become a millionaire and many of them were right. What happened in 2000 was that the bubble *burst*, as bubbles (literal and metaphorical alike) are wont to do, and suddenly there wasn't a bubble any more.
So, no, the present situation is certainly not "another dot-com bubble". Nor is it the burst of another dot-com bubble, because there wasn't really a bubble to burst. (What it is, however, is in part a burst of some sort of bubble on Wall Street.)
Signed,
your friendly local language pedant. :)
Excellent post. I agree that programming / software engineering is a field which works for those love it.
Meraj Khattak on December 30, 2008 11:30 PMThe greatest thing about programming is a solo performance. Programming is an art. The job-thing Spolsky is talking about with his ridiculous $75K claim (you can't buy a new Mac with that money every year), is the teamwork-cubicle job that became industry standard when herding people into VB started in early 90s. At some point, somebody realized that VBfication of programming is actually a piece of junk and GoF threw out a book of songs many already knew, but many didn't, so it became a bestseller. For reference, the GoF stuff was known to programming community in mid 80s. The GoF book appeared a decade later. A true innovation.
Solo performances are indicative of most art performances. I don't know about salary, I never had one. I do what I love for those who have the do-re-mi.
BugFree on December 30, 2008 11:37 PMInteresting post and comments
I would be programming even if I didn't get paid for it. We are pretty spoiled in our line of work. My friends are always envious that I enjoy my job. A lot of people go to work every day and just count the hours till they can go home. If you are a programmer and you feel this way, you shouldn't be a coder. Either that, or you just need to find a new company to work for. If you are a good coder, I don't think there is anything to fear in this economy (yet). There are still a good amount of job postings out there. Employers are just more particular having learned their lesson during the dot com.
For people complaining about the bureaucracy and the politics, that's just the way it is dude. I'm sure some places suck more than others, but there is always going to be a certain level of red tape and politics in every company. I notice a lot of genius coders often lack the people skills to deal with common work place situations. Building up your people skills can do just as much good for you as good coding skills.
@Jason - I agree with you. I am a web developer and I will admit that my programming pales in comparison to a software developer that programs at the C level. Languages for the web are often much more forgiving of bad code. As a matter of fact, you can probably blame the web for spawning so many bad coders.
redblind on December 31, 2008 12:11 AMGarbage collection is a field which works for those who love it.
Sheep herding is a field which works for those who love it.
Plumbing is a field which works for those who love it.
Debt collection is a field which works for those who love it.
Human resources is a field which works for those who love it.
Toll Booth collecting is a field which works for those who love it.
Prostitution is a field which works for those who love it.
Prison guard is field which works for those who love it.
Drug muleing is a field which works for those who love it.
Narcissistic blog writing is a field which works for those who love themselves.
Jake H on December 31, 2008 1:43 AM@Jake H
Many Americans have explained here that one of the reasons they love their job is that it pays so well in America (I didn't know that). It is not all narcissism, it is not denied that money is also an issue.
Have the posts of Jeff Atwood become more or less self referential over time? I don't know, I guess I could find out by doing some statistics but frankly I don't really care.
Almost everyone wants or needs some optimism and self esteem (what ever that may be?), this includes acquiring self esteem by your job life. Those few developers who don't want or need self esteem can read Houellebecq's Extension du domaine de la lutte. Luckily there is choice on this planet.
Theo on December 31, 2008 2:39 AMLOvE iT !!
Jesse on December 31, 2008 3:57 AM>After reading the disgruntled posts here from long time programmers >and hearing so much about ageism and outsourcing, I'm thinking of >leaving the industry. What is a good industry to get into where your >programming skills would put you at an advantage?
A. Web design. Live where you want, work when you want :)
Dude.
I've been in the business for 25 years. I've been screwed over for more than 4 Million in unpaid royalties. I've worked for the biggest games companies in the world.
All that happens is they work you to death and then you get screwed over.
If they can't roll you for a LOT of money they don't give you the job. It's as simple as that. It's not how good at programming you are (I was among the best in the early days) It's will you hit their selfish, greedy and impossible deadlines and how easy is it to rip you off.
I have half a dozen number one selling titles under my belt and am friends with the biggest names in the industry (the older ones).
Games companies want anonymous youngsters, who will remain unknown, work on a sallary, no royalty payments, work 24 hours a day and cope with visionless Producers who are on the same money as them if not more.
A simple test:
Name a musician... any one you like.
Name a book author.
Name an Actor again any one you like...
Now. Name a video games programmer.
Obviously this test only works for prople who arn't IN the games industry. But considering the video games market makes more money than Hollywood and the music industry combined, I think its shocking that no member of the public could name a single games programmer.
Not one.
Instead of promoting programmers (the talant) they promote the business exec.
"Now we interview Terry from accounts..."
"Tell me Terry, how did you manage to develop that fantastic game"
"...well er.. I sorted out the finance, got some people who think they know what they're doing (called producers) had them sit on an infinite number of monkeys and hey presto..."
I briefly considered a different career, mostly due to idiotic management that had me stuck in development hell. It had nothing to do with economic circumstances, but more with being fed up with incompetent bosses.
My actual thinking was that I enjoyed programming more when it was a hobby than when I started doing it as a career, so maybe I should turn it into a hobby once again.
Thankfully, rather than pursuing a different career, I found a better job with competent management and am quite happy. So your career might not be the problem, it might just be your current job.
Evan on December 31, 2008 7:17 AMIn France, software engineering seems to annoy the managers a lot.
We have an elite culture that basically explain that your manager knows as much as you do, and even more. He/She is always right, including when wrong (Dilbert would feel at home). And software engineering explodes this simplistic (simpleton-minded) model.
So the software engineer is expected to continue his/her career as a manager, even manager in other fields.
So, growing experienced as a software engineer is just seen like being unable to evolve, even if you prove the contrary (to avoid becoming obsolete, the engineer must always learn new technologies). So, don't expect increase of salary beyond some limit, because beyond, it is a manager salary.
And managers are always better than everyone else, aren't they ?
Daniel Glazman ( http://www.glazman.org/weblog/ ) wrote a whole blog about that:
http://disruptive-innovations.com/inFoRmatique/
(in french, sorry... the title can be translated as "All the [BAD] shapes of french computing industry")
(continue...)
This explains that, even as I like computing, even as I do program at home, just for the fun of it, I wonder, sometimes, if I should either move away to other countries, or move away from an interesting career just to avoid being seen like the "old geek wanabe from cubicle 13".
paercebal on December 31, 2008 9:50 AM"I spent Christmas Eve setting up servers."
Haha!! Me too!!!
Dayo on December 31, 2008 10:32 AMOh Yes, I Love programming and yes I was ready to do programming even I was not being paid and I did this many times. I am programming when I was just 9 year old. But now I have family and I need money. So I am really happy to be paid for my passion of programming.
Sometimes, I think, if I was not a programmer then what else can I do? Oh man, you won't believe me, I am really zero in everything else. I can't do anything else to earn good money.
BUT I LOVE PROGRAMMING. And thanks to my Boss for paying me for my passion :-)
rahzamkhan@yahoo.com on December 31, 2008 10:39 AMIf having outside interests and concerns equates to being a bad programmer, I suppose I am a bad programmer, and I would guess most other female programmers also falls into this category. I completed degrees in computer science in college because for me it was always easy and enjoyable similar to doing logic puzzles or playing scrabble. I sometimes read coding-related books and blogs, but am more interested in process and new concepts than in memorizing technical details. As a team lead, my favorite days at work are still those including an animated design debate, or pairing with a teammember to help them through a tough problem.
Yet I'm ultimately more interested in technology for the sake of human freedom and happiness than technology to fool around and create yet-another-imperfect-thingamabob, and I am potentially interested in other careers if I find one that lets me more effectively help those in extreme poverty than earning a good salary and living simply to give the rest to charity. I don't go home at night and program (well only sometimes, and only because it has practical application for my family's small business), and I don't believe coding is the only possible career for me. Instead I spend time with family and friends, I draw, I play soccer and hike, I volunteer, and I read across a variety of subjects/genres- biology, physics, math, economics, linguistics, multicultural literature and poetry, religious studies.
I don't expect to be a rock-star technologist when I don't spend every waking hour coding, but then, in my current consulting job I am already more technical than most, and it doesn't take rock-star-skills to write good-enough code for most business applications.
Also while we're on the subject, am I the only person here who knows my own code is imperfect and sometimes IS the ugly code I will refactor and improve over time as I find ways to extend and reuse it? Am I the only person who sometimes enjoys the challenge of wrapping tests around ugly legacy code and pushing/pulling it into a prettier shape? Where do you all work? because I have yet to meet a fellow-coder that can create unimpeachable code without several times collaboratively reworking it.
Ami on December 31, 2008 11:20 AMProgramming is fun. Programming is satisfying. However, programming, like law or medicine, is one of those professions where you are tacitly compelled to work long hours (50+ per week) for salaried positions. If you don't then you are relegated to the sidelines, which take the form of boring projects, unprestigious organizations, lower hourly wages, censure, and (in economic times like these) unemployment.
There is no shortage of work for those willing to put in 50+ hours of work week in and week out in programming, law, or medicine. There is a shortage of work for those only willing to work regular hours because they have other preferences and obligations for their time. Few programming shops run like Fog Creek or 37 Signals in with respect to working hours.
From my observations, a disproportionately and noticeably high number of successful programmers have weak family/community relationships, poor health (usually in the form of obesity), and narrow social circles. This is bad news for those that value these things. (I am not saying that all programmers have all of these, but the number is noticeably high, and I am one of the fat ones). Putting in 12-20 hours of work a week on top of "full-time" hours means that you are not spending that time developing family and community relationships and your health. Furthermore, few programmers make the kind of money that would attract a mate in spite of the long hours (unlike medicine, law, or Wall Street). This does not make such programmers bad people or losers, any more than is a programmer who works regular hours (until he is laid off in a downturn) but who develops family and community relationships and keeps his health.
It comes down to personal values and choice. If you value family and community relationships and your personal health, then programming in salaried jobs is a tough and undesirable career. However, if it is your sole passion and you don't value these other things, then by all means there will never be a shortage of work.
I know doctors, lawyers and programmers who have taken a hit in their careers because they won't work more than regular full time hours, and they have consciously chosen to pursue family and community relationships and their health. They're all capable, but they are also healthy and obviously participate in family and community.
As a programmer you probably enjoy your job. As long as you are able to choose a job that balances that with your aspirations of family/community relationships and health, you will want to stay with it. However, if you are forced to choose between one or the other even though you value both, you should probably get out, or find something that would make you happier. Or you could choose the career and sacrifice the health and relationships.
For Joel, I would bet that $75k is a low wage for Manhattan given the cost of living. Also, most software folks don't invent, design, and engineer the future. They actually fix what others have invented, designed, and engineered. Still fun, but not as exciting as the former.
Jay Godse on January 1, 2009 11:56 AMI don't trust programmers who haven't done some open source programming.
If you don't want to do programming for free, you have no place on my team. But we pay well anyway.
Max Howell on January 1, 2009 4:25 PMAt 9pm on December 31st I was still on my computer reading articles on error handling in stored procedures and skimming through Code Complete. My wife forced me go to the store and buy some beer and chips to celebrate new year's eve.
I don't just love to code, I think I was built for it.
Joe on January 1, 2009 5:11 PMGreat post.
I completely agree. i've worked with some terrible programmers.
These days where I work we won't employ anybody until they go through a minimum 3 hour practical test (we give them a PC, a compiler, a problem, and they have to come up with an executing solution). And the code has to be reviewed by the peers. If anybody objects or says "that guys is an idiot" or "I can't work with him" then, no hire. (I've learned something from Joel, here).
Seeing as I'm the manager, I deliberately keep out of the practical test process and evaluation.
And I've just spent my Christmas break writing a program that will soon go up as a free download for people with NAS drives who want backup. Because I bought a NAS drive and the software that came with it is utter crap.
I'll write software for free.
ashleigh on January 1, 2009 5:21 PM"I don't trust programmers who haven't done some open source programming."
Get a life nerd.
ben on January 1, 2009 9:20 PM"These days where I work we won't employ anybody until they go through a minimum 3 hour practical test (we give them a PC, a compiler, a problem, and they have to come up with an executing solution). And the code has to be reviewed by the peers. If anybody objects or says "that guys is an idiot" or "I can't work with him" then, no hire. (I've learned something from Joel, here)."
LOL what a bunch of nerds.
ben on January 1, 2009 9:22 PM"From my observations, a disproportionately and noticeably high number of successful programmers have weak family/community relationships, poor health (usually in the form of obesity), and narrow social circles"
Why do some people think you have to waste all of your time working extremely long hours at a job or have family/community relationships? Haven't you heard of hobbies? It is possible for a single to pursue happiness without working himself to death.
. on January 1, 2009 9:25 PMI agree with the above poster. Just because you don't have a family or kids doesn't mean you should be expected to work extremely long hours. What rubbish.
Lance on January 1, 2009 9:28 PMI love programming, been doing it since childhood, and took programming jobs as it made sense to get paid for it. I generally outstrip the abilities of my coworkers wherever I work, but I have for a while now wondered if choosing it as a career is what I really want.
Twelve step on January 2, 2009 4:44 PMAs someone who's loved programming since I was very young, may I ask what's wrong with a careerist gold digger? This isn't a competition for some intellectual snob award. There's stuff that needs to get done, and the theory goes that a free market will pay people more to do that work, which will encourage more people to do it. But that doesn't seem to be the way it happens. So things don't end up getting done, but you get to maintain your ego. Ironically, it's partly that misplaced pride that stops other people from getting into the field, particularly in the case of women.
If a field in high demand can't motivate a reasonably bright person to take a well-paying position right out of school, then the problem is the field, not the person.
"I dunno, I like programming because it's easy once you know where to find which piece of code. Most things you want have allready been written before you and are just waiting to be picked up.
When I work on something new, I always use the same structures I used on previous programs. Sometimes I even just copy-paste, since it's all that needs to be done."
The quote, above, from a poster is what a former boss stated as being a coder not a programmer. A coder will just toss bits and pieces of code together to make something work, and not always very well. Also, as mentioned, they tend to use the same structure for everything they do. A programmer will write the code appropriate to the job and make sure it is clean and easily readable by others.
There's nothing wrong with reusing some code but just tossing bits of code together and kind of making it work. But,a real programmer will take pride in what they do and how well it works and looks.
Greg on January 3, 2009 1:34 PM[offtopic]
Hurgh. Nice article, but why add this patriotic picture of "America"? Unlike a profession - which you should love or leave - you can change a country. From within. Like ... becoming independent, abolishing slavery, shutting down certain prisons ...
[/offtopic]
Krischan on January 4, 2009 8:20 AMWell, I am not a programmer, and I love my job. I get paid well too. I work at a National Lab :)
Kris on January 4, 2009 9:50 AMI still look at programming as a job. I have many other interest other than programming, I love computers but programming is how I earn my living.
I would never do it for free, unless you count college :) i listen to "the joker" on this one... "if you're good at something, never do it for free."
i know i'm not a great programmer, I'd never be able to work for apple or microsoft or google. I don't want to. I do my .NET business apps, and get paid well and i'm good to go on that.
Great article.
I like programming because it involves creativity, logic and rational thinking. It is like art.
amir on January 6, 2009 12:47 AMI always have this welcome chat with every new programmer that joins the team I belong to, and one of the thing I tell them is this:
"The ones that endure in this craft are the ones that once exhausted of coding, replenish their stamina building some more code"
We always complain about tight schedules and the omnipresent asshole driven development... but to be honest I firmly believe that those bad things are precisely the spice of this business, its our version of extreme spots.
I'm not claiming that this is the best way to do things and that we should keep things the way they are, hell no! My point is that being a programmer is also being a helpless perfectionist. We are never happy with the current state of things.
Just try this exercise... try to remember how things were on your first or second job, specifically try to remember the kind of decisions you boss used to make and the face he used when he let you know that you should threw away your weekend plans because he had just promised something unreachable to someone really important. Now picture the same scene in you current job (for a lot of us that means a 15 to 20 year leap)... do you get my point know?
The current asshole is a joke when compered with the asshole when you started. This is not because asshole-ness tends to disappear in time (on the contrary), its because YOU have changed and you have altered your environment with that, the same asshole doesn't appears the same to a pimpled-mayonnaise made-trainee than to a old fanged wolf-carved in stone-hell forged-developer. And we have new toys that make things easier and on top of that, we have managed to create a really strong global front (there is always someone on Bangalore, Mexico or New Zeland willing to help you with that tricky maneuver at 3:00 am your time).
Personally I feel really lucky to be in the front line trench of the keyboard war, this is may passion.
So throw us some more blind decision making assholes, we can chew them for breakfast.
(sorry for the broken english, Im not from around)
Chepech on January 7, 2009 9:02 AM"From my observations, a disproportionately and noticeably high number of successful programmers have weak family/community relationships, poor health (usually in the form of obesity), and narrow social circles..."
I suggest you to quit what you are doing (you'll probably call it a job, I call it cubicle slavery). If your job doesnt gives you the time to have a life outside the 8am-5pm period you are not living, you are merely surviving.
I run a team of 6 programmers which is part of a company that employs 5k programmers of all ages, flavors and colors. I haven't seen a overweight hermit loser in years, I know only two guys that wave weight related problems and those are caused by a glandular disieasse.
Here is my list of hobbies:
- Digital Painting.
- Basketball.
- Gym.
- Active Member of the Foundation for Reason and Science.
- Makeup bed time stories for my children (I have 2).
- I go at least 2 times a week to the movies with my wife followed by a long dinner to discuss the picture we just saw.
- World of Warcraft (I have a lvl 70 tier 5 Enhancement Orc Shaman) and I run a rapidly growing guild <The Order of the Lidless Eye> =) .
Did I mention I live in a 3 world country which happens to be the 2nd most obese of the world? (Mexico).
I don't think that your current state is caused by your problem or as you call it "programming job".
The bottom line is... you don't need to sacrifice the really important things in life to make a solid programing career, you just need love (to endure asshole-ness) and a bit of discipline (to grow).
Well, I love coding. Love it to bits.
But I suspect that the code I write is horrible code. I don't love the *coding* so much as I love *making things with code*.
It is a big distinction to make. I love my job, (web programming) and my particular work environment means I have so much freedom (too much I bet) I can basically do implementations however I want. Which leads me into implementing very similar things in a plethora of the methods in which it can be implemented in the coding environment I use (not all methods are 'good'). In short, what I make is all over the place unreadable crap (I am being brutally honest with myself here give me a break! :).
If I were working in a team (and did the work I am doing now - I doubt I would be as unstructured if I were in a team), and my team members loved *coding*, I think *I* would be the person they would claim has no business coding, but it's not for lack of love for programming. So it isn't so much lack of love of the job/coding, but perhaps lack of *respect* for the code that I spit out in my attempt to come up with a solution for my problems.
PeterA on January 8, 2009 4:53 PMIsn't this just about being good at your job, regardless of industry? How attentive you are, thorough and generally interested in the task you do? Most programmers out there aren't having to solve Google/Microsoft/John Carmack type problems. Of course you can be thorough and attentive but still not have the formal training or experience to know what you're doing, or to do it properly which is again not related to a particular industry.
Chris on January 9, 2009 3:41 AMI read almost every comment so far and the impression I get is that everyone would be better of if people were capable of self-regulating and not willing to do overtime and take other BS from people.
I saved this comment from another site that seems fitting here with regards to getting respect for you and the people in the industry:
"If you work slavishly then people think you are powerless and do it out of desperation, in the manner of begging. For example, if you work 12 hours it is because you believe your 8 hours is not good enough, so you have to compensate for your shit skills by working more along the lines of "well I am not that productive per hour, so let me work more hours in desperate hopes that my employer will notice me and at least refrain from firing me, or at least put me in the back of the line when firing." It's a fear-based, victim, loser mentality. And funny enough, if you stop doing it, people value you more. If you kill yourself for the company, you get fired with the rest of the workaholic office flotsam.
It's the exact same dynamic that exists between men and women. Men who are desperate for women and who bend over backward to please women are despised by women. Women hate the "nice guy". And the corps hate the "nice employee" too for the same reason.
I know this from experience. When I was "nice", I got zero respect and my only reward was an ever-increasing workload and responsibility with the ever decreasing decision making power. So if something ever went wrong it was my fault, even though I had no decision making power to do it better or even just plain differently. I was a nervous wreck on hastening to take my place 6ft under with no other motivation besides fear. When I realized how pathetic that was, for me and for others around me (even for the corp itself), I changed and never looked back. I'd rather die free than be a slave"
dick on January 10, 2009 5:14 AMi do not have the patience right now to read all the comments so i apologize if it's been said by someone else.
i find myself on the other side of that same coin. i would like to be a programmer. i am a programmer. i love to program. i just can not find a decent job.
i apologize to joel tho, i will not work for no pay. i will not work under crappy conditions where i have a 19" monitor that's been in the company longer than me and the person i actually filled in for.
regardless, the situation in germany is quite different from the one in america. i don't have any formal education and therefore it's almost impossible for me to get a job as a programmer even if i could outperform their average hire by a factor of 2.
Alexander Knopf on January 11, 2009 6:56 PMI do not agree sooo much: I started Linux for fun, but my plans were to dominate the world some day.... buaaaahhhh ah ah ah ah.
So now I am becoming a millionaire, but it was all planned from the beginning!!
Linus T.
Linus Torvalds on January 16, 2009 12:38 AMAnd another thing...
I wonder how many are self-proclamed WONDERFUL programmers here, reading the answers in the blog...
everyone think to be much better than the colleagues in their company...
Linus T
Linus Torvalds on January 16, 2009 12:41 AM
> I will note that the best programmers I've known have all had a
> lifelong passion for what they do
Some of the worst programmers I've known have had that same passion. Some of the best I've known barely look at a computer out of working hours. "Passion" is neither necessary nor sufficient to become an expert programmer. It might make you a **happy** programmer, but that's not at all the same thing.
> So I might be a little biased.
Indubitably.
The reasoning here sounds suspiciously like:
"I have attribute A. I'm a good programmer, therefore all good programmers must have attribute A".
There are 2 major problems with that - one a flaw in logic, one a possibly dubious assumption :-)
Jim Cooper on January 19, 2009 9:55 AMI started my programming since 1996 when I joined Kathmandu University in Nepal and my friends who were already perfect in programming taught me a lot. Currently, i am a blogger, research analyst, code reviewer, and Quality Assurance Expert.
Still I use Netbeans to keep up the programming spirits high and regularizing unit testing.
I agree with you. However if you were in another Country, you might think different. You can live your life well as a developer in US, UK or in some developed country but it could be different in others.
I think we are working for 2 things: Money and Passion. In my country (Vietnam), It's quite hard to satisfy both of them if you do coding the rest of your life. Everyone wants to reach the higher position to have better salary although they could leave his/her passionate job. For instance, salary of a Project Manager often 2 times higher than a Developer's salary so who doesn't want to be a PM? :D.
Anyway, it's interesting article.
hey --
dont behave so scholarly about the work you do.I am a programmer too and thats fine- far too many people are interested in this industry.Its the same in other industries too.Not every gets to do what he/she likes to do.Sometimes the circumstances ( the money) drag people into this profession.I am not talking about USA but there are third world countries such as China and India with some outstanding talents while others have entered through circumstances(the need to uplift for money)
I mean ,you are a great programmer.fine.Stay humble.Learn to appreciate these people.If programming is a great profession,it will evolve by itself( like the dotcom bubble).Things that go up,come down.US has had to face recession.why? why did this thing happened? but it will improve itself..so programmers are brainy.fine.but be considerate to others too.Above all,its more important to be HUMAN and not programming robots.Thats all.
John cenn on February 28, 2009 3:47 PMIf I did not program for a career I would do it as a hobby.
I believe that might be what Joel meant when he said they would do it for free.
Practicality on March 6, 2009 2:07 PMI love programming and solving puzzles because doing so gives me the possibility of making life better for everyone alive, and especially my family and everyone I love in this world, and on top of that for giving tools to the next generation to expand upon my knowledge to do the same to greater extent, with less effort, and more time to spend not working and with family, caring for each other and doing works of charity and making sure we look after our neighbors. Yes, I love programming, but only so much as it is a means to the end described above. Besides this, it is of no purpose or enjoyment.
Martin M. Musatov on March 12, 2009 12:04 AMWow, gotta love the 180 from your own column here: http://www.codinghorror.com/blog/archives/000586.html
So are you your job or aren't you? Maybe you're not but everyone else is supposed to be. Buddy, when the whole world stinks, smell your upper lip.
ES on March 26, 2009 4:48 PMHi guys. The best of us must sometimes eat our words.
I am from Bahamas and also now am reading in English, give please true I wrote the following sentence: "Airline tickets wholesaler specializing in unsold airline seats at bargain rates and last minute special fares offered by airlines."
Thank you so much for your future answers :(. Vanessa.
Vanessa on April 6, 2009 3:46 AM>> But, most people in the world simply can't handle the deep dark
>> reaches of the computer-machine. I mean, come on, let's face it.
>>
>> So, for the people reading this, start designing stuff that people
>> want to buy. And that stuff better be useful. Because the public
>> demands good software.
This comment got my attention. At the risk of sound like a know-it-all -- don't you see these 2 paragraphs contradict one another?
Not that I suggest "those in the know" start selling crap because customers can't tell the difference...
But do you really think the "business-minded" or 90% of people in general care about how the code looks? Or how beautiful it is? Or even what it really does (as opposed to what it looks like it does, or the GUI looks like) ?
Perhaps I should thank them for not caring, since it opens a niche for those who do.
But "Because the public demands good software." are you kidding???
Good as opposed to great, complete, honest, efficient, consistent, clear, & moral maybe...
Seems to me more like:
Moral, adj. Conforming to a local and mutable standard of right. Having the quality of general expediency.
Immoral, adj. Inexpedient. Whatever in the long run and with regard to the greater number of instances men find to be generally inexpedient comes to be considered wrong, wicked, immoral.
Someone please tell me why I'm wrong, I'd love to hear it.
I understand if there's no market for what you are coding, there is no incentive (but you can do something else to fund your hobby).
But just because there is a market for something does not make the code better. In fact, I'd argue it tends to make it worse.
At the risk of anyone following my advice ending up homeless because they "followed their dreams/hobby" instead of what was popular --
dear god, please don't think the code you see at work is all there is!
SJ on April 13, 2009 3:51 AMNo economic boom or downturn is going to stop 'handicapped' programmers from getting into the field. The state of the industry is that you can higher a construction worker to do programming as long as they have a couple of years of experience. So, you have flocks of people with all kinds of certificates and no formal education getting jobs that they have no business doing.
The worst thing of all is that after such despicable nonsense, we have companies that have the courage to call their programmers 'software engineers' when they ought to be sued for even attempting to use the term 'engineer'.
The industry will not change and you will still have the majority of the projects being behind schedule or never completed because you have idiots working on them. And the only way to change that is to strengthen the curriculum for computer science and finally turn programming into a certifiable engineering profession. Unfortunately we're as far away from that as we are from reaching another galaxy in the universe.
Serge Duval on July 26, 2009 9:09 AM| Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |