views:

1631

answers:

13

When I was a teenager (about 8 years ago), programming used to be fun. That alone led me to study Systems Engineering. (Later, I found that SE wasn't only about programming, but that's another story.) However, my first experiences working as a programmer haven't quite been what I expected. Most of the time, those I work for don't expect me to carefully design my programs before I write them. They seem to think of programming as a physical production process in which the most obvious way to improve productivity is to speed up the process.

Writing code that validates data input against business rules is boring, but tolerable. But being forced to do a half-assed job just to finish projects under unrealistic schedules puts me off, to say the least. It's the opposite of what made programming so attractive to me.

What do I do to fix this?

+35  A: 

Find a better place to work?

I know it's the simplistic answer, but there are places out there that treat programmers well and require top notch coding.

And if you can't find one (or get in on one), try starting your own business.

cgyDeveloper
I second the motion.
Steve
I will file an appeal with the recorder.
Alex
Pretty much the best solution. Sounds like he's working in a very corporate environment as a code monkey >.<
MunkiPhD
I'd like to add to this. My grandfather once gave me advice about a career/job scenario:"If you aren't happy with things which you can't change and can't put up with, it's time to move on."Sometimes it's the tedium of the work, other times it's the people you're working with. Applying this idea has generally worked out very positively for me.
chsh
* cough * Google
Partial
* pat on back * Yahoo. Better?
Alex
@Alex, nicely said, sir. @Partial, what was your *point*? o.O
David Thomas
A: 

The commercial realities of programming need to be accepted, and embraced.

But also, it's just a job.

I happen to get a lot of enjoyment out of my job, but at the same time, I have lots of little side-projects that I work on at home, at let me get that bit of 'perfection' that we are sometimes looking for.

Don't fight the commercials though; it is important to deliver programs, and you can better your software dev processes, in general, by coming up with schemes to make this process deliver stable code, regardless. Writing unit tests, and enforcing them for builds, is something that helps.

-- Edit

I will say, getting fed up as happened to me, in previous jobs though. It's only natural some times. In these times, focus on other things. Start a project at home, or maybe don't even program at home at all, build something using wood :)

Noon Silk
Wood is so 1900s.
Alex
Okay, magnets then.
Noon Silk
Magnets are so 1950s.
Alex
Legos. And if you must program, Lego Mindstorms.
Ryan Taylor
Alex
+7  A: 

I suspect that the first and foremost answer you'll be given is, probably, the best: find a new employer.

I realise that's a lot more easily said, than done, but if you loved programming, and have a career within the field, it's a shame to see that wasted. Are you still programming with hobby-code; if you're not doing it for fun, then it might already be time.

But still, a new employer with more interesting challenges would be a better first step to soemthing new. Find the fun again.

David Thomas
+3  A: 

Say no and accept the consequences. That may mean finding another position.

If you asked a doctor to amputate a healthy limb, you'd expect him or her to say no. If we want to be treated as professionals, we have to have a professional code of ethics. Writing poor quality software to meet artificial deadlines does not serve the common good.

TrueWill
Unless meeting a deadline is seen as intrinsic to the quality of software.
Alex
I have had this happen when an important demo date must be met to promote your new product, say at a conference. Accumulating technical debt in such a scenario stinks but sometimes it is a part of life.
Ryan Taylor
I had the opportunity to hear "Uncle" Bob Martin speak recently. He disagreed with the term "technical debt". His comment was something like "It's not debt, it's making a mess."
TrueWill
I second Bob Martin's opinion!
Eduardo León
Ryan - I'd agree, but would try to consider that "throwaway code."
TrueWill
+25  A: 

There are many possible courses of action:

  • Suck it up. Programming is like many jobs: you get as much out of it as you put in and it's all a matter of attitude;
  • Change jobs. You might think other places are the same but other companies doing the exact same thing can be vastly different. Also, if you don't want to be doing this CRUD-type software, change industry;
  • Change position within your company. Not sure if this is possible but it might be worth talking to your manager about your discontent (but keep it positive);
  • Find a more interesting programming outlet out of hours. Open source, personal project, whatever. Part of general work dissatisfaction tends to be related to not having a whole lot else going on, in my experience;
  • Find interesting non-programming things to do out-of-hours. This can help make otherwise boring programming tasks a little more tolerable.

Ultimately life is too short to do something you hate.

cletus
'Ultimately life is too short to do something you hate.' Aahhh, I hate working, but love spending money. What do I do?
Alex
Win the lottery or change your environment (job/attitude).
cletus
I'll go with your first suggestion. Oh, darn, the mega million lottery is over :(
Alex
You forgot: "* Rant with your full name on the interwebs and let the problem take care of itself."
Andy Gaskell
@Andy: that's a good point. :)
cletus
+4  A: 

