

Working as a programmer - is it what you thought it would be? - luckystrike


======
johnrob
Since my best and most enjoyable programming happens at home during off hours,
I wonder about how good the job is. If you happen to work at a company that
'gets it' (let this mean whatever YOU want it to mean, different for
everyone), it's probably the best job around for a tech oriented person.
However, LOTS of companies don't 'get it', and they make longstanding
infrastructure decisions that make our job less fun and productive.

~~~
Tamerlin
It continues to amaze me that so many companies, my present one included,
recruit people with a lot of talent and experience, pay them a lot of money,
and assign them exactly the same work as the interns.

In some cases, they end up having the interns build the new stuff and the
seniors maintain the crap that the previous interns built... and they wonder
why their systems are bug ridden, poorly thought out, and require gargantuan
amounts of effort to fix.

~~~
jrockway
_they wonder why their systems are bug ridden, poorly thought out, and require
gargantuan amounts of effort to fix._

I think the problem is that nobody wonders about this. They think it's normal
for software to be broken and very expensive to maintain.

If you watch a novice user use software, you'll notice that they blame
themselves when the software fucks up. If they're in a building that
collapses, however, they blame the engineer. I'm not sure how we convinced
users that bad software was their fault, but it's not something I'm proud
about. "Civil Engineering" means something. "Software Engineering" is
meaningless.

The other problem is that programmers don't know what users want, and users
don't know what to ask for. So we guess, and they're unhappy, but they don't
know why.

 _sigh_.

~~~
Tamerlin
Good point.

One depressing thing that I've noticed is that most of the best people I know
in the field are seeking to leave it. This community is for an exception,
although it probably has a lot to do with the fact that I was in the DC area
for most of my career, and most of the work there is government-related in
some fashion, even in the startups.

Still, the fact remains that because people are willing to accept crappy
software, the bar for entry is low, and the industry has a tendency to drive
out the good people by treating them the same way that they treat the bad
ones, which is to say, like peons.

------
wallflower
Working as a programmer.. I love the creative aspect where you build up
something from scratch (translate photoshop/powerpoint mockups into code). I
like fixing bugs because it appeals to my perfectionist nature - bringing up
overall quality - I don't know why some other coders are loathe to fix bugs.
It's easier to quantify what you have done, as opposed to my
marketing/business friends who have to make a case for what they've
accomplished. And you make enough money usually to support a lifestyle outside
of coding (travelling, hobbies limited only by your current limitations).

~~~
jrockway
_I don't know why some other coders are loathe to fix bugs._

It's because they think that somehow their first revision is going to be
perfect, and they've failed if there's a bug in their code. Also, it's
annoying when a "bug" is a change in the spec.

~~~
wallflower
It's not a bug if you need a requirement to fix it.

That's my personal rule. Yes, you still need to change the code but it's not a
bug.

------
bobochan
It is so much better than I ever could have imagined that it would be. It is a
daily game of show and tell where we get to show off the cool things we got
working. If you had told me 20 years ago how much fun it would have been I
simply would not have believed you.

Programming opened the whole world to me and I've written code in Africa, Asia
and Europe in addition to the small New England town where I live now. The
money is respectable, the hours are flexible and I always have the opportunity
to learn something new and try a different approach.

I simply cannot imagine a life where I do not get to run up the stairs to my
office and bounce in anticipation as emacs fires up for another day of
profound geek joy. I do not ever plan to retire, they are just going to have
to pull me kicking and screaming away from the keyboard someday.

------
sofal
I have a 15 year-old brother who shows some knack for programming. I've been
thinking about what kind of career advice I would give him related to
programming. I might say something like, "Being a software developer is
awesome, but being a corporate software developer is awful."

Sometimes I wonder if I should just tell him to keep it as a skill but eschew
it as a career.

