I asked ChatGPT - What does a software developer do? And I got the following
answer.
A software developer designs, creates, tests and maintains software applications, programs, and systems. Their primary goal is to turn a concept or idea into a functional and efficient software product. They work closely with other software development team members, such as project managers, business analysts, and quality assurance analysts, to ensure that the software meets the needs of the end users and the business requirements.
When you ask the same question to people from non-engineering backgrounds or non-tech professions (who lack the context), they believe all developers are the same. Developers are generally called "IT employees" or "Techies" in India. For most people, the entire programming and software development paradigm is a big black box that either leads to amazement, applause, or common jealousy over the disproportionate amount of money people in this field make.
On the other hand, people with enough context about how technology products are built classify and differentiate developers by their area of work. Depending on their skillset, developers who work on the application layer are categorized into frontend developers, backend developers or full-stack developers. Similarly, we have terms like mobile developer, Android/IOS developer, Flutter developer etc., for people working on mobile and IOT devices. The exact title (and sometimes responsibilities) can vary depending on the size of the organization and the convention they are following for defining their organizational hierarchy. But developers are compared on their skill set and their years of experience.
But there is a unique breed of developers that exists. They are different from all the other developers. They are challenging to categorize because the words like frontend, backend, mobile, full-stack, DevOps, Testing etc., are just subsets of their work and career journey. These are people working in early-stage startups. Most of the time, it's unclear to them why words like work-life balance have no meaning in their life. But you will still find them searching for a way to deploy their latest creation in the most effective cloud solution available at 2 AM.
Let me tell you what it means to be a developer in an early-stage startup.
It roughly translates to the following conditions and constraints -
You will always have limited resources: Since the funding is limited, all the decisions ranging from selecting tools, technologies and infrastructure to hiring senior and junior developers, will be constrained by budget. You must work with minimal budgets and find creative solutions to build products efficiently.
Your pay will be less than your friends - Early-stage startups often reward their employees with ESOPs instead of salary. The idea is to have skin in the game and reward people through long-term wealth creation. Whether you win long-term is a variable, but it will affect your living standards and a few life choices in the short term.
Unclear or Evolving product and customer requirements: Developers may need to adapt quickly to changing priorities and pivot based on customer feedback or market demands.
Everything will be due yesterday - Startups focus on rapid development and iteration to bring products to market quickly. This pace always leads to tight deadlines and intense workloads for developers.
You are the product manager, developer, tester, DevOps, Customer support and everything else - You will have to wear multiple hats and solve the problem from scratch. You will have to work on everything and anything required to build, deploy, and maintain the product and take it to the next level. And there will always be a next level. Your influence on product decisions is a double-edged sword, as your choice can directly influence the startup's success.
If you are successful, everything will be on fire - I have seen two journeys where we scaled up more than 5x in traffic within 30 days. Oh, the stories I can tell you. But this is part of the deal because you have to prioritize speed over an optimized solution, which will often result in systems (or some parts of the system) that will give performance challenges at a sudden scale.
Processes that are always in the process of changing - Irrespective of how hard people try (which they don't in most cases), there will always be a need for more structure and strategies, resulting in inefficiencies and communication challenges. Accumulating technical debts and poor documentation will be the least of your worries.
But in the end, most of this is worth it.
Whenever I say this, people first assume that it's because I made a good amount of money down the line. But let me tell you - It's much more than that. The sheer amount of knowledge and the kind of versatile experience you get from being a startup developer will catapult your career by many years. It has a bizarre compounding effect, transforming you into a confident player who can compete in any game. Words like "imposter syndrome" will be erased from your life's dictionary if you are true to yourself in your journey and keep attacking every problem you face.
Your actual job title is "Problem Solver".
Your modus operandi has to be simple - You will be given a problem statement with some considerations and constraints, and you are supposed to find a good solution. The constraints can be as simple as - Solving the problem using your current tech stack because your team members don't know anything beyond that. Or it can be as complex as "Implement this using this new XYZ language/database etc., in a short period, and the result should be production ready". Half the battle will be won if you can define the product and the corresponding engineering problem well. Third-party SDKs, libraries and open-source packages will give you trouble and waste many hours of your life.
But nothing compares to the feeling of creating value for end users. Once you see those users using your product, all the pain will melt away, and you will feel profound joy. Do this on a long enough timeline, and you will end up solving all the problems of your end users.
You guessed it right - I am a startup developer.
I sold my first application when I was 17. It was an ASP.NET(C#) application created for a local coaching centre. I still remember what I felt that day. I have been in love with computers for as long as I can remember, but this was the nirvana moment of my life. I grew up in a slum area with real-life constraints on everything, and this moment felt like a superpower was granted to me.
Fast forward to 14 years in the future, I have-
Worked on some of the most complex technology systems you can build - Media streaming, real-time communication, code compilation engines, high-frequency trading, virtual currencies and social networks.
Co-founded a company and scaled it up to $2 Million in ARR without any venture capital.
Served over 20 Million unique users through various systems I architected from scratch. (A special mention to my teams. Each of them was/are also "the startup developer" in the purest sense of the word. Thank you for putting up with me)
This entire blog series will be dedicated to all the "startup developers" out there. The blog aims to share the learning, hacks, tips and tricks that have worked for me. If I can save you even a few hours per week, I will count it as a win.
If you are one and you are stuck on a problem statement, feel free to ping me directly on Twitter, Linkedin or Instagram