Unfortunately you seem to have fallen into the same trap I did. When you do your hobby as a profession you no longer have a hobby. Programming can still be your hobby especially if you differentiate it from what you do at work. Doing real time embedded C at work? Do some web development in Python for a hobby. Probably the best thing would be to find something really different say horse back riding, running marathons, or building furniture.

stonemetal
I work for a PeopleSoft consulting firm. My job consists in developing customizations, functionality the ERP doesn't come with and the customer needs.
Eduardo León
+6  A: 

Or start your own (consulting?) company.

Everyone here suggests working for other people. If you feel like your coding style is just that much better, then go ahead and produce your own code that way for whatever customers you can find, starting with freelancing websites (like rentacoder).

One thing you may discover is the business reality of whatever market that you're in is that programmers may need to be nimble. While one solution may be theoretically pure, if it takes five times longer to code than the plumbing solution, then it's probably not so good to be so pure.

I've learned a lot from my employer. He is very much in the as-fast-as-possible-specs-are-a-waste-of-time camp. I've forced a build process, a bug tracking solution, and source control, but in the end, if he wants it by the end of the week, we'd better be able to produce it. Why? Because sales depend on it, and the sale can't be made, then it doesn't matter how pure the code is. The nimbleness of a small company is one of the only real advantages it has over a larger company with more money to throw at a problem. If your stance on code purity flies in the face of that nimbleness, then maybe your purity is misplaced.

But maybe your code is just that much better. If you know your market segment, if you can get customers, go off on your own (but don't poach any from your current employer, there might be laws against that one) and try to succeed with your approach. If you do, if your customers are happy and your producing code up to your standards, then you were right. If it doesn't work, then you might need to reevaluate how 'pure' code should be, or whether your approach is the right one.

mmr
In the US the problem with rentacoder etc is that you face $5/hr competition from India etc (nothing wrong with competition, or India, or indian programmers). I mean this purely in relation to the cost of living which is much higher in the US.
Alex
I had several students that paid for their tuition and then some through rentacoder, so I think it may be a viable thing to just get started.
mmr
+5  A: 

The day has 24 hours, only ~8 of them is for your work. For me, if the projects I'm doing at work are boring and/or stressful, then I tend to have fun private projects I spend the evenings and nights with.

If my work projects are fun and challenging, then it seems like I spend the nights in the bed with my wife instead.

Either way, I'm happy. ;)

Stefan
I actually work about 11 hours a day. However, I only work from Monday to Friday, so a Saturday personal project isn't a bad idea.
Eduardo León
You are working too much
Alex
+8  A: 

Sadly, your experience is reality. For every hour you program, your employer is paying you. Your employer doesn't know how successful the product you are coding will be. It just needs to be good enough to be able to discover if the product has the potential to be a success.

Some call this concept "fast failure". Finding out quickly if what you are doing will be a success or failure, and move on to the next idea. If it's succeeding, iterate on it. This is especially critical in new platforms where there is a huge advantage to being first.

Look back at the Facebook application platform and the iPhone app platform, both fairly mature now. It's harder to get noticed now on those platforms. The quality of the applications have improved immensely since the beginning.

If you want to write well designed programs, you need to find the right industry. For example, one that is not short term market driven, like research. NASA is probably the perfect example of a company that would require well design programs. When your code is running on a system millions of miles away, you have to get it right the first time.

Brent Baisley
I wish there were more companies like Apple, which like doing less things and doing them well.
Eduardo León
@Brent Baisley: Very well said. +1.
Alex
Not sure I'd call NASA a 'company', though. They have a very different mandate than being driven by a market specifically because they are not a company.
mmr
+1  A: 

Best advice I ever got when I was in this situation: You can either change where you work, or change where you work.

Jeff Tucker
+2  A: 

Are you alone in this sentiment, or do your programmer colleagues share this frustration? If so, you could try and put up a unified front.

I wouldn't quit your job that easily, try and improve the one you have now.

David Rutten
Unfortunately, my peers don't care too much. "It's a fact of life", they seem to think.
Eduardo León
+3  A: 

But being forced to do a half-assed job just to finish projects under unrealistic schedules puts me off, to say the least.

Unrealistic schedules are common in software engineering. I don't know if you will find it different even at the best of companies (except maybe Fog Creek?)

You can leave the company and hope for the best. Or you can stay and learn as much as you can and gain influence. Then perhaps you can bring about the changes that you desire.

But be forewarned, there's a good chance that when you've matured enough to see both the technical and business side of what you are doing, you will realize that some of the things that used to keep you up at night (e.g. perfect design) are not as important as others (e.g. delivering what your paying customers want on time).

DSO
While I'd agree that perfect design is less important than delivering value to the customer, ease of maintenance allows developers to **continue** delivering value to the customer on time.
TrueWill
A: 

Get so good that your day rate is so high that you don't care what you have to do for it.

Chris Needham