avatarKrystyna Waterhouse

Summary

The provided content discusses the essential technical knowledge for Product Managers, focusing on understanding tech stacks, programming languages, and the distinction between front-end and back-end development, as well as the implications of choosing the right technology stack for a project.

Abstract

The article emphasizes the importance of technical know-how for Product Managers, particularly in the areas of programming languages and tech stacks. It outlines the differences between front-end and back-end development, explaining the roles of HTML, CSS, JavaScript, and server-side languages like Java, Python, and Ruby. The concept of a "full stack" developer, one who is proficient in both front-end and back-end development, is introduced, along with a discussion on the benefits and potential risks of hiring such "unicorn" developers. The article also delves into the significance of selecting the appropriate tech stack, considering factors such as cost efficiency, scalability, maintainability, compatibility, performance, and the speed of development. It advises that the choice of a tech stack can have far-reaching effects on a company's growth and adaptability.

Opinions

  • The author suggests that while full-stack developers are valuable, their rarity and cost can pose risks to a business, such as over-reliance on a single individual and potential difficulties in scaling.
  • It is implied that a diverse team with specialized skills may be more advantageous than a single full-stack developer, as it allows for better code quality, documentation, and project management.
  • The article posits that the choice of a tech stack is not just a technical decision but a strategic one that affects future hiring and the overall success of a product or company.
  • There is a warning against the assumption that more programming languages necessarily equate to greater value creation in the context of hiring developers.
  • The author recommends leveraging libraries and frameworks to save time and avoid reinventing the wheel, while also cautioning that the chosen technologies must align with the project's needs and the team's expertise.

Tech Stacks and Programming Languages: What Every Product Manager Needs to Know

Technical Knowledge for Product Managers

Welcome to part two of a series of articles covering technical knowledge for Product Management. Today I’m going to cover the basics knowhow a Product Manager needs around tech stacks and programming languages.

If you’d like to learn why I think this knowledge is important, then head back to my article where I discussed WHY I wanted to improve my own technical knowhow.

And don’t forget to subscribe to email updates if you want to be notified when the next article is published!

Programming Languages

A programming language is a means of controlling the behavior of a machine using a standardised set of commands, instructions, and rules.

Each programming language has its own set of features, advantages, and disadvantages, and the choice of language depends on the specific requirements of the project, and to an extent, the familiarity of the developer or team implementing it. Developers use different programming languages to achieve different goals, such as building complex systems, developing algorithms, and creating user interfaces.

In order to write code in a programming language, developers usually use a text editor or an integrated development environment (IDE) to write, debug, and test their code. Once the code is written, it is typically compiled or interpreted into machine-readable instructions that can be executed by a computer.

Photo by Chris Ried on Unsplash

Front-end vs Back-end

What does the front-end refer to?

The front-end focuses on the user-facing side of an application (client-side). Front-end web developers use languages like HTML (the content and structure of the site), CSS (styling), and Javascript (dynamic behaviour/interactivity).

What does the back-end refer to?

The back-end manages the data and logic underpinning an application (server-side). The back-end includes application logic, file system, databases, hosting, web server, web development frameworks, and operating system. Back-end developers commonly use programming languages such as Ruby, Python, and Java.

  • Java is a general-purpose programming language that is used to build a wide range of applications, from desktop and mobile apps to web applications and games.
  • Python is a high-level programming language that is known for its simplicity, ease of use, and flexibility, and is commonly used for data analysis, scientific computing, and machine learning.
  • Ruby is a dynamic, object-oriented programming language that is known for its simplicity and expressiveness, and is often used for web development.

What does it mean when somebody is ‘full stack’?

This term is used to refer to developers who are proficient in developing both the front-end and back-end of a web application.

The term “full stack” refers to the full technology stack required to build a web application, which includes the front-end, back-end, and database layers. A full stack developer has the skills and knowledge to work on all layers of the technology stack. They should use HTML, CSS, JavaScript, and at least one server-side language such as Java, Python, or PHP. They should also have knowledge of databases and web server technologies.

A side note about job postings and unicorn developers

Job postings and requirements lists for developers can sometimes imply that if you could find just one person with the most diverse and rare toolset, it will save you from hiring multiple others. When it comes to hiring a developer, it might look like more programming languages = greater value creation. (You see a similar trend with job descriptions for product managers and designers, by the way.)

