How much tech knowledge is required for being a PM ?
This post is anecdotal (personal experiences, hearsay from peers / friends in the PM community) and non-exhaustive. If you are a PM and you want to contribute to this, please DM me and I am happy to add to this post with due credits.
Different companies, different flavors; from good to know to must know
- Understanding tech is definitely a plus. But it is not a deal-breaker at many companies that hire PMs. Find out company specific processes to know where it matters and where it doesn’t.
- Where it matters, they would usually have a tech round during the hiring process. Again, what a company asks in the tech round, varies a lot.
- If you are interviewing at a traditional software company, knowing tech well becomes a pre-requisite: For eg: if you are applying for AWS / MS Azure roles, not knowing tech well is not an option.
- Some companies don’t expect tech knowledge at the time of entry for internal movement of employees
What kind of questions I have faced usually in tech round of PM interviews?
Usually begins with trying to understand if I have ever worked as a software engineer. If yes, what specifically, which technologies and when was this latest done. It also has generic questions about how you usually work with the engg team, processes, can you speak their language, etc. However, some companies skip these part altogether.
This is followed by question of the following variety:
- Create HLD for a Photo sharing app / your favorite app / the current product you are working on
- Provide walkthrough end to end of a product you built recently, drilling down at the lowest level detail in tech as possible
- Provide a walkthrough of the most complex technology problem / project you have worked on
- Define the various systems you will create while building a product’s MVP (for eg: vacation booking app)
- Share occasions when you had to participate in engg decision making with your engg counterparts and what was your role in it
What they really want to gauge?
It is clear that PMs aren’t required to code. But then, what is the level of involvement expected on day to day basis? Why are they interviewing you for these skills? What do they really want to know? Again, the answer varies. But the short answer is: PMs are required to do a lot of things. They have to excel at few and they have to at least get by on the others. For most companies, the need for tech know-how from PMs would be of this category. But what does get by mean?
- Do you understand the basic terms that you will hear in stand-ups, in JIRA tickets, RCAs, etc.?
- Would you be able to break-down a problem into sub-problems at system level, so as to ensure nothing gets missed?
- Would you be able to appreciate why building something will take so much time?
- Would you be able to guesstimate the effort to build something (with 60–70% accuracy as that of Engg Manager)?
- Would you be able to gauge how the solution you are building will behave at spikes / scale?
- Would you be able to drive execution in the absence of an EM / TPM?
In most companies, your knowledge of tech is not going to be the deciding factor in your hiring process. Its more like hygiene check.
Ok, So what should I study if I am a non-Comp Sci person entering into PM role?
Like everything else in PMing, learning consumer tech and being abreast with the latest tech, is a never-ending process. Secondly, there is no established bare-minimum that you need to know. And no amount of learning would help if the company wants a Comp Science degree on you as a pre-requisite.
Having said that, I would say knowing the following would be usually a good baseline knowledge:
Internet basics
- What is a request and response?
- What are the broad categories of error-codes?
- What is a server — web server and app-server?
- What is a domain?
- What is routing?
- What is cross-site?
- What is CDN?
- What is a cache?
- What are cookies?
- What is session?
Basics of building a tech application
- What is a client? What is a server?
- What is frontend and what is backend and why are the two separated?
- What should be done at frontend? What should be done at backend?
- What is an API / Service? What is a payload? How to use Postman?
- What is API usage limits? Why are they required?
- What is synchronous and asynchronous communication between systems and when to use which? (Pub-sub / Queue)
- How are systems usually broken down?
Basics of technologies / tools
- What is HTML, CSS, JS?
- What are the JS libraries and why do libraries exist?
- What is a build? What is an integration? What is a unit-test?
- What are the staging environments / replicas and why are they used?
- What is Android Native, iOS native and how are they different from hybrid technologies?
- What is NoCode and how does it work? Where should it ideally be used?
- What is a debug mode?
- What is the difference between memory and leakage?
- What is the difference between code and deployable?
- What is a JSON? How to read it?
- What is a database?
- What is SQL?
Once again, please feel free to leave more in comments / DM me and I will be happy to add to the list.