~~~
gaius
I think (and I discovered this far too late :-( ) that the most interesting
programming is done by people who aren't really programmers. People who apply
software to knowledge domains. A biochemist can learn Python a hell of a lot
more quickly than a programmer can learn about protein folding, for example. A
friend of mine is an astrophysicist and writes programs to model stellar
events (then goes and checks his results with uber-telescopes). Me, I can
connect interfaces to apps to data, I do a pretty good job of it (tho' I say
so myself!) but what am I _really_ adding to the sum of human understanding?
Hmmm.

~~~
dreish
Well, I would argue that much of what has emerged on the Internet in the last
15 years has been novel.

And a biochemist can learn the basics of Python about as easily as a
programmer can learn how to operate basic lab equipment. A biochemist could no
more easily add to human knowledge about compiler optimization than a
programmer is likely add anything to protein folding. If anything, I would say
the opposite of what you claim is true -- programmers are more likely to be
interested in leading-edge science as a hobby than the other way around.

~~~
jmzachary
Except that a biochemist learning Python to solve problems he/she has in
protein folding research (or whatever) is a useful skill to get things done in
his/her field. A programmer learning about basic lab equipment probably isn't
going to help too much in developing software (although it might help him/her
get more attractive dates).

And protein folding is much more useful to humanity than compiler
optimization. Does anyone even work on compiler optimization anymore?

~~~
timr
As someone who has published research on protein folding, trust me: compiler
optimization is about a thousand times more useful.

Protein folding is the biochemical equivalent of string theory. It's fun to
talk about, but the practical applications are perpetually 20 years away.

~~~
jmzachary
Then we are in the same club. I've published research on global optimization
algorithms for protein folding. I'm not a biochemist, but I understood that
protein folding actually has immediate application in understanding disease
and drug design.

As a computer scientist, I also understood that compiler optimization is a
mature field with most of the low-hanging fruit already picked. So, I guess
I'm confused and will ask respectfully what problems in compiler optimization
make it a thousand times more useful than protein folding and associated
medical problems?

~~~
timr
_"I'm not a biochemist, but I understood that protein folding actually has
immediate application in understanding disease and drug design....what
problems in compiler optimization make it a thousand times more useful than
protein folding and associated medical problems?"_

Short answer:

Compilers are used for real work, every day. Nobody is using protein structure
prediction for anything practical, and they likely won't be for decades more.
At this point, it's blue-sky research.

Long answer:

"Immediate application" is one of those bits of academic-speak that really
means "is related to", but sounds better to grant review boards. While it's
true that _protein folding_ is important (after all, most biological processes
are mediated by folded proteins), it's _not_ true that _protein structure
prediction_ is important. It would be great if we _could_ predict protein
structures accurately, but we _can't_ , and until we can, it's not a
practically useful discipline.

Even the very best, crystallographically determined protein structures are
barely sufficient to do rational drug design, and predicted structures don't
come close to that level of quality. For example: we can sometimes (very
rarely) predict very small (<150 residue) protein structures to within 1
angstrom RMSD of their experimentally determined shapes (i.e. >2 angstrom
resolution, in the best case). However, the interactions important to drug
binding, protein design, etc., don't start until a tenth of that (scales of
~0.1 angstrom).

Throw in the fact that the vast majority of proteins are much larger than 150
angstroms, and that we keep creating cheaper, faster, more automated ways of
getting actual _experimental_ information on structure, and the role of
protein structure prediction looks increasingly marginalized. It's definitely
a cool, fun problem -- just not a very practical one.

