Reader small image

You're reading from  Technical Program Manager's Handbook

Product typeBook
Published inDec 2022
PublisherPackt
ISBN-139781804613559
Edition1st Edition
Right arrow
Author (1)
Joshua Alan Teter
Joshua Alan Teter
author image
Joshua Alan Teter

Joshua began his journey in Project Management as a Technical Lead at Hewlett Packard in 2012 by learning the basics of managing a project and working with stakeholders. In July of 2013, he made the career switch to pursue Technical Program Management at Amazon. During that time, He advanced in his career twice from TPM to Sr. TPM in 2017, and then to Principal TPM in 2022.
Read more about Joshua Alan Teter

Right arrow

Code Development Expectations

In this chapter, we’ll cover code development expectations for a TPM. Though programming isn’t a core competency that you should expect to see come up in an interview, it is foundational to project and program success. If we don’t understand what our team is doing, and if we can’t relate, push back, and advise, then we will constantly be in the dark.

Trust is a very important part of being a leader. You need to be able to trust that your team knows what they are doing and are making the right decisions, but you also need to be able to verify progress and be there for your team when they need your input. Without understanding the basics of programming, it will be hard to achieve the right balance of trust and verification. With that in mind, we’ll go over some fundamental code concepts that are most relevant as a TPM. These concepts are not exhaustive but will provide a good foundation for additional knowledge related...

Understanding code development expectations

TPMs are surrounded by software development teams and interact with developers, support engineers, and development managers on a daily basis. They are involved in technical discussions around requirements, release management, and feature and system designs. So, in the midst of all of this software talk, let’s explore what level of code proficiency is expected in the TPM role.

No code writing required!

As a TPM, your focus will not be on writing code yourself, but on getting it written through others. Of all of the TPMs I know and have worked with, only two—including myself—have written code as part of their role. I’ve heard of TPMs writing code in start-ups, and this aligns with our need to wear many hats because the number of people involved in a start-up is comparatively small and the need to step up has a higher chance of occurring. In larger companies, roles are usually tightly defined, and the overlap...

Exploring programming language basics

Most companies lean heavily toward a specific language or set of languages, depending on what the code is used for. Server-side applications in enterprise settings tend to prefer Java, whereas machine learning (ML) applications perform fairly well in functional languages or hybrid languages such as Python. Whichever language you find yourself closest to, you should learn the basics of that language. If the team you work with is heavily using a functional language and you only know object-oriented (OO) languages, use this as an opportunity to bridge the gap and learn the fundamentals of functional programming. There are books on both language types referenced in the Further reading section of this chapter to get you started.

As a brief recap, OO programming (OOP) is a language paradigm where the application is defined by a series of objects that can interact with each other. An object consists of data fields and methods that act upon the data...

Diving into data structures

Though a TPM is not held to the same level of proficiency as a software developer, we should understand the basic concepts of programming. We’ll cover the programming topics that come up the most in your day-to-day activities.

A Data structures and algorithms class was likely in your first or second year in college if you took a traditional route. As with most of the programming fundamentals, you won’t be using this yourself in your day-to-day work. However, you can think of them as a strong foundation for the language that your development team will be used in most conversations you have with them.

I’ll briefly go over a few of the more common data structures that I come across in design meetings, standups, and general work conversations. I encourage you to read through the books in the Further reading section on this topic for a more in-depth review. Even if you’ve taken the class and remember the concepts, it’...

Learning design patterns

Design patterns is a class that I see developers take often while on-the-job, mainly as a refresher as it is taught in college. It ensures a common ground of understanding, which is why I encourage TPMs to take the class, if available, as well. Here, we’ll explore two groups of design patterns: creational and structural. There are more, but these are the two that I find the most useful for a TPM to have a good understanding of. To learn more, check out the Further reading section in this chapter.

Creational design patterns

Creational design patterns are related to the creation of objects. By creation, I’m referring to how to create an instance of an object. We’ll discuss three of the more common ones next.

Builder pattern

The builder pattern separates the construction of an object from the specific composition of that object. As an example, we’ll take the Mercury subsystem, where you might have two different styles of...

Summary

Code development makes up a large portion of the deliverable work in a tech industry project or program. As a TPM, we are responsible for this work, though do not do this work ourselves. To ensure that we are successful in our role, we discussed the styles of programming that are most in use right now—OOP and functional programming. We learned that many languages allow for a mixture of the two styles in the same code base and that certain styles have benefits for particular tasks.

We learned about data structures that are commonly used and how their performance is measured using space and time complexities expressed through big O notation. We learned about simple list-based structures as well as more abstract structures, such as a graph that represents non-linear, unstructured, and complexly interrelated data.

Lastly, we discussed both creational and structural design patterns, which are foundational to feature and system designs. As such, these patterns will...

Further reading

  • Learning Object-Oriented Programming, by Gaston C. Hillar

This is a great introductory book OOP, starting with a basic real-world understanding of objects and methods. If you are unfamiliar with OOP or want an in-depth refresher, this is a good place to start.

https://www.packtpub.com/product/learning-object-oriented-programming/9781785289637

  • Mastering Functional Programming, by Anatolii Kmetiuk

This book uses both a traditional functional language, Scala, as well as an OOP language staple, Java, to teach the foundations of functional programming. It then goes beyond the basics to get you comfortable using functional programming concepts and styles in your day-to-day programming.

https://www.packtpub.com/product/mastering-functional-programming/9781788620796

  • Hands-On Design Patterns with Java, by Dr. Edward Lavieri

This book gives you a real hands-on approach to learning a large number of design patterns using Java. All...

lock icon
The rest of the chapter is locked
You have been reading a chapter from
Technical Program Manager's Handbook
Published in: Dec 2022Publisher: PacktISBN-13: 9781804613559
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
undefined
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime

Author (1)

author image
Joshua Alan Teter

Joshua began his journey in Project Management as a Technical Lead at Hewlett Packard in 2012 by learning the basics of managing a project and working with stakeholders. In July of 2013, he made the career switch to pursue Technical Program Management at Amazon. During that time, He advanced in his career twice from TPM to Sr. TPM in 2017, and then to Principal TPM in 2022.
Read more about Joshua Alan Teter