I was thinking to write this article for a long time but couldn’t get a context or title to frame my words. So I thought of putting it as “A Product mindset”. Target audience for this article is not only Developers or QA but it’s entire release train including Product and Management.
I want to highlight few things we do in our daily development but we need to identify how we can make it better and how to leave a foot print on the product we are working on. Remember there is only one goal of entire release train to make Customer Happy. We are spending so much, working day and nights to ship our products to the customer to make them happy.
From my app development experience, I have identified few things which we put into practice can help the product a great deal.
- Always put user’s first: This applies to everyone when a designer designs things they need to think ease of usage of a particular page motion, colors. When developer design something they need to think the feature should behave as expected and not sluggish. When QA tests the feature they need to think as a user as well. I want to bring the point here is that User Experience is the key and it applies to every process.
- Learn to put your point: There are instances when we don’t agree on a certain design or architecture, functionality, acceptance criteria etc. We need to put our point and back up ourself with facts. It’s tough because often we think our knowledge may not be enough to challenge a decision but we need to grow and this is the first step to speak up.
- There is never a perfect time to ship a product: We have passed the old way of Product Development in which SDLC was going on years to ship a product. The market is very competitive when we are working on an application we always have chances for improvement. “Our goal should add fewer features initially and ship faster”. There is never a perfect time we can think to ship our product, there is always a room for improvement. Working in Agile Team’s that’s always possible so we need to constantly improve the product. Once in the hands of the user, we know feedback (through Alpha, Beta testers)and we can improve from there.
- Avoid Over-Engineering: In a software development, there is always a better design and ways to do certain things. There should be a hard line which a developer needs to draw to think it’s a shippable and production design. We can always improve the software through Tech Debt.
- Be Dynamic: We should never be repelling for a certain role, opportunities, and responsibilities & take it as a chance to grow. The developer should never have constraints to work on a feature or a team. Same applies to Product roles as well. There is always a position we need to fill in the shoes for certain people skills never die when given a chance we can always sharpen the skills and make the best use of it. We should accept and take chances to learn and grow.
- Innovation and Execution: In a software development both should go hand in hand we cannot keep one for later. Your thoughts to innovate should never stop and execution of what you do should be perfect.
I am sure there are arguments and reasons for each of the above points mentioned but I’m sure a lot of you will agree on these points and would have experienced as part of Software Development Life Cycle.