Freelance:
Freelance work is fun but unreliable. I've only ever had a few actual freelance jobs (5-10 hours of work or so) – most people don't want to build tiny custom software projects, they want more work commitment. Freelance works seems to be more common for frontend web designers, for backend/embedded programmers like myself there were limited options. This can be a bit stressful when a client stiffs you on a large bill and you need to cover rent for the next month... but the flexibility can be really cool.
My main two lessons from Freelancing: never sign a contract without really thorough review and never do phase-based payment. My first-ever freelance gig, I signed a contract that guaranteed payment after the client reviewed my work, but overlooked the part that would have set a timeline on the lag between my work submissions and their review/approval. My “phase 3” work submission was in 2013, I'm still waiting on that approval payment. Clients always want to do phase-based payment (I pay you $500, you build the thing) but this doesn't take into account agile iteration, startups running out of money, or the unpredictable nature of problem solving. If the client isn't willing to pay by the hour, they're not serious – I no longer consider phase-based work offers and wouldn't recommend them for any other developers.
Startups:
Startups are also fun but unreliable. Most of my freelance work eventually became startup work – the longest contract was with a Biomedical startup developing a new type of blood pressure cuff. In a startup, you'll wear all the hats you can – by the time I left the Biomedical one, I was:- Writing all their software (Embedded PIC C code and a paired Android App)
- Doing mathematical modeling on arterial + venous wall pressures (you pick up some random skill sets by working at startups)
- Designing experiments to determine if the cuff worked or not
- Debugging hardware (including a few hand-soldered fixes to prototype boards)
- Analyzing experimental data/running statistics on the result sets
- Testing the device in a live operating theater (by far the most stressful moment of my career thus far has been walking into an operating room to test a prototype medical device, dude's on the table about to be cut up, we put the prototype on his arm... and it fails to turn on. ALWAYS. HAVE. A. BACKUP. PLAN. Thankfully we had a second prototype that worked.)
I'd recommend startup work, but always remember the rule of startups:
Most Startups Fail.
As long as you remember that rule, you should be ok. If you start to forget it (taking equity-only commitments instead of payment, selling your car to fund your startup, etc.) then you need to re-evaluate what you're doing.
Corporations:
My personal take on a corporation vs. startup – in a corporation, the processes that people are executing matter more than the people themselves. This sounds really scary and faceless, but is actually pretty nice when you're a customer of the organization. Can you imagine being unable to use Google Searches because “Bob's the only person who can fix that server and he's out on vacation”? That kind of excuse happens a lot in startups, but is impossible in a corporation – the entire point of working in one is that you're replaceable. I found corporate work to be less exciting than startups and freelancing, but it's very secure. At the end of a 5 year project, you may have found a way to save 0.1% of the production cost of a roll of paper towels and made the shareholders millions of dollars... but if you don't, then the job will usually still exist afterward. I don't think that corporate work is inherently bad, it just wasn't for me the last time I tried it.
Non-Goverment Organizations (NGOs):
Finally there's my current role. Depending on the scale of the NGO, it can feel like a startup or a corporation (One Acre Fund feels like it's in transition from one to the other). Typically these have much lower pay than you'd get for equal corporate work and sparse resources in general. You get to feel like the work you're doing has a positive impact, but I actually wouldn't recommend NGO work for most technical people. My experience has been that NGOs value liberal arts above all else – communication, soft skills and personal interactions matter a lot more than they would at more typical engineering jobs. NGOs seem to have a very short attention span as well, the constant churn of 2-year employees makes it easy to become senior but hard to keep attention on any multi-year project.
So why should you consider working at an NGO when you can get better pay and not have to pretend to be a social butterfly elsewhere? Two words:
Street Cred
Working in Silicon Valley, behind the desk of a major corporation, even at a promising new startup - none of these have street cred. People may not actively dislike you for doing one of these, but you're not exactly cool - look at the media language used for Mark Zuckerberg or Jeff Bezos, whose companies are the best case scenario for a tech startup. Other tech work might make you rich, but it will never make you badass.
No comments:
Post a Comment