Working with software
development teams
Jose Miguel Gutierrez
Objectives
§ Know the technical people you will have
to interact with.
§ What technical information and other
considerations should I know to for a
project I will work on?
§ Know how software is delivered and
maintained.
I present you ..
Your team
I present you .. your team
A typical software
development team
(roles)
BAs (Business
Analysts)
§ What they do: Understand what the
customer really needs and express
those needs as requirements.
§ Common motivators: Define features
that will surpass the customer
expectations.
§ Common problems: Get specifications
on time.What the customer really
needs?
§ Common conflicts: Need to change
these requirements but I will get in
trouble with the team.
Developers
(Devs, Software
Engineers)
§ What they do: Let’s build it!
§ Common motivators: I am going to use
the latest and coolest tools?
§ Common problems:What is this
project/application for? Whatever.
§ Common conflicts: Nobody understands
our job! It will take more time because
*&^%&* otherwise the application will
have problems later.
QAs (Quality
Assurance,
Testers)
§ What they do: Let’s break it! (Using
manual and automated testing tools)
§ Common motivators: I am going to find
a lot of issues/bugs in this application.
The application is stable now! (high
quality)
§ Common problems:The requirements
are not clear. I only will test when the
project is complete (Quality Control
instead of Quality Assurance).
§ Common conflicts:Testing takes time!
You cannot bypass QA!
DBAs (Database
Admins)
§ What they do: Responsible of the
databases (data, database servers,
configuration, security).
§ Common Motivators: Security and
performance.
§ Common problems:What is this
database for? Whatever, let’s apply
global database policies.
§ Common conflicts:You can’t change
databases without N authorizations.
SCRUM works much better with this!!
An automated software delivery process ..
DevOps
§ What they do: Let’s improve our
delivery process with new tools!
§ Common Motivators: How can I make
this delivery process as fluid and smart
as possible?
§ Common problems/conflicts: It doesn’t
matter if we break something in the
delivery process we will fix it we think
in the long term!
SysAdmins
(Systems
Administrators)
§ What they do: Ensure that the uptime,
performance, resources, and security of
the computers they manage meet the
needs of the users.
§ Common Motivators: Let’s have every
server tuned and connectivity and
configuration updated and tracked.
§ Common problems/conflicts:Why
everyone wants to change the
configuration of my servers? We
scheduled this server config update but
we haven’t informed anyone.
How to communicate
better with software
development teams? Do
I need to learn to code?
Short answer: It depends? .. Most of the times NO.
Why not??
§ Coding is interesting .. however
mastering it requires time and real
world experience.
§ Fast evolving .. even developers
complain about that.
§ Development teams won’t enjoy
micromanagement .. they are the
specialists. Strongly technical, pride on
their craftmanship
§ You will be at risk to be judged as a
developer instead of a manager.
So .. what should
I do??
Let’s say you are going to be a new
manager in a software project:
§ Learn some general technical concepts
§ Know the team members profiles and
motivations
§ Know the team dynamics and possible
conflicts
§ Learn the “common” terms
§ Request an application walkthrough
§ Review the high level documentation
Some general
technical concepts
Functional
requirements
Non-Functional
Requirements
§ Performance (e.g. each request in less than
200ms)
§ Scalability (e.g. should support up to 2000
concurrent users)
§ Capacity (e.g. should support 500
concurrent users regularly)
§ Availability (e.g. should be available 99.5%
of the time)
§ Recoverability (e.g. what happens if you lose
connection)
§ Maintainability (how easily you can change
and improve the app)
§ Security (e.g. HTTPS, should address top 10
OWASP security risks)
§ Regulatory (should accomplish tech
standards for the industry)
§ Usability (intuitive, easy to use)
§ Interoperability (connect and share
information easily with other applications)
Architecture
diagrams
Knowtheteam
membersprofiles
andmotivations
Know your team members, go to lunch
or similar activity, break the ice, feel
their motivation level and what can you
do to improve things (tools, training,
food, leisure activities)
Knowtheteam
dynamicsand
possibleconflicts
Day to day monitoring: capture the
quality of interactions in the team ..
There are fights? There is trust? Are
there bottlenecks? .. Collaboration and
Trust are specially important in Agile
Learn the “common”
terms
Become familiar with the most used
business and technical terms.Who can
help me to learn this common language?
Requestanapplicationwalkthrough
Take notes and ask questions not only about regular functionality but
also about non-functional specifications
Review the high level
documentation
Where? Confluence
JIRA
Project Tracking .. and Collaboration
Software
Software Delivery
Process/Pipeline
1.CodeReview/2.CI(Continuous
Integration)
Terms: Repository (e.g.: Git + Bitbucket), CI (e.g.:TeamCity)
3.TestinQA/4.ApprovalinUAT/5.Goto
PROD!
Terms: Environments, Automated Deployment (e.g.: Octopus)
MonitoringandDiagnosis
Terms: Monitoring tools (e.g. Splunk)
IncidentsResponse
Terms: Incident management tools (e.g. PagerDuty)
IncidentsResponse
Terms: Incident management tools (e.g. PagerDuty)
Disclaimer
§ This is just ONE aspect of handling
projects (work with a technical team).
§ There are other stakeholders to deal
with and knowledge/tools to apply. But
this is out of the scope of this
presentation.
Thank you!

