Lesson 4 - Activity 1 - What can we learn about roles from job listings?

Time: 15 Minutes

Introduction: In this lesson, we briefly covered some of the common roles in software development teams looking at the common activities they carry out and their necessary skills. Now it’s your turn to dig into these roles a bit deeper and see what you can discover.

Purpose: Having an awareness of roles that exist in software development teams is necessary to help you understand how software is made and know who you need to speak to depending on a given situation. This activity is designed to help you understand these roles more deeply.


  1. Pick at least one of the roles covered in the lesson
  2. Search for related job listings around that role.
  3. Make notes about the activities and skills the role requires and compare those to what we covered in the lesson.
  4. Share your findings on this thread to help others learn more about these roles and compare your findings.

I picked the Coach role for this exercise and here is what I found:

• Work within a delivery team to provide mentoring of agile technical practices
• Guide and teach others using pair programming for:
○ Test driven development
○ Behavior driven development
○ Continuous Integration/Continuous Delivery
○ Automated testing
• Teach architectural principles through the process of emergent design
• Participate in team ceremonies as both a team member and mentor
• Provide observations and suggestions for improvement
• Work with other team mentors and coaches to collaborate on maturing the team and organization agile practices
• Assess and report outcomes to customers and management team.
• Help prepare teams to apply agile methodology in other industries.
• Develop a plan to prepare teams to learn agile methodology and train staff.
• Provide the leadership and knowledge needed in order to effectively expand or introduce agile methodology.


• Expert in one or more of the following languages and practices: Java &/or C#.NET, JavaScript, Android, iOS
• Strong experience in agile principles and technical best practices
• Strong automated testing skills
• Experience with the automated build process, unit testing and source code analysis tools
• Knowledge of Continuous Integration/Continuous Development
• Ability to assess and coach team to optimal agility
• Team oriented and possess strong interpersonal communication skills
• Comfortable working in a variety of social and business environments and multiple technology stacks
• Have excellent time management skills
• Capable of making quick and effective decisions
• Be a strong leader who is capable of training others

So, this is a long list of activities and skills required for some job postings I found online. What seems to stand out from these is that this kind of role requires knowledge from a wide range of technologies. I do not think that deep understanding is required but at least some knowledge needs to be present to take the role.