Photo by Milad Fakurian on Unsplash
Software product managers with no previous experience in a technical role and who do not know how to write code can now loosen their grip on soft skills and transferable skills. Those are great but not always enough. A reasonable knowledge of software-related concepts is also needed.
The role of a software product manager also known as a digital product manager is to oversee the entire lifecycle of a digital product from inception, launch, and post-launch. It is only logical that added to PM skills some technical understanding is expected, especially for PMs in early-stage startups.
In this article, I have compiled a rich list of resources that have been helpful for me in my product management journey. I have arranged them in a way to give you a crash course on relevant software-related concepts that non-technical product managers should know.
As a product manager, most of what you do falls within the Software Development Life Cycle.
SDLC is a process defining tasks performed at each step in the software development process. It defines a way of timely improving the quality of software built to meet the needs of customers, and within cost estimates.
This is the process of designing the elements of an application in such a way that it is easy to develop and change. System design gives developers a detailed sketch of how they plan to build an application—the architecture, components, modules, data, etc. They know where what goes. Here is a breakdown of some parts of a system design:
To study extensively on System Design, click here.
In software development, separate environments are used to build, test, and ship the entire product. Here is an explanation of them all:
Development environment: A developer’s computer where code is written, bug fixes made, and unit tests run locally, is referred to as the local environment. Whatever the developer does in this development environment does not influence what other developers are working on until the code is pushed to a shared environment like Github [more on this later].
Staging environment: This environment is a mirror of the production environment. It is designed to demonstrate the product progress to product owners, test the code, and fish out potential bugs. Any bug found in this environment does not have an impact on the real users as it is basically a test environment, not the production environment [the real deal].
Production environment: This is the ‘‘Live” environment where the finished product enters the market ready for commercial use. This environment has live data and is accessible to the general public.
To study extensively on Software Environments, click here.
Developers working on a team have a central place where their source code is stored [online repository]. They create a branch of this main repository [master branch] and individually write their code for the part of the application assigned to them.
Once a developer is satisfied with their code and has done all due diligence, they then create a Pull Request [PR] and request a code review, so that their code can be merged with the main repository.
Github is one of the commonly used code hosting platforms for version control and collaboration amongst developers. It helps them know what changes have been made. They can view the annotated history and revert to any version of the code.
To study extensively on
The client-side is sometimes referred to as the front-end [the user-facing side] and the server-side as the back-end [where the data and source code is stored]. Full-stack developers know how to use both client-side and server-side development.
Form validation, cookies, flash games, etc, are examples of what happens on the client-side [the user's computer], while on the server-side actions like connecting a website to a database take place on the webserver.
This is a software intermediary [a messenger] that allows two applications to communicate with each other and leverage each other's functionality. It is like the waiter at a restaurant who takes your request over to the kitchen, they prepare the food, he collects the food, and brings it over to you at your table.
For example, when the client-side [the user's computer] makes an API call to retrieve information [request], the API receives the request and makes a call to an external program or web server.
The server sends a response to the API with the information requested, the API then transfers this information to the requesting application [the user's computer].
To build an app, a decision has to be made on whether to build it natively or as a hybrid. Here is a short explanation of the platforms:
Native apps: These apps are built using software development tools (SDK) for specific Operating systems (OS), like iOS or Android. The code used on one OS is not usable for another.
Hybrid apps: These apps combine the features of both native and web apps, and the codebase is reusable on multiple platforms. They can either be downloaded just like native apps or accessed from a web browser.
Cross-platform apps: These apps allow code shareability just like hybrid apps. But the core difference between cross-platform apps and hybrid is the better user experience on different UI, as a framework like React Native allows the use of native UI views.
Although some product management roles like API Product Manager require the product manager to have core tech skills, most just need a product manager who knows enough software concepts to understand what the developers are saying.
What I hope that I have achieved with this article is to help you move from “I have no idea what the devs are saying” to “I deeply understand what’s being said, what’s important, and the implications for my product”.
Going forward, when you listen to your devs discuss the architecture, dependencies, tech requirements, and assumptions for your product, I will be happy to know that it is no longer all Elon Musk Jargons to you. Feel free to share your experience with me on Linkedin.
Know someone who is trying to get into the product management space? You may want to share my previous article on Entry Level Resources for Becoming a Product Manager with them. Thanks for sharing!