New and improved methodologies are always switching up the way software development teams work, but to keep up with the pace of evolution, the team structure is not the only change that needs to happen. Team members need to develop new skills and sometimes even transition to new roles.
“The engineering teams definitely have to become cross-functional, but at the same time there is a lot of clarity around what every single engineer and piece of the puzzle is supposed to accomplish,” said Daniel Zaltsman, senior manager of community, partnerships and developer relations at DigitalOcean.
RELATED CONTENT: The dev manager’s dilemma: To code or not to code
The type of transformation an organization is going through is going to dictate the skills, tools and technologies necessary for a software development team.
DevOps changes
DevOps has been an ongoing transformation with new techniques being applied to make the life cycle more efficient. The DevOps Institute recently released its 2020 Enterprise DevOps Skills Report, and found for the second year in a row that in order to successfully work on a DevOps team, the “DevOps human” needs to be hybrid.
“In the old days, you would have been a software engineer. How you self-identify would be your core competency, and for two years now with this report what we are seeing is there is definitely an evolution where you have to supplement your core competencies with other skills like security, testing or process knowledge,” said Jayne Groll, CEO of the DevOps Institute.
In fact, Eveline Oehrlich, research director at the DevOps Institute, believes the word developer needs to be eliminated from our vocabulary because it’s not just a developer developing software anymore. It’s not just an operation person standing up infrastructure or a system administrator doing certain workload balancing, she explained. “It is really a combined effort of multiple skills across multiple individuals,” she said.
The key skills that make up a hybrid DevOps human include human, process, knowledge and automation skills, as well as technology skills such as cloud infrastructure skills and functional skills such as IT operations, process and framework skills.
The report also saw a transition from T-shaped humans to E-shaped humans. The T-shaped human has specialized knowledge as well as broad general knowledge. Oehrlich thinks about these types of humans as chefs. No matter what skill level you are, you have to have some capability or knowledge of cooking. For instance, you need to know how to turn the stove on or how to boil water. “You might have some end-to-end perspective on the different cuisine you can cook, but you’re missing a few things such as experience. Either you have no experience or you have experience. Having expertise either from a trained activity or from being on the job allows you to explore things. You are not afraid of failing, you explore and learn from that and you also have the responsibility of execution. You have to deliver. That is the E part of it. The experience combined with the T,” Oehrlich said.
Groll likes to think the “E” in E-shaped human stands for everyone. Security, testing, infrastructure, and development is everyone’s responsibility.
“You don’t have to be a security expert, but you need to know enough to secure your code. It reminds everyone you need to be able to be more expansive. You have to expand your skills and your lens in terms of what role you play,” she said. “We can’t just keep our blinders on regardless of whatever role and just focus on the technical aspects of software engineering or development.”
Value stream changes
The other most common transformation happening in the industry right now is the move towards value stream thinking. According to Dominica DeGrandis, principal flow advisor at Tasktop, organizations are starting to think in terms of how to manage work and how to deliver what their customers are really looking for quickly. She explained this is a shift from a project to a more product-centric way of working.
“With a value stream thinking approach, we are bringing the work to the people. The work that needs to be done for products, features, functionality and business value to improve,” she said. “Design, build and deliver the product. Own it and maintain it continually. That is a whole new world for a lot of organizations.”
Here, in this new way of working, DeGrandis is seeing the rise of the value stream architect role. Value stream architects understand the necessity of building a resilient and secure system, they study the bottlenecks and then help teams address any problems.
Unlike product managers who focus on the prioritization of the work or feature design, value stream architects look at why a product is being built, what are the outcomes they want to produce, and then look at the priority features that need to be worked on, according to DeGrandis.
The other role she sees necessary in the new value stream world is “product journey champion.” According to DeGrandis, this person is doing things like systems thinking at scale, providing coaching advice, and helping practitioners adopt value stream thinking.
“They are a dedicated coach, a champion, that is internal to enterprises and helping move forward this way of working,” she said. When looking to add new roles or trying to figure out what skills are necessary, “always start with the customer and what is missing, causing delays, and where you are not realizing as much business value as you could with customers,” said DeGrandis.
General changes
DigitalOcean’s Zaltsman believes that while we do have these hybrid roles, there is a shift around specific roles that an engineer plays, which translates into job descriptions. For instance, he no longer sees titles like full stack developer, instead he sees front-end developer, back-end developer and sometimes specifying the technology stacks they work with, such as JavaScript developer.
“All of these engineering teams are coming together and providing very clear roles as part of a specific product that they will be working on,” he said. At DigitalOcean, Zaltsman explained that when the company posts a job listing, they will post the technologies that potential candidates will have to know or have experience working with.
According to HackerRank’s recent Developer Skills 2020 report, the top skills and tools today include JavaScript, Python, Java, C#, Angular, React, Spring and Django. When it comes to learning new languages, the top languages to learn are Go, Python, Kotlin, TypeScript and R.
CloudBees’ vice president of engineering Susan Lally sees product ownership coming more to the forefront of software development teams. “It is increasingly more clear that the effectiveness of the team comes back to the effectiveness of its product owner in internalizing the product vision from product management and making it actionable,” said Lally.
Zaltsman explained engineering managers should work with their product counterparts to define exactly what they are trying to accomplish, and leverage the technical expertise available. They can help provide guidance on what technologies will be used to build out the product and identify other opportunities.
“An engineering team should include an even balance between engineering and product. There is a product manager who works directly with an engineering manager, and then the engineering manager oversees a slew of engineers and this whole group is oriented around a specific product,” said Zaltsman.
Additionally, Zaltsman sees the developer relations team being closer to the engineering team, where in the past they were put with the marketing team. The developer relations team can be advocates for developers as well as an extension to the team to help evangelize and bring back product feedback.
“It is important to recognize these supporting teams specifically oriented around the product or service being delivered,” he said.
Building a modern software team
Engineering manager roles are also changing to be more like coaches, according to Zaltsman. Not only are they required to spend time doing people management work, but they have to dive in and try to understand deeper problems to support their engineers with the different technical decisions they have to make on a daily basis.
“That doesn’t mean they are coding every single day, but they are finding they have to get their hands dirty with whatever problems their teams are running into,” said Zaltsman.
As the coach or leader, the manager has to put together their team. A team is made up based on the technology stacks being used and what they want to do going forward, according to CloudBees’ Lally.
“Successful software development teams are a group of software professionals who share a single vision of where they are going and a deep understanding of customer needs and opportunities to improve how they live or work,” said Lally.
Lally explained that teams should start small and support a lean approach in order to move quickly, experiment and adjust.
“Product managers play key roles in connecting ideas and opportunities to potential customers and then bringing this all back to the development team to internalize. Engineers bring ideas to life in code, bringing a passion for the problem space and practices that continually improve the quality, quantity of the code they deliver,” Lally said.
Tasktop’s DeGrandis uses a skills matrix to find the right people for a team. She separates the skills and knowledge needed for the team, and then lists the people who have those skills to see where the gaps are. If there is only one person on the team that has a certain skill or domain knowledge, then managers need to figure out how to cross train people.
“Jobs changing isn’t anything new. Jobs are always changing. There are all new roles as technology expands and grows, which can make people fearful of those roles, but there is a lot of opportunity out there,” said DeGrandis. “Look to see what customers are not happy about and how you can reduce those concerns.”