Life's too short to write shitty software
team.adzerk.com
team.adzerk.com
You can have it both ways (work for BigCo and build cool stuff), but it's not easy. You have to make it happen within the corporate systems and structure.
I have many times. A few examples:
- Boss to me: "Purchasing is complaining that the legacy system isn't doing what it should. Go find out what they need." 3 weeks later, my prototype is the basis for specs for a whole new system. "But you told me to."
- PM/BA to me: "I can't make it to the status meeting. Will you run it for me?" "Sure." Results: 3 new projects at the top of my queue. What the customer wants most and what will be fun to build.
- Big Boss in meeting: "I don't think corporate will approve $2 million for a Data Warehouse/Business Intelligence system, but we have to do something." One month later, after squeezing it in to my spare time: an MVP of a BI system that the users love and was fun to build. Now I get permission to finish it.
- Another boss: "I would love to sell our stuff on Amazon, but I don't know how to go about it." Me: "Want me to find out?" Boss: "Yes." A month later, we're on Amazon. Fun project.
- User VP: "Why do we have to wait 3 years to get anything done on our legacy system?" Me: "Send the quick critical stuff directly to me. I'll try to push it through faster." Almost always leads to building something cool.
The 3 keys to doing these kinds of things:
1. You must find the cool stuff to build yourself. No one's going to hand them to you. Opportunities are everywhere.
2. You'll probably have to make time for extra work. Shouldn't be a problem if you're a good programmer in an enterprise.
3. You'll probably have to hang your cool new stuff off something legacy. So what?
Maybe not as good as building something in a startup for the first time ever, but building is building. You can find a way to build cool stuff from whereever you are right now. "Finding a way" is the key.
You are the real-deal.
Honestly, unless you enjoy reading about the company you work for in Techcrunch I don't get the whole startup hype for employees. Founders are somewhat likely to get a decent cheque but employees are not. For employees the EV doesn't seem to make a whole lot of sense.
At my last employer, I was on a very small team that wrote code that made GBP 2M/year pure profit (minus the salaries of 3-4 people for a couple of weeks, in the first year). That 2M covered the bonuses of two execs, and I got a raise of slightly below inflation (and left shortly after - and they had no idea why).
However I was a quick study and learned that truly there was no I in team. I created a win-win situation, and soon our sales team was dramatically outperforming other regions. Turns out the sales staff knew who to call who already had the service and merely needed to be added to the billing system. There was no way that that much revenue could be sold by one person, it really did require a team.
The worst thing I found was a report that listed expiring credit cards and allowed entry of arbitrary dates in the future for which to run the report. I had to wait until the C-levels visited and hand them a stack of paper with the numbers on them to get anyone to pay attention to it.
aside: Seriously Oracle for OCaml? That's awesome, I'm a big F# fan.
I'd rather be in a position that encouraged rapid, pragmatic development.
Don't worry about downvotes until time has passed. Things usually balance out.
(This worked for me when I was at BofA. I worked on a tiny team that nobody cared about, but people pretty high up knew who I was. This was generally good for my manager and her bosses. The impression I got was when I was on a conference call, I was the only person who ever wrote code to solve problems, and people seemed almost grateful for that. I didn't really enjoy this, and there was a lot of red tape and bullshit, but I do know people who do fine with this kind of job. YMMV.)
But as I've become older I've decided I'm not interested in putting in the extra time just to make my boss wealthier. Time is my greatest asset and I need to manage it with predictability. Time I spend making somebody else wealthier when I could be spending that time making my own business profitable is time wasted. I'm the one spending my time learning and building the application - that is to say, I'm taking the risk - so I should get the reward.
Performance reviews and bonuses are far too politically fragile and opaque for me, and the fact is unless you're a shareholder, you're guaranteed to never receive more than a small fraction of the true value of your work when you're working for someone else.
That's why I quit permanent work and have moved into contracting: I earn good money that I'm saving towards my own startup, I get paid for every hour I work, and as a matter of personal discipline if I'm not doing paid work I spend the free hours working on my own projects that - in the long run - should pay off far better than the contracting or permanent work ever will.
That being said, this strategy only makes sense if you believe you can generate substantially more money working for yourself than somebody else could pay you. If you don't believe in yourself you're stuffed.
> 2. You'll probably have to make time for extra work. Shouldn't be a problem if you're a good programmer in an enterprise.
The point being that you can do these things on company time if you complete your day-to-day tasks efficiently.
Your points are more valid if you substitute 'energy' for 'time' in your reply. If you spend eight hours completely zoned in while working for the man, you might not have much energy left for your personal projects when you get home. You can mitigate this somewhat by working on your personal projects before work.
Or you can take the Einsteinian approach and not sweat your day job while you revolutionize physics in your spare time.
Case in point, my boss has been out on leave for a few months already, in the meantime I've had a free hand to do whatever the fuck I want with some things. In that time I've completely overhauled several systems. With my boss around it would have been a teeth-pullingly laborious process that probably would have dragged on for weeks, been interrupted by other tasks in the meantime, or compromised in so many aspects to "reduce risk" that it might have ultimately been useless. As it was I did everything and migrated critical running systems over to the new stuff in only a few days of work spread out over about 2 weeks.
That generally applies to everything in the workplace as well. The best way to change your job is to slowly but surely start changing what you do while official recognition catches up.
I finally left for BigCo afer 6 months and I plan on staying there for years and years because this job is incredible. We write the most beautiful software and the team is simply amazing.
And it seems every week I see my old colleagues post status on Facebook along the lines of "Look at us, working hard into the night!" at 9 or 10pm. They seem to take pride of this sort of thing. Now that I'm at BigCo, I get to leave every day at exactly the same time and 3 days / week I have activities planned on my evenings that I will never miss again because of overtime.
Just remember that these horror stories of "I hate my job at BigCo, let's join Startup and everything will be better" can go both ways.
I think this work / life separation is really important (to me at least). I don't personally think that what you do at work represents who you really are, and having activities outside of work defines you way more than that thing you do from 9 to 5 to earn a salary. In the end, a job is only there to provide you enough money to pay for your lifestyle.
If your personnal goal is to be crazy rich, then go and work your ass off like crazy for years. But when your job pays enough that you can keep your current lifestyle and you like what you're doing like this, I don't see anything that would make me leave BigCo for a startup filled with dreams of being rich.
It's only in the past few months that I've really come to love it again. Between my day job at Mozilla, working on ridiculously fun optimizations, and a startup that went from no code to a damn near fully functional product in a week and a half (including the time it took to build the framework that the product itself is built on!), I've been having a blast. I forgot how fun it can be to just dive in and make shit work, and do it in the way I think will work best. I spent years over-thinking my development, with nothing to show for it; a couple months of coding with reckless abandon and I'm happier and more productive than I've been in damn near a decade.
Stop hating life, go have fun.
My parents thought I was nuts for not going to IBM. My wife was working at Digital, and hating it. She encouraged me to go to the startup. Which I did, and I'm still doing startups 25 years later. (I predicted that my startup would be in business when Digital no longer existed, and for a short time, that was true.)
At that first startup, I formulated a very simple test for deciding where to work and what to work on. I ask myself: Am I having fun? Am I creating something new and valuable? Am I being rewarded adequately? (i.e., financially).
This has worked out really well. I've worked on and shipped really interesting software, I am constantly learning new stuff, and it has paid off nicely.
However, I disagree strongly with the idea that startups are some sort of panacea for bad jobs. There are plenty of bad startup jobs, and they're generally easier to get than a corporate job. It's easy to talk yourself out of the bad corporate job somewhere in the 5 levels of HR review and background check. It's harder to argue with "free beer, flexible hours, $90k, and you start Monday" - even if none of the above end up being true.
I don't think we live on the same planet. :) I'm talking about modern/recent software development roles in the US/West. Are you talking about a Wall Street job? Are you talking about a banker or a full partner at a financial firm or law firm? I'm talking about an employee. And I'm talking about the general case, not the outlier cases.
I quit my job 2 years ago after I saved enough money to live on for a year (which took 4 years). I always hated working for other people. I not only couldn't be honest to questions like "Where do you see yourself in 5 years?" (I can't exactly say "working for myself" but it felt like I was in Jail.
I despise having to ask my boss when I can take a day off or go on a vacation. I'm about to launch my next company and I've contemplated working part-time to bring in some extra income for some business expenses.
Whenever I start the interview process, I feel like I'm back in high school again. Mostly because I feel like I should be interviewing other people for my business and not the other way around.
I promised myself I will escape and never look back. Obviously there is no certainty in startups, but from my point of view, that's comforting. Even though there is no certainty, you always know you are in control of your own fate, and that's reassuring at least to me.
Exactly. I would rather take a chance and fail, doing it on my own terms, than continue to waste my life away doing shit that is highly unlikely to move me significantly closer to living out my dreams. Life is too short, as Kacy said.
OMG, I know that feeling all too well. At my last dayjob, I spent 8 hours a day basically asking myself "why am I taking orders from these mindless drones, instead of working on building my company?" Talk about soul-sucking / soul-crushing / whatever.
The wrong startup, for the wrong person, can be just as soul sucking as a large corporation. There's plenty of startups that I would never want to work for. This suggestion that corporations are inherently bad and startups are inherently good is overly simplified, and very naive. Google, Apple, and Facebook I'm sure all have employees working on their TPS reports as well. In fact, I'm sure they have security guards, lawyers, and janitors many of whom enjoy their jobs, and add value to the world, despite not being software developers.
I guess I just find the attitude that everyone should be a developer working 80 hours a week for a hot web 2.0 startup very troubling. I worry that some of us have some strange delusions of grandeur. Is the CEO of the next Instagram, working 80 hours a week, really living a better life than the guy next door? In the end, if you're living a life you enjoy, what differences does it make where you work?
There are good corporate jobs and bad ones. When I, for example, worked at IBM, I had a pretty good time and enjoyed the work, the people and the environment tremendously.
Conversely there are small company / startup situations that are totally soul-sucking. Especially when the economy goes into the tank and layoffs start and the managers start acting like fear is their only tool to motivate people. This happened when I worked at Lulu.com, and I never felt a great sense of the relief than the day I resigned and walked out the door.
I mean, don't get me wrong... I loved my colleagues there, so nothing about this is meant as a slag against them... but the job itself, the management and the vibe had reached a point that, when I walked to my car on my last day, by the time I got to my car, I felt like a 10000 lb weight had been lifted off of my shoulders... I could almost swear that the sky was a brighter shade of blue, and that the grass was greener and that the air smelt better, on the way out than on the way in. Sometimes all the nerf gun fights, and free soda, and $whatever, just can't make up for the other stuff.
If there's a point to all this, it's that whether a job is good or bad does not come down to whether or not you're working for a large corporation or a startup. There are a LOT more variables in the equation than that.
That said, if your job is sucking your soul and you feel the drive to quit (or get fired) and go found a startup, I absolutely advocate doing so!
Just because you dislike your cubical job now doesn't mean you need to go to the opposite extreme, spending extra hours at work just because a ping pong table is there. Don't end up at a place where working overtime is revered among the staff, it's a toxic mindset that really only benefits the bosses up top.
If you want to go somewhere to change the world, just make sure the people who are running it can first effectively manage the small world that are their employees.
If you can avoid the TPS-report-factory-factory (wink), by all means do so. But don't look down on those who are doing what they have to.
There's something to be said for knocking off after 8 hours, and going home to one's family as well. What I do is technically boring, but necessary, and doesn't consume my personal life. I don't have to spend 2 hours each way going to work through bay area traffic, either.
Yeah, I'd love to be building something super cool from scratch, but that lifestyle has a cost, as well.
This past weekend I managed to pick up a book on Go and hoping to deploy something through appengine by the end of week. If you want something, you find the time.
And I work 48 hours a week minimum.
Like most people here, I'm often learning something new, or new aspects of the familiar. Despite the inertia, large comps need people to lead the way, whether it's training how to properly use source control, teaching new languages or platforms, setting up application standards to make troubleshooting possible and aid comprehension for maintenance.
The problem is actually having a large amount of existing code, and having to live with it for a few years, rather than a blank slate to be written with whatever Apache (or others) just released last week. Don't think that code won't feel old in 2 years.
DHH did a wonderful talk about "legacy code" a couple years back, I think it's on the IT Conversations site somewhere.
My point is that classifying corporate:bad, startup:good is just unsafe thinking. If you look at the company on its own without stereotyping its demographics, you'll come out better in the end.
This is for the guy who browses Hacker News at his cubicle during his break under soul-sucking fluorescent lights
...that's 10 hours of your workday that is devoted to your job.
The Java Struts web app that you're working on needs to be able to support IE 6, especially because you're not able to install Firefox or Chrome on your locked down desktop.
I could add so much, but he's got the big ones. How about "browsing HN from your smartphone because of the proxy"? We're actually working startup hours here, so combined with a large family it's difficult to get the time to work on the side project. Luckily there are people out there who have demonstrated that it can be done under similar constraints (looking at you, Patrick).
Described my previous-life to a T, best decision I ever made was leaving those fluorescent lights.
Actually, WSJ was just reprinting a listing by a company named CareerCast, whose metrics are a bit suspect.
The assumption that only large consumer-facing products are worth working on is wrong. There is a whole world out there you don't know about and it doesn't run software on iPhones. It depends on the person, but you shouldn't need external confirmation to be proud of your work -- either you did it well or you didn't.
Generally, the problem isn't the project per-se, it's just the management. A horrible boss, ie. a horrible person will wreck your day regardless of what are you working on. If you are hired to write internal reporting software, don't be surprised you will work on internal reporting software. Make the most of it!
Software is depressing because that's the best you can do sometimes. There is this type of corporate developer that's just at the edge towards a good developer but he just believes he's the greatest. He'll always be unhappy because the Man just won't let him try the latest fad and if he only would be allowed he would make such great software. But what does he do? Crappy software! A certain degree of modesty is required in software because not everybody before you was an idiot, and if you had free reign you would make an even crappier solution with the latest fad and all.
But essentially, the kind of people feeling bad are just unmotivated because the job is not a good fit. That's it! As the RSA video said, they need more autonomy or a "higher" purpose or just want to get better at something else (mastery). But sometimes what's missing is a degree of realism.
That aside, I believe people can find a niche developing software targeting these soul-crushing jobs. Basically have a product that solve problems people hate to deal with.
Java EJB 1.0 and Struts sucks? Write your own framework, call it Spring Framework: worth $400M. JDBC sucks? Make Hibernate.
Dealing with Rails deployment sucks? Cloud hard? Come up with Heroku.
Silo-ed web-apps, always have to custom build CMS and comes up with your own workflow? Build SharePoint: $1B market.
Configuring and maintaining WordPress are not interesting? I heard WPEngine is making money left-and-right...
I learned that before you can call yourself a real entrepreneur, you should learn to get over yourself on these "shitty" stuff because what if you got your dream job but is interrupted with "shitty" stuff in between? Call it quit again?
Because JDBC didn't suck enough...
It's an attitude issue. The right attitude towards the bad (and good) things will make all the difference to your happiness in life.
What people often forget is that they are completely in control of their own attitude towards life too. The way you react to situations around you can be a positive influence instead of negative if you want it to be.
All kinds of software can be shitty or non-shitty. I appreciate the call-to-action to developers stuck in the "trenches" of corporate software development. The "C++ coding mines", as one co-worker put it. I just feel the world is inundated with advertising and I hope inspired hackers have the opportunity to solve problems that help people more than businesses.
As FAKEGRIMLOCK says: "FIND CONTENT USERS WANT TO PAY FOR. ADS JUST WAY TO GO BANKRUPT SLOWER."
https://twitter.com/#!/FAKEGRIMLOCK/status/18952272845223117...
Advertising is a mess and most of it is terrible and the problematic mindsets that have made it that way are pervasive... but what I see there is a ton of hard problems and it will be smart, entrepreneurial people that attack those problems.
Also: money
What's your problem with middleware? Building middleware gets you closer to doing systems level programming that a lot of things.. you get to deal with challenging problems in data storage and retrieval, concurrency, networking, filesystems, etc. when you're building infrastructure code. And middleware is used to build solutions to massively complex and challenging business problems that have a real impact on how people do their jobs and how companies run.
Personally, I'd rate working on a cool middleware platform (preferably something Open Source) as one of the best gigs you could have as a developer.
(Disclaimer: I'm the founder of a startup that builds Open Source software that would probably be lumped into the "middleware" category.)
- Steve Jobs
A couple of years out of college I started living by this quote and it has worked out great for me.
It can be hard to live by that quote though, especially when you have a lot of responsibilities.
"Life is too short to work at a boring company".
Quite a reassuring reminder.
I worked in golden handcuffs, unable to leave because of the good pay, benefits. I felt I was getting less marketable by staying there, and that I couldn't work somewhere else. Friends told me about other opportunities and I ignored them because I had no motivation- I was miserable with the job, the politics, everything. Luckily, an old co-worker provided me with a great opportunity. For others I knew who were even more able than I was, it also took spending a lot of time polishing his image and interview skills. You used to be able to just get jobs because of your resume. But these days, an interview can be like a black belt test. You have to show skills as if you were applying for an enrty level position, mid level, senior and executive all at once. Once I broke those handcuffs, I knew I was better off. It is scary, but it is worth it. I still don't know if I'm doing what I should be doing, but it has got to be better than hating every day at work.
And when you accept the offer at another company, treat the first company with respect, but tell them honestly what you think in a way that you'd be proud if your assessment of them went public.
There's one thing that I heard pg say one time that's always stuck with me: people make the difference. Good people can make a boring project fun. Bad people can make a fun project hell.
It sounds to me like the person quoted likes his team, but it doesn't sound like they're meeting this definition of "good".
I think that there is a sweet spot in already established, small to mid-size businesses looking to step their game up. They have the resources to Do It Right, the patience to carry out the process and the wisdom to trust what your experience and knowledge tells them.
1. BigCo. 2000+ employees, mandatory suit and tie, great income, soul-crushing work.
2. Startup. 14 employees, sneakers, Macs and fancy goatees, work 16 hours with fellow brogrammers, life is amazing and awesome.
Really guys, the world isn't this simple! It's a very nice way for the recent Graham converts to beat their chests, but there's a lot of cool stuff to be done between working at Accenture and working at Quora.
1. Jonathan is gay, or 2. the author can't spell.
I've since quit and never looked back. Start ups are definitely for me. I'm already making more than I did at Initech.