It's not the first time that someone has approached me with this:
Woha! You work at an enterprise corp, that must suck man. You should find work at a startup. A startup is the best place for a coder.
So I thought I would debunk this myth once and for all.
I assume I'm not the only one to have been approached by this suggestion, so let's break it down; why would working at a startup be any better?
First of all we have to conclude that:
But for what reason? Well it's a hippster thing really. Quoting Steve Blank:
[A] startup is essentially an organization built to search for a repeatable and scalable business model.
Basically something better, new or radical that the founders think they can make a boat-load of money of of.
In the world of a coder these statements are true beliefs of what startups do:
- Heavy focus on open source due to limited funding
- Fresh out of school, hungry devs
- Focus on scalability
- DRY code
- Test/behaviour driven development
- Bleeding edge programing languages
- Lots of freedom
- A flat company structure
In the world of a coder these statements are true beliefs of what large enterprises do:
- Legacy code base Cobol/Java/.NET/etc.
- Lots of money to spend on Oracle and/or Microsoft products
- Strict herarchy
- No freedom
- Lots of consultants writing code under preassure
- Code quality and testing comes at a premium
- Suicide letters in the code doc.
While these are pretty general and somewhat exaggerated, the gist is this: Startups cool, enterprises not so cool.
I work at an enterprise myself along with ~20 strapping devs but we resemble a startup more than an enterprise when referencing the beliefs above.
Never the less, I had some vacation time to take out and a job offer at a startup. So I did this: I told the guys at the startup that I had no wish to quit my job but that I had 4 weeks of free time that I was willing to spend helping them out, free of charge. Thats right, for free. They needed a system architect and I needed to see what the startup fuss was all about.
I came to a place badly in need of assistance, my assistance. This is what I was given to work with:
- Complete architecture written in PHP
- Apache frontends
- Custom implementation of REST protocol in PHP ( due to lack of native support )
- No tests ( none! )
- Inline SQL ( unforgivable sin, bible says so )
- No Agile software development framework
- Customer support taking over 60% of dev time ( Rough estimate due to lack of agile framework).
- No dev, stage, prod environments, everything was live.
This is taken into perspective when you realise that they have been in business for several years.
As you can imagine the load time of their product was horrible, so the first thing I did was to implement Varnish in front of their prod server. That sped up their page with 5000% ( no joke, 50 times faster ).
Next I started looking at their work patterns, and set up a variant of Kanban that I thought would suit their needs. Rough estimates indicated a 200% increase in slack for the devs.
This is where the first snag came. With the devs supporting it I wanted to implement it ruthlessly right then and there. Given the gains I saw no reason not to. But that was not popular with the leadership as it would
"Inconvenience our existing customers."
Next I looked towards the developers, asking about PHP ( why they use it ) and why they would dedicate over 150h worth of dev time writing a Restfull API in the crap-language. The reason I got made it pretty clear why.
"The boss told us to use PHP."
I pitched the idea of using slack time generated by Kanban (or in general, more structure) to start rewriting parts of the code base in Go/Ruby and in the process modulize it, increase scalabillity, performance, write it DRY and with full test coverage. I got very mixed signals. On one hand when I pitched that the reason why they wanted me there, was because they had problems scaling their platform and that this was my solution, I got a yay. Later I got a nay.
"We constantly work in production and have to prioritize our customers."
I took a week off over christmas and resigned my post right after new year.
The grass is not always greener on the other side and I can finally say that just being a startup-company, gives no guarantees.
I'm staying at Tv4, where my ideas are not pushed aside and where bleeding edge, innovation and an open mind are constant bywords that keep our systems stable and our customers ( not to mention devs ) happy.
This is not an attempt of debunking Startups as a great place to work, just a gentle reminder that you never can judge a book by its cover. Unless it says Microsoft of course, stay away from those.