For whatever it's worth, my first papers were on applying the state-of-the-art
method (you've heard of it...I think you're paraphrasing the lab's PR) for
protein structure prediction to genome annotation. To call the approach useful
was/is a stretch, and that's for a much easier application than drug design
(in fact, we were trying to find a practical application for protein structure
prediction, and it was the most likely thing we could think of!)

~~~
jmzachary
Thanks for the very detailed answer. Amazingly, I can follow the gist of it
after over 10 years.

But, you still don't answer the question. What problems in compiler
optimization are more important than problems in protein folding? You seems to
indicate that protein folding is a basic science problem and not a
"practically useful discipline". In fact, your statement "It would be great if
we could predict protein structure accurately, but we can't, and until we can,
it's not a practically useful discipline" says that the because the problem
isn't solved, it's not important, but it will be important when it's solved.
So, trying to solve the problem is important, no?

But, you don't say anything about compiler research, and specifically compiler
optimization research and development, which you claimed is much more
important. What specific areas in compiler optimization (or just in compiler
design) are more important than protein structure prediction and modeling?

~~~
timr
I _did_ answer your question, but now you're asking a different one. I have no
idea how "important" protein structure prediction will ultimately become; I
just know that it's currently pretty useless, and getting worse.

My first comment was that compiler optimization is about a thousand times more
_useful_ than protein folding. I stand by that remark. However, at the
beginning of my long answer, I mistakenly wrote that protein structure
prediction is not important, when I had meant to write that it is not
_useful:_ protein folding is an _important_ biological process, but protein
structure prediction is not particularly _useful_ , for the reasons I've
mentioned.

It's not my place to say which area of research is more important. That's a
subjective question, and the answer depends on your value system, your
outlook, and your willingness to wait. Obviously, I think that compiler
optimization is more useful, because compilers are actually _in use_ today. In
100 years...who knows?

That said, I think you're laboring under the assumption that compiler
optimization is a "mature" field, and that it is "solved" (and therefore less
important), whereas protein folding is not "solved" (and therefore more
important). The thing is, people have been doing protein folding research for
at least fifty years -- it is a _very_ mature field, and the low-hanging fruit
has been picked. I think that a new researcher is equally likely to make
significant gains in either field, but that the potential for practical impact
is still much greater in compiler design.

~~~
jmzachary
I'm asking the same question, and you're not close to answering it. My
question was "what problems in compiler optimization make it a thousand times
more useful than protein folding and associated medical problems?" because you
authoritatively stated that protein folding work (implicitly computational
protein folding work) was much less important/useful (pick one) than compiler
optimization work. You keep talking about protein folding research, but you
don't say anything about compiler optimization. Was that comparison just an
off-hand or self-deprecating remark about protein folding work? I'm not asking
which area is more important. And, I know enough about both fields to not get
lost in the technical details of your answers. So, I'll ask it again: what
problems in compiler optimization make it a thousand times more useful than
protein folding and associated medical problems?

~~~
timr
If you want to know the most important/useful areas in compiler research, go
ask a compiler researcher. I'm not a compiler researcher.

Compilers are used on a daily basis for real work; protein structure
prediction is not. For this reason alone, research into compilers is more
useful.

------
keefe
It is everything I thought it would be, in both the good ways and the bad.

In the big corporate world, there are places where bureaucracy replaces the
beauty of the code. You sit in meetings discussing what the code should do,
often for longer than it would take to actually write it. I was in a meeting
to discuss a prototype once which degenerated into an hour long discussion on
the label of the 3rd text field on the screen. The bottom line is that in some
big companies, the goal is to work as little as possible. If you want to write
code (or maintain sanity) , avoid these at all costs.

I'm now working at a NASA contractor, and the work is considerably more
interesting. Still, we are plagued with drama but at least there's always
something to do.

In short, just like any career there are the boring, stressful and tedious
aspects. There is also the pleasure of imagining how code should function,
then immediately seeing it come to place. I'd rather be in control of what I'm
working on, but until that day comes I'm happy.

------
edw519
One of the best decisions I ever made.

Is is "what I thought it would be"? I don't know. Because I had no idea what
to expect. (I did my first programming on the job; I started before there was
much opportunity to do it on your own.)

I have done projects at over 80 companies. I have gotten involved in almost
every aspect of the business. I have travelled all over the country, met many
interesting people (and friends for life), and have constantly been learning
and doing. Oh, and I have earned far more than most of the people I have ever
worked with. It wasn't unusual for me to be earning more than my supervisor
and much, much more than my users.

I have done lots of work on my own and have taken lots of time off between
gigs.

Sure, there have been lots of negatives. I've even thought of leaving IT and
doing something else. I know many who have. But then I think about it and
realize that _this_ is what I still really want to do.

There have been horrible working conditions (cubicles), unreasonable people
(let's just leave it at that), terrible projects, long commutes, and worst of
all, boredom and disapproval on someone else's project. But instead of whining
(present post excluded), I always did something about it. I either fixed what
was broken for me or moved on.

Because of modern technology and lifestyle, I am more excited about being a
programmer than ever before. I don't want to sound like an old timer (I know,
too late), but I clearly remember how hard it used to be to get good. I had to
go to expensive seminars or to one of the half dozen good technical bookstores
in the U.S. My first computer cost $6000 (double that today). Now with cheap
hardware, google, downloadable environments, boards like this, and Borders
around the corner, everything is so easy! I just can't get enough.

For someone even mildly interested in programming, I would say, "Go for it!"
Get a job and play around on your own. Learn as much as you can, technical and
business, and if you don't like where it's heading, find a way to make it work
for you. Give it a chance. I'm sure glad that I did.

~~~
goodgoblin
Just out of curiosity - do you live near a major metro area or get your gigs
virtually? I am just about 4 years into an enterprise job and I look around
and see the dead eyes of many 18 year on the job coworkers and I shudder - so
I'm thinking about taking a job elsewhere just to keep fresh - but the money
is so good and the work is so damn easy I worry that I am going to be shooting
myself in the foot. The reason I ask the geography question is that there
aren't that many companies in the area I live so I am more inclined to keep
what I have rather than roll the dice. But the few times I have consulted I've
noticed how much sharper I got - because I had to be.

~~~
edw519
Yes. I have always lived in a major metro area. 6 of them.

 _dead eyes of many 18 year on the job coworkers_

I can't imagine 18 years in the same job. Sounds like 1 years experience 18
times. No wonder they're eyes are dead.

 _the money is so good and the work is so damn easy_

I know. I haved walked out on many a good gig because I knew it was time. It's
never easy to do that.

 _inclined to keep what I have rather than roll the dice_

Why not do both? Find something better, _then_ quit. (You're right to be
cautious: I wouldn't want to be out of work with less than 6 months expenses
set aside. 2 years would be even better.)

------
wenbert
I can't imagine of doing anything else. It is basically like fooling/playing
around. At work, sometimes it gets repetitive and boring -- so what I do, I
conjure up a small project at home or do some freelance or in some cases
dabble with a programming language that I know nothing about. Then when it
gets busy at work or when something comes up interesting, I take it slow on
the sidejobs/sideprojects.

Seriously, when I think of it, I can do this my entire life. The only thing
that can probably stop me is having my own startup -- still, I will still be
doing some programming. It's weird, I can't think of anything aside from it.

------
gills
I enjoy the constant learning required to solve new problems.

To echo some other sentiment in this thread, take the problem domain you are
most passionate about and find a way to improve it through programming.

I once ended up in a rut where I was not learning and I had been on the
project too long (I was still passionate about making things better, but I was
swimming against a tide of corporate inertia). I went back to graduate school
part time to address the boredom, and moved to a project that I liked and had
enough unsolved problems to be interesting for a while.

------
hsu
It's been even better than I thought it'd be. I almost switched out of
Computer Science in college because I was fed up with the boring classes, but
I'm glad I didn't. Getting paid to program rocks!

------
jzawodny
Programming has its ups and downs, but on the whole it's what I love to do.
It's like each program is a little baby; making it is lots of fun (;))and
seeing it grow up, even better.

------
DaniFong
Working for someone else has its problems. Working on my own projects, I feel
heroic. Like Prometheus.

Never before have I had so much power to do so much good.

------
pkrumins
programming is the best thing ever. i got hooked as soon as i wrote the first
line of code. i have never looked back. programming is the best thing ever!

~~~
ideamonk
i haven't yet worked as a programmer. so thanks for sharing insights of your
experiences!

