What does a software engineer do?
If you work in IT, you know one role can have many names. As this conversation between Makeith, a computer science college student, and Chris, a software engineering manager at Red Hat shows, an engineer's job scope is broad and adapts with time, industry, and organization.
[ Become a Red Hat Certified Architect and boost your career. ]
Makeith Hedgpeth: What field of engineering are you in?
Chris Bynum: Currently, I'm a software engineering manager, where I've been for about a year now. Previously, I served in various other software engineering consulting roles for about 14 years.
Makeith: How did you know you wanted to be a software engineer?
Chris: In my grade school days, there was a great show called "A Different World." Dwayne Wayne, one of the main characters, was an engineer who loved math. I was also great at and loved math. I hadn't given much thought to the engineering part yet, but I had taken a computer programming course in high school where I learned basic programming with C and excelled.
Pursuing a bachelor's degree in computer science felt like the right path to take, and it has proven to be. I believe it was very helpful for getting my foot in the door, and I'd recommend it to anyone trying to break into tech because of the strong foundation it provides. However, having that four-year degree is no longer the only way to break into tech. There are so many avenues now, like sales and programming boot camps. There are also "micro-degrees" that allow many people to land a job quickly even if they don't have the resources or desire to acquire a degree.
[ Learn about the role of an agile architect. ]
Makeith: What do technical program managers do?
Chris: Technical program managers (TPMs) are responsible for driving large projects (sometimes multiple projects), tracking progress, and reporting results to essential stakeholders in stakeholder meetings. When I was a senior TPM, I was responsible for building a program centered around delivering technical training to Red Hat engineers who regularly work with our customers. TPMs are typically individual contributors (IC), which means they are not responsible for managing other associates. A few of my other daily responsibilities included:
- Making decisions on tools to use, metrics to track, and how metrics are measured
- Finding and creating technical course material for field engineers
- Making courseware and lab environments available to field engineers to train
One of the great things about having a technical background is having the opportunity to share that knowledge with others. I can also build a strong reputation for the programs I design because of my ability to help.
Makeith: What do senior consultants do?
Chris: Before working in engineering management, I worked as a consultant and consulting manager for about 14 years. I enjoyed these roles because they allowed me to help customers solve problems they thought were extremely difficult or impossible to fix.
Consultants are software engineers that work directly with and for customers. It's challenging work, but the exposure to different industries and problems is invaluable. A consultant's primary responsibilities are to deliver on the technical tasks required for a project, such as:
- Developing new features
- Developing unit tests
- Configuring components
- Running load tests
Though not all are tech leads, senior consultants can sometimes double as tech leads. They are responsible for designing architectural systems, completing development tasks, and handling the overall management of the consulting teams working to deliver on projects. Typical tasks include:
- Creating system design documents
- Project status reporting
- Customer presentations
- Project and program management tasks
- Mentoring junior consultants
[ Download The path to GitOps to put the right tools, workflows, and structures in place to enable a complete GitOps workflow. ]
Makeith: What about consulting services managers?
Chris: In this role, my primary responsibility was to manage and grow my organization's consulting business. Consulting sales are the top priority and the primary metric by which my performance was measured. A typical day as a consulting director includes:
Customer meetings (sales): When a customer is considering a purchase, consulting leaders are there to listen to challenges the customer is having, understand their technology environment, communicate the value of our products and consulting services to them, and develop a tailored plan for the customer to get the most business value.
Sales pipeline review and forecasting: In these internal meetings, we discuss the sales pipeline, or all the customers we believe we can sell our consulting services to immediately or in the future. Understanding the pipeline allows our leaders to project financials and give our executives an idea of how the business is doing.
Customer meetings (escalations): Sometimes problems do arise. It is consulting leadership's responsibility to intervene and help resolve any issues that have been escalated. This might include level-setting expectations or implementing a bit of technical expertise to guide the team in the proper direction.
Account team meetings: Consulting leaders work as a part of an account team, which is a group of people that work together to understand the strategy and messaging to best support the customer.
1:1 meetings: I'll describe these below as they're the same as I do in the engineering manager role.
Makeith: What does a typical day look like for an engineering manager?
Chris: As an engineering manager, my typical day starts with a department team meeting called a Scrum of Scrums. This is a scrum technique for connecting teams collaborating on the same project. In this meeting, we discuss any items blocking progress in developing our product. There are many different teams with various responsibilities, and sometimes the teams depend on each other's pieces of work to get things done. This is the optimal time to get answers to cross-functional questions. I also have several other meetings throughout my work week, including the following.
1:1 meetings: I conduct these with my direct reports. We discuss their professional development, any challenges they may be facing at work or even at home, opportunities for them to grow or get more involved with the company, and much more.
Scrum standup meetings: I have these meetings with my individual development teams to understand the status of each team member's work and call out any items that may need follow-up from other groups.
Program meetings: These meetings are opportunities to meet with other groups at Red Hat that support our product during development and after it is released to our customers. Those groups include product management (who speak with customers to understand their needs), product marketing, product support (who handle customer cases when they encounter issues with our product), and more.
[ Learn how to build a flexible foundation for your organization. Download An architect's guide to multicloud infrastructure. ]
I also work on several other items as a manager. These don't necessarily happen every day, but they require my time as an engineering manager:
People management: A large portion of my job is connecting each individual's work to the company strategy and ensuring my team's overall needs are met. In addition to general 1:1 meetings, I conduct periodic performance reviews and enact equity and salary adjustments every 12-18 months.
Product release management: This includes feature reviews, bug tracking, and reviewing requests for enhancements.
Architectural reviews: These are team discussions to ensure we are making sound technical choices as we build new features. Will the product be able to scale? Is it secure? Is it reliable? What happens in cases of failure?
Driving working group discussions: Working group discussions help me keep track of all the collaboration between my team and the groups they communicate with to get their jobs done. I'm working on a program to allow my team to connect with other people in the company who interact with our customers much more frequently. As I'm driving this effort, I need to support its progress by tracking metrics and keeping an eye on the budget.
Financial reviews: Once a product goes to market, we need to answer questions about whether it's selling well and its revenue is growing.
[ Take a Linux infrastructure planning assessment. ]
Interested in an engineering career?
There are a ton of roles in the tech industry in and around software engineering. In many ways, they're all related but still vary in many aspects. Some of them are:
- Engineering manager
- Product manager
- Program manager
- Technical marketing manager
- Software engineer
- Developer advocate
- Software engineering consultant
- Account executive
- Solutions architect
- Software maintenance engineer
- Technical account manager
- Customer support engineer
- Instructional designer
If you're trying to level up in your career, particularly in a leadership capacity, understanding not only how to be a leader, but also how to enable effective collaboration and productivity, you will want to sharpen your project management skills. If you are interested in learning about project management training, try reading resources like the Project Management Book of Knowledge (PMBOK), taking Scaled Agile Framework (SAFe) training, or doing other agile training.
If you can land a job in software, you can bring so much individuality to your career, including becoming a leader in your area of expertise. The software market is persistent and will ultimately grow, even through periods of economic downturn. The more perspective subject matter experts can provide about their careers, how they got there, and how they see their careers evolving, the bigger impact we'll see in a new generation of contributors being born, and hopefully, in turn, better software will be developed.
Navigate the shifting technology landscape. Read An architect's guide to multicloud infrastructure.