A programmer's job is to understand problems. A programmer's job is to think clearly. The code is incidental. If you think clearly about the problems, you will need less code, and gradually things will get simpler - I've seen code-bases that actually shrink as they gain functionality.
The only good thing about programmers who spew code all day without thinking is that they create jobs for good programmers to come and clean up their messes later.
> Nobody had any real idea how programmers function. How we think, how we work, what we need to feel productive. For a long time I was the only programmer on the team.
This isn't pointed only at you (although you triggered it), but really, do we have to use words like "terrible" to describe our lives as developers?
We sit in a comfortable chair, hitting keys on a keyboard and get paid much more than the average American salary. Is that such a huge sacrifice? Unless you're going home with just barely enough to feed yourself, with a beat up body, then your job is not terrible. It may not perfectly fit your sensibilities, but talking like this makes you seem like nothing more than a pampered baby.
As a programmer/developer/architect, my mind is never really free from the work I'd done. I always think about how I need to refactor this or that and what is yet to be done tomorrow. Now I drink until I forget the day.
And different jobs have different standards for what constitutes as terrible working conditions. Sure the office was great, I was comfy, I had tea. But the working conditions were terrible.
Being interrupted every 5 minutes, requirements jumping around and not having a say in what you're working on at all can be really terrible when your job consists of long stretches of focusing and thinking.
It wasn't atrocious or even horrific. But it was terrible.
I would argue that the ideal case shouldn't even expect hired work to put in substantially more hours than a "normal" job with an established company (e.g., 40-50 hours) -- hired work should just be expected to be better than the average candidate at those companies, and able to contribute in the team sport of startup creation and growth. If you want to argue for a hidden catch, then yes -- maybe at startups there will be a higher incidence of crunch-weeks where the team will be required to pull longer hours to put out fires -- but this shouldn't be the "norm".
At the end of the week, you're going to need enough time to recuperate and rest. Routinely working 10, 11, 12 hour shifts is just a recipe for burning out yourself and, maybe just as importantly, your team. When you think about it, a ten hour shift is like going to work at 8AM, staying until 7PM (with an hour for lunch) -- then when you factor in getting to work and getting home, you're talking about getting 2 - 3 hours of "free time" each workday, which you can devote to breakfast, dinner, and getting ready for bed. Making that a twelve hour shift just makes it two hours worse.
And if you want to talk about incentives, expecting employees to pour in 60 hours a week is the equivalent of essentially paying them 33% less "per hour" than whatever they're already getting. And 80 means that they're working for half-price. Factoring that in with whatever [potentially] fraction of a percent of equity that the employee will have by the time of acquisition (or, if you're really lucky, IPO) -- and that employee may not even be coming out ahead financially -- and that's assuming that the startup doesn't fail beforehand.
Maybe this means that I'm a shitty startup employee because I don't consider forcing employees to spend 80 hours a week to be the right way to run a company, but I'd rather pass on that particular opportunity and keep my sanity.
Anyways, just my two cents.
Do real, professional programmers work this way? It is romantic to think of hacking away in front of a glowing screen at 3am, but I believe most work gets done during the actual work day. Often hacking at night means you are writing code but not making progress, which seems to be the problem with this "disgruntled developer".
Set a schedule, start working in the morning and stop working in the evening, and your sessions will be much more productive and produce higher quality work than these late night, crazed, caffeine-fueled sessions.
I have to confess, I do have the unusual habit of starting my day with a cup of coffee so maybe I am one of those caffiene-fueled crazies after all :)
This seems likely and could be attributed to the fact that we receive above average artificial light from staring at screens too late into the evening.
And why do you think a late-night bout of work has to be crazed and caffeine-fueled? You can only pack so much productive time in the day, you won't get more hours from working at night. But you might get better hours if you start working at 4pm instead of 9am.
At the end of the day, it depends.
Very often late night, sporadic sessions are a product of, "oh crap I have to get some work done! Time for coffee and pounding out as much code as I can."
Not saying you can't be productive at night, but real production comes from day in, day out routine and dedication to the work. It's not as sexy but it's the reality of the job.
I feel like many of the people that split off to start their own companies can't really build something better - all they do is reproduce the same bad work environment, but with them in the dictator seat instead of someone else.