Working with software dev teams

  • 1.
    Working with software developmentteams Jose Miguel Gutierrez
  • 2.
    Objectives § Know thetechnical people you will have to interact with. § What technical information and other considerations should I know to for a project I will work on? § Know how software is delivered and maintained.
  • 3.
    I present you.. Your team I present you .. your team
  • 4.
  • 6.
    BAs (Business Analysts) § Whatthey do: Understand what the customer really needs and express those needs as requirements. § Common motivators: Define features that will surpass the customer expectations. § Common problems: Get specifications on time.What the customer really needs? § Common conflicts: Need to change these requirements but I will get in trouble with the team.
  • 8.
    Developers (Devs, Software Engineers) § Whatthey do: Let’s build it! § Common motivators: I am going to use the latest and coolest tools? § Common problems:What is this project/application for? Whatever. § Common conflicts: Nobody understands our job! It will take more time because *&^%&* otherwise the application will have problems later.
  • 10.
    QAs (Quality Assurance, Testers) § Whatthey do: Let’s break it! (Using manual and automated testing tools) § Common motivators: I am going to find a lot of issues/bugs in this application. The application is stable now! (high quality) § Common problems:The requirements are not clear. I only will test when the project is complete (Quality Control instead of Quality Assurance). § Common conflicts:Testing takes time! You cannot bypass QA!
  • 11.
    DBAs (Database Admins) § Whatthey do: Responsible of the databases (data, database servers, configuration, security). § Common Motivators: Security and performance. § Common problems:What is this database for? Whatever, let’s apply global database policies. § Common conflicts:You can’t change databases without N authorizations.
  • 12.
    SCRUM works muchbetter with this!! An automated software delivery process ..
  • 13.
    DevOps § What theydo: Let’s improve our delivery process with new tools! § Common Motivators: How can I make this delivery process as fluid and smart as possible? § Common problems/conflicts: It doesn’t matter if we break something in the delivery process we will fix it we think in the long term!
  • 15.
    SysAdmins (Systems Administrators) § What theydo: Ensure that the uptime, performance, resources, and security of the computers they manage meet the needs of the users. § Common Motivators: Let’s have every server tuned and connectivity and configuration updated and tracked. § Common problems/conflicts:Why everyone wants to change the configuration of my servers? We scheduled this server config update but we haven’t informed anyone.
  • 16.
    How to communicate betterwith software development teams? Do I need to learn to code? Short answer: It depends? .. Most of the times NO.
  • 17.
    Why not?? § Codingis interesting .. however mastering it requires time and real world experience. § Fast evolving .. even developers complain about that. § Development teams won’t enjoy micromanagement .. they are the specialists. Strongly technical, pride on their craftmanship § You will be at risk to be judged as a developer instead of a manager.
  • 19.
    So .. whatshould I do?? Let’s say you are going to be a new manager in a software project: § Learn some general technical concepts § Know the team members profiles and motivations § Know the team dynamics and possible conflicts § Learn the “common” terms § Request an application walkthrough § Review the high level documentation
  • 20.
  • 21.
  • 22.
    Non-Functional Requirements § Performance (e.g.each request in less than 200ms) § Scalability (e.g. should support up to 2000 concurrent users) § Capacity (e.g. should support 500 concurrent users regularly) § Availability (e.g. should be available 99.5% of the time) § Recoverability (e.g. what happens if you lose connection) § Maintainability (how easily you can change and improve the app) § Security (e.g. HTTPS, should address top 10 OWASP security risks) § Regulatory (should accomplish tech standards for the industry) § Usability (intuitive, easy to use) § Interoperability (connect and share information easily with other applications)
  • 23.
  • 24.
    Knowtheteam membersprofiles andmotivations Know your teammembers, go to lunch or similar activity, break the ice, feel their motivation level and what can you do to improve things (tools, training, food, leisure activities)
  • 25.
    Knowtheteam dynamicsand possibleconflicts Day to daymonitoring: capture the quality of interactions in the team .. There are fights? There is trust? Are there bottlenecks? .. Collaboration and Trust are specially important in Agile
  • 26.
    Learn the “common” terms Becomefamiliar with the most used business and technical terms.Who can help me to learn this common language?
  • 27.
    Requestanapplicationwalkthrough Take notes andask questions not only about regular functionality but also about non-functional specifications
  • 28.
    Review the highlevel documentation Where? Confluence
  • 31.
    JIRA Project Tracking ..and Collaboration Software
  • 34.
  • 35.
  • 38.
  • 40.
  • 41.
  • 42.
  • 43.
    Disclaimer § This isjust ONE aspect of handling projects (work with a technical team). § There are other stakeholders to deal with and knowledge/tools to apply. But this is out of the scope of this presentation.
  • 44.