Wear multiple hats at once as a Software Engineer

Wear multiple hats at once as a Software Engineer

ยท

5 min read

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

Side Project lifecycle

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 ๐Ÿ˜Ž

ย