Wear multiple hats at once as a Software Engineer
Hey guys,
Talking about experience and journey in this topic ๐
Would have some really good insight for those who are working on their side projects ๐
When working on the side project, you'd have a chance to wear multiple hats at once, so, not just as a Software Engineer, you'd end up in every stage of the Software Development Lifecycle (SDLC) & Product.
The challenges there, the opportunities await. Let's go ๐
Note: before reading, this post is based on my experience, thoughts & preferences ๐
The entire lifecycle of a side project
This diagram presents the full lifecycle, you would be in a different role for each step.
Welcome to the world of solopreneur ๐ง
Planning - Product Manager hat
You likely will ask yourself these questions:
What will I build?
What would it solve?
What technologies should I use?
Who will use it?
What is the market?
How to make money with it?
...
The first hat is you're a Product Manager at this stage where you'd do the planning, expectations, outcomes, and goals.
This part is really important, to give you the consensus to invest in it or not ๐ฅน
In this stage, don't be afraid to ask for suggestions or recommendations from friends or a close network. This would help a lot with the planning.
๐งฐ For the tools, I prefer using Trello to manage tasks. Trello is one of my favorite tools because it's simple and minimalist.
Design (UI/UX) - Designer
Congrats on moving forward to the second stage, before building any application, you must have a proper design (either simple draws or figma-god) ๐น
What kind of UI/System Design should I use?
Not only for fast iteration but also it needs to be beautiful ๐ซฃ
Extendable ๐
Do I need to support mobile/responsive view?
...
Then, draw some ideas, and design the best UI/UX in your opinion.
Draw every screen that you will implement, every form, every action, etc.
๐งฐ For the tools, I prefer using Excalidraw, just need to draw some simple stuff and ready to go ๐
Development - Software Engineer
Ohhhh, finally the most fun part (in my opinion ๐) is where we can start to code the system.
Do not limit your creativity. Try to set up the structure that you think is the best, and try to follow best practices, good conventions, etc.
Don't write sh!tty code, it isn't worth it. If you do it, you do it the best way possible, it is your own property. Treat the project like your child, nurture it ๐ช
At this stage, depending on your journey, you need to decide the tech based on:
Learning first? then go for something new, trendy stuff.
Monetization first? then go for something you are already strong at in order to iterate faster.
I usually use PHP, Laravel, MySQL, Vue & Tailwind. I believe once the project grows, I can migrate it to a new & trendy programming language in no time ๐.
Testing - QA Engineer
Become a QA engineer at this stage. We'll need to validate our entire application.
Try to test the good inputs and the bad inputs. Thinking of the edge cases,...
This would help you a lot in terms of testing - focus on reliability.
Note: If we have more time, why don't we write some E2E test cases ๐. Try to cover the important flows. It would save a lot of time.
Deployment - DevOps Engineer
Rocking on local isn't enough. We have to deploy our application so that people can access and use it.
As a DevOps Engineer, you will think about which Cloud Provider that you need to use:
AWS (1 year free, still have to pay for traffic though)
Google Cloud Platform (free credits)
Vultr, Digital Ocean, etc (cheap & on-demand cloud platform)
Then, the decision on the infrastructure. Cloud compute or Docker-based or Serverless, CI/CD, security,...
I usually go for a normal Cloud Compute (VPS) at first (โค๏ธ Vultr). It's easy and doesn't require much effort. Then a simple CI/CD to check, lint & build new code to the production.
If you haven't tried Vultr, register as my referral to get $100 credit free for the first month to try out. It's a lovely platform to quickly create cloud services in seconds. I've been using Vultr for more than 5 years.
Release - Back to Product Manager
Suppose our projects are ready and well in production ๐.
Our app is pretty new though, we don't really need a Release Plan, just YOLO ๐.
We'll likely need a Release Plan when we have customers & planning to release a big feature.
Monetization of the Project - Sales
This section is pretty big and requires patience ๐ฅน I'll split it up into multiple small sections.
SEO - Search Engine Optimization
Wearing the SEO specialist's hat. We'll need to research and apply the best SEO practices for our home page website and landing pages.
This requires a lot of patience & time, so don't push yourself too hard.
These days, we can ask Gemini or GPT4 for SEO suggestions and use some free tools from Semrush, Entireweb, Google Search Console, etc to manage the performance of our website.
Marketing
Wearing the Marketing specialist's hat where you'll need to drive traffic, increase people's awareness of your brand, etc. There are some methods:
Email marketing
Social media posting
Ads (Facebook, Google, etc)
In-person (lol not for me ๐ฅฒ)
Support
I believe the "Support" role is one of the roles in the Monetization. If you provide good customer support, people'd love your app.
"If you don't take care of your customer, somebody else will".
Furthermore
That's all I have done for my projects, probably there will be more and I don't know ๐ง Will update you if I find another role.
Conclusion
Well, wearing multiple hats at once doesn't seem so bad, it would give you:
The chance to challenge yourself
The opportunity awaits
The pain of each role. It would give you the empathy & understanding of other jobs.
Most important: the experience ๐ฏ
IMO, doesn't seem so bad and I've been doing that for 3 years.
Let's rock ๐
Subscribe to my newsletter
Read articles from Seth Chen directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Seth Chen
Seth Chen
develops awesome software, contributes to OSS, writes tech tips, and loves Vietnamese milk coffee!