Intro
Before we get into the nitty gritty, I'd like to share a little about my professional background before getting into software development. I studied French and Spanish at university, taught English abroad for a few years and then used these language skills to work in industries such as customer service and translation back in the UK. However, during my late twenties, I started feeling slightly disillusioned and uninspired with my career choices and had pretty much hit a ceiling at my previous company. With the birth of my amazing daughter and the inherent drive to make her proud, I decided to put myself through a part-time coding bootcamp and change career to software development. Time for a new challenge.
Fast forward 6 months and I graduated from Manchester Codes with some exciting skills and a deep sense of achievement. Towards the end of the bootcamp, after putting in countless hours of theory and practice while always trying to lend a helping hand in class, one of the bootcamp tutors kindly offered me a software developer role at his eCommerce fulfilment startup, JustFulfil. I accepted without hesitation and took my first step on the tech career ladder!
What I've learnt
That was 14 months ago. I've learnt so much in that time from working on small UX tickets to building full stack features that I thought I'd share some key thoughts on starting a career as a software developer at a startup.
Just a quick note to say there are many different startups out there employing different developers working on different tech stacks, so please bear in mind that this is my personal and unique experience. I am not saying that working at a startup is a breeze - there are certainly some downsides too - but I hope that this post provides you with an insight into how my development is progressing from beginner to mid-level engineer and the benefits that I've seen along the way due to working in this type of environment.
So, with that in mind, let's get started!
1. Pairing with the CTO
This was something I appreciated right from the start. Before the pandemic hit, and with a small team of 3, I would usually meet up with the CTO and we would work on tickets side-by-side. He would (and still does) encourage, advise, question and provide great mentorship. This initial experience was invaluable as I was able to work closely with such a senior developer at an early stage of my development. Plus, I started to get a clearer idea of the skills and knowledge required to reach a higher level within the tech industry.
Another side effect of this close contact was that I gained a better understanding of the company as a whole, which greatly helped my ability to implement business logic as well as my confidence to become more involved with discussions regarding the tech roadmap. In addition, I was able to shadow him as he planned and implemented certain infrastructure solutions such as using Docker containers for our local MySQL instances. It's always great to watch an expert at work!
2. Working full stack
At a startup, you don't have the luxury of cherry picking a nice UI ticket or playing around with a low priority bug. There are too many new features and critical issues to address that there is simply no time to figure out your "area of expertise". Whether it's UX/UI fixes, database migrations or authentication, you will inevitably need to help out in all areas.
I started my role in the September and spent the first month or so tackling front-end issues and contributing to new features. The following month, I moved on to back-end tickets where I became more familiar with the API and database structure. By Christmas that year, I was in a position to pick up whatever ticket was the highest priority across the whole stack and plan my workload appropriately.
While coding relentlessly on a daily basis helps with your progress, doing it efficiently is not possible without excellent mentoring, support and patience from senior developers. It is tough getting told halfway through a ticket where you've spent hours working on that it may be better to go in a different direction - what makes the difficult next step easier is constructive feedback and proactive encouragement from above.
3. Growing with the codebase
Like watching a young plant grow, seeing a codebase grow with you is just as satisfying. In the space of a year, our codebase has grown so much that it's easy to forget how many lines of code have been written in that time. One of my favourite things is coming across a snippet of my old (and not so well-written) code, taking some time out to refactor it and reflecting on my progress as a developer.
Getting to a stage where you are familiar with all (or most) areas of the codebase is very pleasing and can give you a huge confidence boost, especially when it comes to debugging. Plus, my productivity has significantly increased as I no longer need to build components or integrations from scratch, the essential pieces are already in place and I simply need to borrow and adjust the relevant lines according to the latest use case.
4. Independent developer
When starting a new role, a senior developer will generally talk you through or pair with you on your first tickets in order to provide support and general guidance while you learn the ropes. Naturally, the more experience you gain, the less guidance you will need. At a startup, I feel that this process is accelerated.
While I would make mistakes and ask questions like all developers, the sheer volume of tickets meant that I would make a lot of mistakes and ask a lot of questions at the beginning - but I would learn fast. Having spent the past year learning this way, I am now confident enough to be given a brief description of a feature and I will be able to plan, design and build it myself. Inevitably, there will still be questions and discussions, but there won't be as many blockers and as a result I feel more independent and more trusted by the team.
5. Extra curricular
One of the pleasant surprises of joining a startup in the early stages is that you can pitch an idea to the team and then run with it yourself (if you can fit it into your schedule!). It's useful to change focus sometimes and leave the code to one side while you contribute in a different way. For example, right now I manage the company Twitter account and send out a weekly email to our clients with the latest tech updates. These latest tasks have definitely helped me to improve my content writing skills. My aim for 2021 is to focus a little more on our documentation in order to facilitate the onboarding of new developers and give talks at meet-ups/events regarding a particularly fun subject that I've worked on.
Conclusion
Working at a startup is as hard as the next job, however I have seen some benefits in the past year that have helped me to become a more capable and well-rounded developer in a relatively short period of time. Perhaps these experiences would not be possible at a larger, more established company with rigid processes and several dev teams?
As I've said before, I won't say that working at a startup is better than working at a digital agency filled with PMs, engineers, designers and testers. There will be advantages to working in both environments. I was lucky enough to have that decision taken out of my hands and I'm very grateful for the amazing opportunity at the start of my career.
If you've worked or are working at a startup as a software developer, let me know what benefits (if any!) you've experienced while working at the company or ask me anything over on Twitter.
Thanks for reading! 👋
Top comments (0)