Maybe it's because I spent the last couple of months interviewing for a new job in San Francisco, or maybe it's because I just spent the past 3 years as a co-founder of Zoomdata. But, I have a few thoughts on my mind about startups that I feel I should really write down. These are from my own limited perspective and from what I've gathered talking to friends and colleagues in the industry. This is written from the perspective of a software engineer, because that's what I've done.
First off, what is a startup? In my opinion, a startup is a company that doesn't know what it's product is. They're also usually small. And, they usually survive on some source of outside money (investors or self-funded). Being a startup isn't really a good or bad thing, in the same way that being a traditional company is not a good or bad thing. Neither is more or less nobel than the other and every company is different.
Something I commonly hear from relatively old tech companies (~10 years) is... "well, we're RUN like a startup!" when describing what it's like to work there. That's almost always a bad sign. Maybe it's a hook to try to get young people interested. In that case, you need to ask more questions to figure out what the company is really like. Just because a company brags about being run like a startup AND being old, does not make them bad. It just means they are probably desperate to find enthusiastic people. Being a startup sucks. Total uncertainty. Total irrelevence. You're fighting for survival and relevancy. This is actually the value of working for an early (Seed/A round) startup. You see and feel the difficulty of keeping a business running. You're not a cog, you're the machine. People missattribute this to meaning the work at a startup is more important to the same level of work at a larger company, but it's usually not. The reality is that early stage companies do not change the world when they stay early stage companies. You have to become a functioning company before you impact people's lives in a measurable way. There are exceptions to this, but companies with more resources and more users impact more people. Generally, that's large companies. Just because a company might one day make a big impact on people's lives does not mean it's not worth pursuing. I've just noticed it's a nuance many people overlook. There's a certain valiance in going to work for a startup that I feel is unfounded in and of itself.
The tech community loves talking about "passion." Especially startups. Companies describe how they love finding passionate people. Sure, yes, that's all good stuff. But, be careful. Passion is by no means a bad thing, but usually a company just means: "people who will work constantly." Younger people without a family who are right out of college are a perfect example of what a startup wants. At that point in your career you feel like you have a lot to prove. This is all very good, but be aware of what you are getting into. You are taking equity that may or may not become real money to build someone else's dream at a potentially lower salary than other viable job offers. You should share that dream with them. Be willing to challenge them if you have better ideas. And, of course, work hard.
It's important to understand that entrepreneurship, startups, technology and software engineering are all distinct concepts. In San Francisco they all get blended together. Outside San Francisco, a lot of people confuse a company like Facebook as a startup, when in reality it's just a tech company that used to be a startup. Many times you will work at a startup as a software engineer and you will not be doing software engineering. Your job is to keep the company running, and if you need to get on a skype call with a customer to show them where the help button is to make them happy to keep the company running, you just do it. A bigger company typically has well defined roles, you're not switching your focus constantly (which some people affectionately refer to as "wearing many different hats" like it's a fun thing to do). A startup can be exciting because of this, but it doesn't mean you will be doing interesting software engineering work every day just because you are at a tech startup.
If a company doesn't consider culture important, you should really work hard to investigate what this means on a day to day basis. Many startup founders view culture as something that happens naturally or is only important once you have a functioning product, but the reality is that this is just laziness. It probably means the founder is more interested in something different from building a sustainable business. Culture is the strongest attribute of a startup to help it differentiate from a big company. Culture is not fooseball tables, it's alignment. It's how you treat problems or crises. Is this the type of company that spends a great deal of time perfecting a new feature, or is it more important to move fast and break things. Both are different cultures and neither is always correct. From what I've seen, when you intentionally choose to not build culture you end up with the cross-product of the worst features from the original founders' past career. Did they work at a place that shamed people for asking questions deemed unnecessary? Congratulations, that's probably going to be continued at this new startup. Do people work constantly, even during vacations? That's probably going to be continued at this new company. Do people value looking busy over actual results? Also probably going to get carried over without intentional action. Notice how none of these examples had anything to do with happy hours or the like? Of course they don't, because happy hours and perks are easy to agree on. Culture means tradeoffs, emphasizing one thing over another. They are hard because they require intentional decisions to be set in place.
When you interview, ask as many relevant questions as you can think of. This goes for big or small companies, but startups just don't have a reputation yet so the interview is your only chance to see how they are really run. If you're not sure what to ask, just google it because it's beyond the scope of this post. From my experience, I found that even deep questions that challenge the basis of the product are not off limits. If they can't answer important questions like their monetization strategy or their plans for growth, how can you ever trust them with your time? Because the team of a startup is so small, you get to contribute too. Challenge the founders and give them hard questions. Not only that, but companies are always impressed by someone who is genuinely interested in how this startup is going to survive.
If you do choose to work for a startup, remember that change is constant. It's different for every startup. One consistent change seems to be a transition to a stable product, usually following a big round of investment. There's a transition from getting things shipped to making things work. A good company will have a plan for this transition, not just let it happen and hope for the best. It's unlikely that the same people who got you to this point of viability are the same group of people to carry it further. This means you. Ask yourself seriously if you want to be part of the transition, or not. Neither is right or wrong.
The last thing I will leave you with is that your career is whatever you make of it. Whatever decision you make and whereever you end up putting your time, make the decision for yourself. For furthering yourself and your own mission. Following your gut is a very "non-engineery" thing to do, but if you practice it and are willing to mess up a few times, it can really lead to fulfillment. Sometimes that's intimidating, so think it through, and if you don't know... take a chance and work hard.