Photo by Meritt Thomas on Unsplash

However, more is not always more. The benefits are not linear to the number of programming languages a developer can use. Although full-stack developers are more likely to be capable of working independently, there are some risks in this hiring approach. You will find that:

  • “Unicorns” tend to be very expensive — the more elusive the unicorn, the higher the price
  • Outcomes can become very dependent on one person, when you could have hedged the risk by distributing skills/tasks across a team. This is a business risk if this highly-demanded unicorn decides to pursue an opportunity elsewhere!
  • Multiple people slicing the work can not only achieve the same outcome faster, but allow for better oversight, code consistency and documentation, and project management. Just one superstar may not lead to scaleable results. Team size is a big factor here; a very small, early-stage team may not allow for specialisation in the way a bigger team might.
  • Somebody who is working across many languages may be ‘Jack of all trades, master of none’. It may also be the case that a full-stack developer has a ‘T Shaped’ skillset — ie know many technologies, specialises in one or some.

What’s in a Tech Stack?

Tech stacks, libraries and frameworks

A library is a collection of pre-written code or functions that can be used by software developers to perform common tasks, such as manipulating data or interacting with hardware or software components.

Libraries are usually organized around specific programming languages or frameworks, and they may be distributed as part of a larger software development kit (SDK) or as standalone packages. By using libraries, developers can save time and effort by leveraging existing code instead of writing everything from scratch. Popular examples are Python Standard Library, jQuery, Bootstrap, Pandas, Express, and Axios.

A framework is a pre-built software tool or platform that provides a structure for organizing and building an application and also prevents developers from ‘starting from scratch’ every time. Popular examples include React, Angular, Vue.js, Django and Ruby on Rails.

In general, libraries give developers more control and flexibility, while frameworks provide a more structured and comprehensive approach to software development. But the power of libraries and frameworks is that they save developers time by allowing them to build on the expertise of other developers, and prevent them from re-inventing the wheel.

A tech stack refers to the set of tools and technologies used to build an application. A tech stack may include multiple frameworks that are used together to build a software application.

Photo by Josue Isai Ramos Figueroa on Unsplash

Why is it so important to pick the right tech stack?

Picking a tech stack is a critical factor in application design and development, which shapes not only the products that can be built but also future hiring.

As a PM in an early stage company, you’re unlikely to be making the final decisions on the tech stack, but it’s important to know how the decision can impact the business going forwards.

  1. Cost efficiency: Choosing the wrong technology stack can lead to additional costs in terms of time and money. For example, if a company chooses a technology that is not suitable for their project, they may need to invest more time and money in redeveloping the project in a different technology.
  2. Scalability: The technology stack chosen must be scalable to accommodate future growth of the company. The wrong technology stack can cause bottlenecks and limit the growth of the company.
  3. Maintainability: The chosen technology stack must be easy to maintain and update. If the company chooses a technology that is outdated or difficult to maintain, it can lead to additional costs and downtime. Some technologies are better documented, and offer remediation options for developers.
  4. Compatibility: The technology stack chosen must be compatible with other systems and technologies used by the company. If the technology stack is not compatible, it can cause integration problems and hinder the overall performance of the company.
  5. Performance: The technology stack must be capable of delivering the required performance for the project. If the technology stack is not suitable for the project, it can lead to poor performance, increased cost, and user experience.
  6. Speed of Development: Are there out-of-the-box functionalities and third-party integrations for the software
  7. Employee talent: Are the current team familiar with these technologies, or able to upskill quickly? How difficult will it be to hire and onboard new team members?

So as you can see, picking the right tech stack from the offset is critical to the success of a company as it can impact cost, scalability, maintainability, compatibility, and performance.

If you want to find out which tech stacks some of the largest tech companies are working with, I would recommend this engaging youtube video by Sunshine In My Code: What’s in their Tech Stack? .

Any questions I didn’t answer above? What do you want to learn more about next? Check out the extended reading list below if you want to dig a bit more into this particular topic.

Next week I’ll be back with Everything Cloud Computing. Don’t forget to subscribe for email notifications if you don’t want to miss it!

Further Reading

Programming Languages
Product Management
Careers
Technology
Product Manager Interview
Recommended from ReadMedium