Did your boss thank you for coding yourself to death?
skorks.com
skorks.com
Wow, those ones and zeros must have really been heavy!
Every time I see landscapers, construction workers, farmers, nurses aides, or anyone in one of my customers' factories or warehouses, I thank my lucky stars that I was born when I was, I had an aptitude and interest in programming, and I found the perfect career for me.
Sure I work hard, but my hard work is hardly the same as their hard work.
I've spent a career on my ass, building applications that hopefully make the lives of those who do physical work just a little easier.
My last career was a cook. After a 6 hour shift in a 110 degree kitchen serving 2,000 meals, a 12 hour stint in an air conditioned office in my Aeron chair seems like a vacation. Oh, and did I mention I earn more in a month than I did in a year as a cook?
I never expect my boss to thank me for anything. My boss (me) gives me the best bonus I could ever ask for. I get to do it all over again tomorrow.
Wait, no, I don't hate to agree with you. You're absolutely right. "Died from too much hard coding"? Yeah right.
Coding is hard intellectual work. And, as you point out, if you're not happy with the trade-offs at work, you can always start your own business. It's really an awesome situation to be in, compared to what we could have been doing a hundred years ago.
Everything's amazing but nobody's happy: http://www.youtube.com/watch?v=8r1CZTLk-Gk
PS: I doubt the coding is what killed "John".
This has nothing to do with "not [being] happy with the tradeoffs". These guys are perfectly happy acting like this; being the hero. But it's absolutely not something I'm going to encourage my friend to do to himself.
It seems like these type of careers just draw that type of driven person. This is just a guess, as I draw from my personal experience.
Simply because we can't change other professions, doesn't mean we can't improve our own. And just because there are some obsessive individuals who "work themselves to death" doesn't mean the rest of us need to try to match them (or encourage them).
Of course, you need a break every now and again, and not eating/exercising is going to catch up with you, but I am guessing this guy is quite young.
And please nobody suggest TDD. TDD has its place but it's not a holy grail and it only tests the tests you think to write. Even if your code coverage is 100% you have certainly not tested every possible input and path if the software is at all complex.
A lot of people put the value of a life at around the expected work society gets from it - and then try to argue that that's not what they really think, obviously, because doing so would be immoral.
If you think software developers (or bus drivers, or airline pilots) can get paranoid, you should see what happens before test flights on airplanes.
I do agree, however, that many of us are lucky to have avoided the factory life. Read _Out of This Furnace_ sometime to appreciate the hell many immigrants lived through.
However, a quick search on the internet for "health unemployed" (without the quotes), turns up articles like http://www.mja.com.au/public/issues/feb16/creed/creed.html
I also heard of other studies that found that top managers, despite having lots of stress on the job, are still more content and less prone to stress-related ills, than people who get their stress from being low on the social pecking order. (Perhaps somebody can find that study?)
I'd imagine that cocaine use is relatively rare in technology, but it occurs in finance quite a bit. That's the dirty not-so-secret of the long hours in investment banking. I also think it's safe to assume that cocaine use is a lot more dangerous than long coding binges.
For me each has it's ups and downs. If you are sitting in a chair all day you are quite likely to develop postural and muscular problems, as well as being at a higher risk of obesity and other exercise related health issues.
Working outside generally means a higher risk of (skin) cancer, but your body is doing what it evolved to do: carrying your consciousness around while you manipulate the physical world.
Personally I find I have to go to great lengths at the gym to make my body feel like it is getting the exercise it requires when I'm coding, whereas when I'm working in a more physical job I generally feel very physically content at the end of the day... But, as always, to each their own.
Talk to someone building an asphalt road in the summer about hard work, or a farmer during a bad year, an ambulance driver or a police man.
Hard work means that your body is going to fail you long before it normally would have, hard work means that your hands have calluses.
We're bloody lucky that brains are rewarded as much as they are, I certainly wouldn't make it for a long time working in a mine or a field (the two options that you had roughly where I'm living not that long ago).
Sure, working under pressure can be tough, and demanding customers can drive you to the brink of insanity. But only if you let it.
You've been a cook, I worked in a mail room at the ripe old age of 17, scrawny little kid trying to drag a mailbag twice my weight. I didn't give up but I can tell you I came close those first weeks. It certainly helped me to appreciate my good fortune later in life.
He gets paid the big bucks for the 5%. Occasionally i'll ask how his day was and i'll get a burning car kinda story and then he'll ask how my day was.
"I'm an overpaid typist."
Those jobs take a special kind of mentality to be able to do them well.
However, the situation you describe for yourself is not the same situation discussed in the article. You are making your own decision to work how ever many hours a day you work. And you are reaping the rewards from that work directly (I'm assuming you are self-employed, since you said you are your own boss). You are not being asked to work 80 hour weeks by someone else, and then not getting compensated even in the form of gratitude from your employer for going the extra mile to get something done for the company. I (and multiple friends of mine) have been in that situation before, and it's no picnic. When you are expected to deliver on deadlines that are beyond completely unrealistic, and are pressured on every side to "just get it done" by people who know absolutely nothing about developing software, and are reprimanded for coming in late after working long hours the night before it can be extremely hazardous to your health. Stress can kill you, and the body does need sleep. Long hours day after day for weeks on end catches up with you, and yes it can cause serious health problems. BTW, the fact that you are sitting on your backside the whole time actually makes the situation worse, not better.
Happily, it has been a long time since I've been in that situation, and I intend to continue to do everything I can to keep it that way.
I have worked in a union carpentry shop, as well as a Swift and Company kill floor.
I also worked for 7 years as a programmer, 5 years working for others and 2 for myself -- in a part of the country where the market for that sort of work, and the pay, is just terrible.
The carpentry job was better than programming as an employee, by far. At least at the places I worked.
The prefab construction job was often extremely physical. It was often dangerous. Every day, I walked into work and there was a backlog of fully finished half-ton pre-fab walls that absolutely had to be moved out yesterday, all different sizes and bizarre shapes. My job was to use some combination of forklifts, hoists, bundles of styrofoam, truck strap, plywood and temporary structures to move, stack and pack the walls into the smallest space I could, and then load them onto a semi trailer with the then-largest industrial forklift that Clark made. Straps broke, racks turned over, thousand-pound walls sometimes fell or swung or crumbled a little too near for comfort, and other people didn't always work safe around you.
You know why it was better than programming? Not because of the overtime pay or the view, although both were superior.
It was better because reality asserted itself more often.
If your boss thinks the hoist can lift 2X more than it actually can, that situation will resolve itself. Fast.
When things go wrong, they go wrong fast and it's easy to assign blame. If your coworkers think that they can lift a 24-foot-long wall by attaching a hook to a single 2x8 stud, they'll find out quickly that they should listen to the people who have seen it done.
We never ended up working like crack-addled beavers for 4 months straight because a team of yes-men convinced everyone that natural laws don't apply to us. Sometimes the company took on more work than it could actually handle. It became obvious very quickly, after a matter of only a few weeks. It didn't stagnate, dying horribly over the course of years as the backlog of unprofitable work dragged out into the infinite future.
The existence of physical limitations made customers more reasonable; no one ever tried to order a 5-story Ruby Tuesdays for the price of a lemonade stand. The equivalent of that happened all the time at the software shops I worked for; I saw them take on jobs that called for the tracking and reporting of complex resource flows, stuff that would be ambitious for even a YC team with 4 months to kill, but the devs assigned were pure designers who had managed to learn just enough vbscript to provide some meaningful interaction on the website templates they sliced out of Photoshop.
I know that there are people out there whose experience has been pretty different. Most of them probably react by moving to a better market, and that certainly seems a reasonable solution, although it wasn't mine.
But to dismiss the reality of crappy programming jobs with a "wow, heavy ones and zeros" -- uh-uh. I literally enjoyed the kill floor better than one of my programming jobs.
There are people out there who will abuse any humble, hardworking, inexperienced employees they have, and browbeat them into truly ridiculous efforts. I remember being 21 years old, being told that a project slated for delivery in 2 months had to be done for a demo to the execs of a chain of hospitals at the end of the week. I worked with zero sleep to get it done, because it was my project.
At the end of the week, my boss slipped and cut his head playing with his kids in the McTreehouseMansion behind his McMansion. So on no sleep, I had to train all of these people in on the new system, people who were executives at our biggest account.
I have public speaking experience; I put on a suit and did it. It was a big success.
I didn't get overtime or a bonus, and I would by far have rather spent that week gutting hogs for a mere 10 hours a day and going home to relax afterwards.
I stopped reading. We don't. In fact a job that only required 30hr/w would be great. Even if I took a pay cut.
This sounds stupid on reflection, but I really wanted to solve all of those problems at the time, and I nailed them all with a low error rate. :)
When trying something new or reading, it's good to keep going at least for a short while before giving up, rather than turning away the very first time you see something unpleasant.
He derives enjoyment from creating while maybe you choose to do other things for enjoyment. To each his own - isn't that your point?
My boss said he'd be happy to at least have me doing something in the company than nothing at all. Doing part-time is worth asking.
I haven't noticed any loss of productivity compared to others. I just get to shuffle my time better: I can do other chores on those days or hours when I wouldn't get anything done anyway, and only work when I have the drive.
I do however stay late sometimes to finish a particular task, because it's easier than starting again the next day... but then again I'll take a longer lunch or come in later instead another day.
There's always more work to be done as long as the company you're working for exists. How you pace it is the problem -- burnout hours will prevent you from getting on top of the bug race.
is the part I don't agree with. Sorry, didn't make that clear. Doing It Right (tm) has little, in my experience, with the volume of work that exists.
The paralegal working 80 hours a week is a chump, no doubt. Many lawyers want money and status, and get disillusioned once they realize not everybody is going to make partner.
Most of them didn't enjoy law school much either. So they invest most of their adult waking hours in the law, only to realize at their 32nd birthday that they might not make it.
So I think they outchump us.
We are in an industry obsessed with "ninjas" and "rockstars". The same author who wrote this article bashing long hours has articles about how grades and good knowledge of math are all-important on his site. But these long hours and near-perfect grades really are just a way to compete.
So we are in this cutthroat competition. Understanding math you are unlikely to use in real work is a status marker. So are grades. Are they just that? No, just like a shiny BMW is also a good car. But competition in any well-paid career eventually becomes unsustainable (or close to it). Doctors and lawyers are already there, but their fields had more time to get to that point.
The only thing that the long hours are competing for is favor from managers who don't have the faintest idea as to what a competent programmer does.
I've said it before, but it bears repeating due to context -- the best managers would get rid of the workaholics, and yet most managers reward them.
The catch is, who's going to do it? The ones who are creating the bugs are too busy creating the bugs, and the folks who just get their job done and go on with their lives probably don't care. :)
If you want to work the extra 40 hours for free you can do it for a charity (or your own startup!) rather than your for-profit employer.
Your extra time could be devoted to the benefit of people, projects, or causes dearer than your employer's pockets.
Programming jobs don't pay overtime?! With an extra 40 hrs/wk, regardless of the job, the employee should get a sizable compensation, right?
Also, most large companies are horrible about looking out for employees' advancement and education, so people who want any of that have to do it on their own time.
At my current job we have fully adopted agile programming and really respect the tenant that a developer should work no more (or less) than 40 hours a week (we also assume each day has about 2 hours in overhead, netting 6 hours of actual work time). It makes a huge difference. Leaving every day at 5 o'clock enhances everyone's mood, energy levels, ability to think, and the end result is we are far more productive during those 8 hours. Compared to when I worked at MS and 10 hour days were "normal" and 12 hour days were very common, I actually get a lot more done in an efficient, packed 8 hour day than a resentful, stressed out 12 hour day.
I agree here (when I find myself working 60+ hours a week outside of rare crunch time, I am usually doing something wrong e.g., giving bad estimates or losing focus), but forcing people to work "efficient hours" (you must be in the office at 9, vs. being allowed to come in at 11 and stay until 8) is micro management (loss of autonomy).
Not being allowed to do (even non-user facing e.g., infrastructure) projects without permission from project management, planning meetings and daily status reports is another example of micro management. Perhaps this isn't a part of agile manifesto (just like concentration camps aren't a part of the communist manifesto), but that aspect is certainly a feature of almost all implementations of uppercase-A agile (scrum, XP, etc...). I'm all for frequent releases, continuous integration (and possibly continuous deployment), iterative development (at least for product features) et al, but you don't need a full blown "Agile" process (planning meetings, daily stand-ups, index cards, bringing in training consultants, hiring "scrum masters", etc...) for that.
Work life balance is important. It's also very important to work smartly and use labour saving techniques (adequate hardware, tools/automation). Performance requires maintenance and I make sure to allocate down time (time with friends and relatives, concerts, non-technical reading, trips/vacations, exercise, etc...) to myself on a regular basis.
However, the most important aspects of a job (to me) are autonomy, great colleagues and challenging work (exposure to new concepts and technologies, which frequently have a learning curve). Given a choice between working a 1-2 hours more and giving up any one of these aspects, I'd gladly accept a few hours more of work.
I agree following a process to the letter without really thinking about what it's doing for you is bad. If you feel agile is not allowing you to pursue other needed things then that's bad. Take what works for you from a process and leave the rest behind.
We're people, damnit. We choose to work overtime for various reasons. Some of which include: putting dinner on the table, keeping our jobs, getting our foot in the door, and so forth.
In my experience there are only 3 cases for working overtime:
1. You're a new, mediocre, or terrible programmer. You've been given three months to deliver a web site using a framework that practically holds your hand and wipes your ass and yet you still need more time. Everything seems hard. There's nothing you can do but brute-force your way to the finish line: stay up late and work that overtime to get it done and make up for all the time wasted googling, procrastinating, and debugging with a shotgun.
2. The suits messed up. They set a deadline without consulting you. They took on a contract with an incredibly short deadline because the business needs the money. They forgot to plan ahead for the big industry conference and they need something to show off to the other suits that will be there.
3. You've entered a culture of slavery. You just got your foot in the door at a big company. Unfortunately things have been sliding downhill and they never told you just how bad it has gotten during the interview process. Some people who stick to their guns will run for the hills, but you've got bigger responsibilities and cannot afford to take another month off job-searching. If you don't join in, they'll just make you look bad and the suits will fire you.
For me it's simple: if I can't get it done in 8 hours a day, someone didn't consult me for an estimate and its their fault. I may choose to work the overtime to get it done, but it's not something I personally tolerate. I value my life more than my work and my free time is important. But sometimes you have to do what you have to do to put a roof over your family's head and dinner on the table.
It's not as stupid as, "programmers love working overtime because they're passionate people!"
I'm passionate about what I do. But I'm passionate about life. Programming is a part of that. Slaving away to make some other dude rich isn't.
Let's be very generous, you own 2% of the company, so you are entitled to 2% of the company's profits. Let's be generous and assume you contribute 20% of the company's productivity. Your influence on your 2% is equity is 20% x 2% = 0.4%. For this extra 0.4% compensation, you work 50% more hours.
50% divided by 0.4% is about 125x. So you are on the losing end of this deal by a ratio of 125 to 1. Your "screwed factor" is 125.
Tweak the variables to find out your screwed factor.
If your pay is just a percentage of a company's profits, the amount of equity you hold has no impact on this number. If you working 50% more hours generates 10% more profits (or whatever) for the company, you get 10% more pay for 50% more work, so the screwed factor is 5.
Again, this is assuming that the screwed factor is meaningful in the context of a startup, and it isn't. First of all, the different possible outcomes for an early employee of a small startup can mostly be boiled down to two, maybe three: the startup IPOs and you get rich, it gets sold and you get well-compensated, it fails and you get nothing. Treating your income as a very smooth function of the hours you work is misguided in this kind of scenario.
Second, contributing to a culture of working really hard on the startup (by working overtime) might be more important than the work you actually do in your overtime. Startup employees don't work in a vacuum.
You are wrong for two reasons: 1. If you want more than 2%, than you need to start the company yourself. The only way anyone can over come your screwed factor is if they are a founder.
2. 2% of a successful company should make you relatively wealthy, thus negating your screwed factor.
I found that it just wasn't worth it. I wasted more energy on micro-optimizing my time than I saved, and ended up being less successful. Plus it always just made me feel depressed, enervated, and vaguely guilty.
I'm working for The Man now, a large tech corporation. My stock options are a miniscule fraction of the company's capitalization. My salary is decent, but probably less than I could earn elsewhere. I've already made the company more money than I'm likely to earn in my lifetime, and will likely see at most a few thousand of that in bonuses. I harbor no illusions about advancement or striking it rich through climbing the corporate ladder.
And y'know what? I don't care. I'm happy now. I'm doing stuff that I'd want to be doing even if I were financially independent. Maybe that makes me screwed, but it seems to be working out fairly well for me so far.
I find that it's worth figuring out the big things, and then not sweating the small stuff. If you have a great marketable technologically-feasible idea, go found a startup and do that. If you don't, join a company where you can feel good about however many hours you spend there. Don't sacrifice things you really care about for work, but don't keep score either.
Anyway, I think it's a matter of different strokes for different folks. When I started working post college, I worked a lot of hours, because everything I did was hard. Now I've learned that a "work-life" balance keeps me the happiest. I'm a much better engineer, so I'm more efficient in these 40 hours than I used to be in 60-80 hours. The key has been--when at work, always be productive. When at home, do not think about work.
It helps that I now work at a mid-size company that encourages exactly this. :-)
Now different strokes for different folks--a very ambitious person should probably work more than 40 hours.
1. You're learning something new. It will take you X hours of practice to learn it, so if you want to get to the good part and be able to start building cool things with it, might as well get X out of the way.
2. You've got this burning idea for how to do something cool, and if you rest it'll leak out of your brain. Better get it done fast before the inspiration dries up.
There was a period a couple months back where I was pulling 12 hour days and working weekends for about 3 weeks. I had something that needed to be finished, and it was complicated enough that I feared that if I set it aside for anything, I wouldn't be able to load the problem back into my head. So I just did it, spending whatever time it took to get it done.
And then I spent a week or two working 6-7 hour days. I don't keep score, and I don't think my boss does either. From his POV, the project got done, and that's a win for him. From my POV, I didn't have much planned that month anyway, and my employer has been remarkably flexible when I need to take long periods of time off work, or need to leave early and work a shortened day, or just want to come in at 1 and leave at 10.
I won't sacrifice things that are important to me for my job - if an old friend is coming into town and I've got dinner plans with them, I'm not willing to be tied down to my desk. But if it's just a matter of writing some more code or blowing a few more hours on Reddit/HackerNews, I don't really mind writing the code so much.
His presence at the office at 2 am wouldn't change this fact either. Staying late oneself is one of the ways to pressure ones subordinates into long hours.
The next time they ask you to work an extra 50% for a few months, don't. Instead work your normal hours and give them a banana; that would only be fair.
Did execs got extra for themselves out of it? Maybe, maybe not. Without knowing the specifics and the situation of the company it is meaningless to speculate. Is it "fair"? Probably not. But then, in the military there were thousands of people who had to risk their lives and got just a shitty medal out of it - not even a canoe trip. Life isn't about fairness, but I think even a token recognition is better than the other most likely outcome - no recognition of your effort.
That is why many programmers here, code themselves to death here. I have many friends who are very unhealthy because they have to work 2 or 3 jobs at the same time. Coffee and cigarettes seem to make them think faster (BTW, I haven't had a cigarette in over a month, so yay for me) or probably they do not have enough time for other pleasures aside from these.
I myself used to work 9.6 hours (that's with no overtime) from Mondays to Fridays. When I got home I work an extra 6 hours on the internet. On weekends, I work at least 8 hours. And I still live with my mom because I still can't afford to live alone and have an internet connection.
Working your mind off I think is as hard ass working physically. At least my brother, who is a nurse can sleep soundly at night without thinking about solving anything. He can rest his mind and his body. I on the other cannot rest my mind and therefore it is impossible for me to rest my body.
I love to code that is why I do what I do. But sometimes, posts like these come up from time to time. Also, I think this is more of a problem with the entire system here.
FYI: Nurses here are paid dirt shit. Not even above the minimum wage: about 240PHP a day and a Big Mac is about 150PHP. They are paid less than the floor cleaners in the hospital and the hospital treats them like shit. I can easily make 3 to 4 times from what he gets per month. He chose this career because there is an opportunity for him to go to another country where he gets paid what he deserves. He is really good at his job and he has a passion for it. Too bad the hospitals treat their nurses like disposable cups.
Also, I've always had the impression that living with your mom does not carry the same stigma as here in the US. The only time people release their shackles from their parents is when they get married, even that doesn't occur quite often too.
Why are you working over-time in the weekends anyway? Is it related to your Monday-to-Friday job?
Working on the weekends is not related on the day job. I do other stuff online to make extra money. It's funny, now that I have thought of it, I have been doing sidejobs longer than my dayjob. I had sidejobs since at the 2nd year of college.
Also, I forgot to post that I am shifting careers. Now, I code on my free time - for fun! I now work for a Norwegian surveying company. I spend a lot of time in a ship inside the survey room. Still computer related but I with less hours :D and hopefully bigger pay.
And I'm more productive than I was at 80 hours a week and not taking care of myself. An unhealthy lifestyle is not efficient.
Let me see if I got this right: it was impossible to implement, but the spec said it was possible. The client didn't realise it was impossible to implement, but John made it possible anyway.
So the spec was right all along, and John implemented it? Am I missing something awesome here that uber-hackers totally get? Can someone explain this to me?
Edit: That was rude. My apologies.
(But NP may be possible to solve in polynomial time. Who knows?)
Smart programmers use just enough effort in the right places to get the effect they want.
Dumb programmers right a lot of code. The code you never write never breaks, and never needs fixing.
I'm starting to realize that if no one else will give a shit - don't do it. Of course, this isn't a free pass to write shitty code. You don't have to be ineffective to take pride in your work.
My approach changes dramatically when I'm working for somebody else because it's hard to find something to care about on the same level as your passion projects.
So the key seems to be passion. Have a lot of it? "Work" more because it's not really work. Have a little? Mind your hours and your rate.
For one you are telling your employer how much less valuable you are, assuming you are on salary. Working 80 hours a week for the same amount of money effectively dilutes your hourly earnings, factoring in overtime, to 40% of its original value. If your boss called you into his office and told you he was switching you to hourly and giving you a 60% pay cut you would probably be pretty pissed, even though effectively it meant you made the same amount of money given your hours.
For another, studies show that for software development people don't actually get more total work done working past about 50ish hours a week. All that other in-office time gets wasted by inefficiencies caused from over-work, lack of sleep, lack of concentration, and being forced to do tasks and errands at work that would normally be done at home (eating meals, relaxing, paying bills, etc.)