Working for a startup can be a great opportunity for developers at any stage to work on projects from the ground up. You get to be in charge of fundamental pieces of the company, or at the minimum, your input is used throughout the process of building the company. That typically isn't something that you'll see, or get to do, if you work for a more established company with hundreds of employees. But that privilege comes with quite a few challenges that, depending on your skill, you might not want to take on just yet or at all.
As the current CTO of a startup I do have junior developers working with me that I hired with under 2 years of experience. And I have first-hand experience of the challenges that they face day to day.
Here's a formal definition of "Startup", before I dive in further as it will help with my talking points.
A startup is a company in its early stages of operations.
Startups are founded by one or more entrepreneurs who want to develop a product or service for which they believe there is demand.
Startups are designed to grow rapidly and are typically funded solely by their founders or with the help of friends and family.
I've worked with about dozen or so startups during the past few years as well, and I can say that most of that definition is accurate. Some startups, however, are substantially larger in terms of team size due to larger seed funding rounds. And this is the first big challenge that I'll address, because it is the most prevalent.
Small dev teams
Mainly due to financial restrictions, most startups can not afford to have more than 2-3 developers on board full time at any one time. Developer salaries usually tend to be on the higher end, even with junior developers. And for that reason, there won't be many of you to work with. And that can be extremely challenging for a developer that is just starting out and hasn't really gotten the opportunity to work on complex systems and code on their own.
Because there is a good chance that you will be asked to work on things that are far out of your comfort zone in terms of what you can realistically code out. And there is a also a good chance that deadlines are going to be on the shorter side. This is where having a large team, or at least a few dev leads, comes in handy.
When I first began working as a programmer, I did so for a company that had around 12 developers and where I personally had a lead developer to shadow and learn from on a daily basis. I actually had 2, one for desktop development and one for web development.
And everything I thought I knew about coding professionally (from my college years) was pretty much wrong. Companies have standards and guidelines that they prepare ahead of time for any new developer joining the team, and if you're used to coding a certain way, you might be asked to abandon whatever it is you were doing for this new system.
Smaller companies however lack most of that, and so you may be writing code that isn't up to par or that is not secure without ever realizing it. And that can definitely slow down your career a bit in the long run.
It can also take potentially much longer to solve problems that a more senior developer could solve in a fraction of the time. And again, this isn't a fault issue, as you don't know what you don't know. But it can definitely lead to increased frustration and dissatisfaction with your work when you're spending days and days looking for a solution that takes seconds for someone else to solve.
Because at the end of the day, you definitely want to be challenged with your work, but you don't want it to be so difficult (due to lack of resources) that it affects your quality of life. You definitely don't want to take your work home with you, but at a startup, that sometimes becomes the norm.
Lack of resources
Typically, lack of finances equates to lack of resources and that couldn't be more true for a startup. Not only are you limited in number of developers (as mentioned above), but you might also lack any kind of QA, security, IT and related technical department as well. In fact, all of those departments will essentially come back to you in some way. You are IT and you are the system admin, to some extent.
And as a new developer, there is a good chance that you won't have any kind of experience in any of these departments. The same thing can happen in a corporate setting, but there will be a higher chance of it happening working with a startup.
During my corporate years, I recall various times where a website was suffering through a DDOS attack. And just as quickly as that issue appeared, the system admins jumped on it to ban IP's, spin up servers and do whatever else they needed to do to mitigate it. This was the usual protocol and so most developers took a coffee break while the chaos went on around them.
There were other times were the database backups become so large that someone needed to begin archiving old backups to save space and to compress data as much as possible. And that someone was the database administrator who's primary job was to do just that.
If you work for a startup, this is where having an experienced lead developer is vital. Because you can still be a part of the solution, but it isn't solely resting on your shoulders. Because it is definitely invaluable to learn as much as you can about security, networks and servers.
And resources don't just include human labor. They can include software, hardware and licenses for different things. If your laptop breaks, odds are you're on your own when working for a startup. If my laptop broke at work, I would submit a ticket and have a new one configured for me by the next work day.
On the positive side of that, working for a startup you become much more resilient when dealing with issues that will eventually appear on a website or app.
If you're looking to build a name for yourself in the programming world, then a startup might not be the place where you'll do it. As many people already know, startups are notorious for having very low success rates. Numbers tend to fluctuate by year, but they usually tend to hover below the 10% mark.
So if you've just spent the past 2 years writing the best code of your life and suddenly the doors shut close due to lack of funding, then nobody is going to get to see that code.
This isn't strictly a startup thing, as I've worked for many large-scale companies who are no longer around for a variety of reasons. And each of those websites that I worked on are long gone by now. And that part of my portfolio is gone as well.
There's also the fact that company names do hold weight when it comes to your next job. And working for 'insert big name here' is going to look much more appealing to a potential employer than a company who barely appears in any search engine.
You might do better as an intern at an enterprise company, than a 'senior' at a startup who only has a few months left.
The work hours
This primarily depends on the company and the culture that they are trying to build out. I've seen startups that strictly follow a 9-to-5 approach and promise to keep it forever, only to fall behind by months on their product roadmaps and end their run as a company with insane deadlines and burnt out developers.
Most startups that I've worked with (including my own) are very fluid and each person in a sense determines their hours as long as they hit the mark on deadlines and product releases. For me personally, that usually means an 8am - 5pm daily workflow with a secondary 8pm - 11pm on most days. But again, no one is forcing me more hours and I personally prefer to stay head of my deadlines by several days.
Depending on how you work, this could be a more ideal work situation that you just won't find in the corporate world where you have to clock in and clock out based on somebody else's schedule.
But you have to go into it with that mentality from the beginning. Some days end at 5pm, while other days might end at 10pm. It just depends on what is happening at that time.
I personally love the startup culture as it fits well into my life these days. But that's coming from someone who's been programming for decades now.
If I were just starting out in the corporate world, I personally would opt for a more mature and robust company where my salary isn't on the line every single day and where I can ask questions, get guidance and gradually get introduced to more complex work.
The resources that you will find at large companies just can't be matched by any seed-stage startup. And those resources definitely help to keep the stress levels low on an already stressful job.
Walter Guevara is a software engineer, startup founder and currently teaches programming for a coding bootcamp. He is currently building things that don't yet exist.
New articles published each week. Sign up for my newsletter and stay up to date.