Just 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).
On 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.
A 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!
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.
@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.
My 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)
@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.
Jim, 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.
Before 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.
Where 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?
I 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.
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).
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.
Haven’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.
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/
There’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.
I’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
By 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?