Monday, August 17, 2020

Philosophy: Startups vs. Corporations vs. NGOs

I've worked at all different types of companies throughout my career – I started off interning with Procter and Gamble just out of College, decided that I wanted to pursue freelance work for a while, moved from there to startups and eventually to an NGO. Most of my current role at the NGO involves scaling problems – transitioning from a startup culture to a corporate culture. Each of them has its pros and cons, I still can't say which is best.

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.)
Startups give you a ton of experience, but are really stingy about money (sometimes in needlessly self-destructive ways) and tend to assume that equity means you should work unrealistically long hours. If the startup is offering only equity, they're not serious – if they can't offer hourly pay, they're not worth my time. The pressure in a startup can be overwhelming, there were more fights in the startup environment than I've seen anywhere else. 

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

Cowboys vs. Soldiers

I classify developers into two main camps: Cowboys (aka Hackers) and Soldiers (aka Tweakers) - cowboys are great for startup environments wh...