Photo credits : Simon Abrams on Unsplash

Lessons learned from my 4 years in Software Development & Product Designing.

Nabil Kazi
5 min readMar 17, 2019

It’s been almost 4 years working in Software Industry designing and developing web, android & iOS applications. During this period I have come across various people and companies and have seen the way people work. Based on my experience and a lot of reading, I would like to share some piece of advice for people who are aspiring to join this industry or are new and want to get better at what they do.

This article is mainly focused for software engineers and developers but can also be aligned for other domains. Please feel free to add your thoughts & experiences at the end.


I urge everyone of you to set your mindset right. The mindset to “Learn, & Improve”.

No one is born a master.

Try to keep learning new things, reading articles, reviewing your work and improving on it. If your code from 6 months back and today is the same, you my friend are not improving. There are tons of resources out there which will help you learn as well as improve in your work. If you have written a piece of code and it worked, now’s the time to research & see if there is a better way to achieve the same results.

Every one improves, even the companies who develop programming languages improve over time. Why else would you think there are versions of languages and frameworks out there??


The start of your career is not just about making money, it’s about learning. I would recommend against joining a company which has a multi-tier hierarchical structure where you would be assigned a work and you would have to just complete and submit it without having the whole idea of the project or the impact of your work.

A Startup or a company with flat hierarchical structure offers you the opportunity to see the whole picture of the project, understand it and you could see the impact of your work in real world.

Why are these things important?

Seeing the impact of your own work drives you to do better and the experience & knowledge you gain by working on projects where you have the whole idea & insights about them is invaluable.


We as software developers or engineers are constantly designing and building new softwares. This cycle goes on and on. The clients change, the users change, the requirements change, day on day you’ll be building new softwares.

But before you design or start building one, have you ever tried to understand why are you designing or building this? Who are your users? What impact will this have on the users? What problem are you actually trying to solve with this software?

This is very important to understand for us as a developer. Knowing what problem we are trying to solve will bring out your inputs on the problem and in turn help in building better solutions. This will help you grow a lot faster than to just sit and code whatever is asked form you.


Whatever we are developing, these applications are going to be used by its intended end users. Try to put yourself into their shoes and picture yourself using the application. If we don’t see the solution from their perspective, we may not be able to build something that they’ll like.

Caring about the end users would drive you to develop the application in the best possible way.

Also be open to feedbacks. Every software & design out there has improved from the feedbacks of its users. Taking user feedbacks seriously, builds a sense of trust in the users.

Note this — An appreciation from a single user would make your day!


Your work defines you. Whatever you do, try to complete it in the best possible way. At times you’ll fail, but doesn’t every failure teach us something? If not what to do, it at least teaches us what NOT to do.

At times you would be asked to do something different from your usual work. Maybe you don’t know how to do it, maybe you are not good at it, but why not give it a try? Try researching and you’ll find tons of ideas and then do it.

With ownership comes accountability — With accountability comes confidence.


At times there are too many projects/tasks going around simultaneously. This means a lot of work on plate. Everyone of us gets overwhelmed by the amount of work which is pending. This decreases the productivity since you spend most of the time thinking about all the pending work. This also takes a toll on your mind causing stress and also decreases the efficiency of your work.

Instead plan them. Let the tasks come as they may…

Make a TODO list of all the tasks that you have to complete. Break down each todo item from that list into a checklist. Your Todo item is your specific task you want to accomplish & your checklist should be the steps that would help you accomplish that task. Now, arrange this TODO list as per your priority and focus on one todo item at a time. This would make you more efficient and ease off your stress.

I suggest to use some tool on a daily basis to help you plan and keep you on track. I use Microsoft Todo for personal use and Trello for project management.


Every once in a while take a break from your work and chill. Burning out from work takes a toll on your mind and decreases its creativity. Not thinking about work for sometime refreshes & rejuvenates your mind and helps you see a problem from a different angle.

What are your thoughts on the above? Do let me know in the comments below. Also if you liked the article, Don’t forget to share & CLAP!

If you find this interesting, chances are you’ll find my twitter feed too! I keep sharing articles and stuff related to development, design and productivity on a daily basis. So hop on, follow me on Twitter and enjoy the learning ride!

Special thanks to my grammar nazi friend Zaeem Farooqui for suggesting improvements in the article :D



Nabil Kazi

Product Manager. Notion Systems Builder. Founder Community @TheProductfolks .