Logo

dev-resources.site

for different kinds of informations.

Managing a Software Development Team: Some Experiences

Published at
9/6/2021
Categories
agile
methodology
software
development
Author
oldstager
Author
9 person written this
oldstager
open
Managing a Software Development Team: Some Experiences

Introduction

Managing a software development team is never an easy task. It consists of 2 sides:

  1. technical things
  2. non-technical things.

This task is often assigned to the project manager, VP Engineering, Software Development Manager, etc. To be succeed, one has to consider those 2 sides. In this article, I will ouline some of my experiences in managing a software development team. This list is not meant to be complete nor perfect. You may need more but at least you will be in the safety line level one if you do care with these issues.

Decide the tools which will be used by the team

Well, this is a bad news if you donā€™t have enough technical capabilities. Once you donā€™t decide the tools, your team will be confuse as they have more than one preferences. Itā€™s not funny to have your team uses PHP with different versions, some use WAMP while the others use XAMPP or maybe PHP which comes from some Linux distros. Itā€™s not funny to have your team uses Notepad, Visual Studio Code, Textpad, Vim, Netbeans, Eclipse, for their IDE/Text Editor. This will waste much time and bandwidth. Consider this, if they use different tools, then when someone says: ā€œuh oh, my Vim always give me a tab and not some spaces, how do I turn the tab into spaces?ā€ and then nobody can answer this and probably think ā€œthat is your responsibility, I donā€™t care because I never use Vimā€. Now consider if everybody uses Netbeans (note: I donā€™t have any relation whatsoever with Netbeans nor a Netbeans evangelist), when someone yell ā€œHow do I create a new PHP module in Netbeans?ā€, chances are some of the guys in your team know about this.

Use a specific software development methodology, probably with some minor adaption

A software development methodology consists of process and modelling. It guides the team through the process and enable the team to model the software which is built by the team to solve client problems. It is important to use the specific methodology so that everyone in the team knows what and how to do the development. If you donā€™t decide any methodology, then your team wonā€™t have any guides. Remember, you have to use a specific methodology but donā€™t be too rigid. Your team may consists of people from many backgounds with many level of capabilities. For example, you may use a Unified Process methodology but because your team is limited and donā€™t have time to learn how to use UML, then donā€™t push them to use rigid UP methodology. The most important thing here is process. Do use that process but donā€™t be too rigid.

Make some conventions regarding technical issues

Again, this is important to keep the team away from the state of flux and let the guys in the team communicate with the same language. You surely donā€™t want your team to have more than one variable / property naming system, right? What if some programmers use ā€œthis_is_a_variableā€, while the others use ā€œthisIsAVariableā€? quite confusing, I guess. You may need to define some coding conventions and probably uses software tool to force this conventions, for example if your team uses Rust, clippy can help you and your team.

Enforce Programming Idiom

Every programming language, together with their ecosystems and development tools are such a complex beast. Usually, in the beginning, the most important thing is "it works!", but turns out that this may decrease productivity since there are more than one thing to do somenthing, reducing readability. Enforcing programming idiom is important to increase source code readability.

Know the client(s) and their problems which are tried to be solved

You must understand this good enough so that you can define the scope of the problems and deal with the problems.

Decide the scope of the problems and insists on this.

Clients basically donā€™t understand the requirements, so your duty as a leader is to define the scope of the problems which are tried to be solved by the software. You must cooperate nicely with the client and have the information understood by all team members. From programmersā€™ point of view, the uncertainty caused by scope uncertainty will lead to frustration. Well, I do understand that agile methodologies encourage changes, but who want to deal with changes everytime? What I am trying to say is, a software development leader should understand that changes are possible but this should be done within the scope. Donā€™t play with programmersā€™ heart šŸ˜‰

Have a good interpersonal relationship and donā€™t be a jerk

I know that this software development task is not easy. Clients always ask the progress and the team is in a stress condition. It really helps to just stay with the team and always willing to help them whatever you can than just act like a jerk who walks here and there and yelling. Trust me, the team will respect you more if you are always willing to help them.

Never let the team in a state of flux

Uncertainty comes everytime. Whenever the team has anything uncertain, your decision is needed to keep them away from confusion. You do understand that you have to have a good grasp in technical side and problem domain to make a good decision, donā€™t you?

Let the team concentrate on technical matters

Ok, pay attention more to non technical matters so that the team can concentrate on technical side. Donā€™t let them do any clerical things since programmers (usually) hate to do administrative things. Itā€™s good to have a dedicated person to deal with all administrative things.

Let the team member knows each other about progress and difficulties

Opennes is important. By let them know each otherā€™s progress, you keep them in a fair situation. Low salary probably can be understood, but unfair treatment can not be tolerated.

Inform the team about your progress too

So you think you can hide your progress? The team will surely want to know that you do your jobs too. If you hide your progress, they will lose respect and trust in you.

Communicate. Communicate. Communicate

I can not emphasize this more. This is really important for the team to have them communicate each other. Your tasks will be to communicate with them and act as a liaison between the team and the client. Oh and donā€™t forget, have a good sense of humour.

Always keep backup of everything

You donā€™t need to backup everything if you are sure that you always live in an ideal situation. You should keep backup in more than one place. Compress them and have them uploaded anywhere on the Internet or in a storage server if possible.

Use Version Control System

Version control system is a software which can be used to track the software source code versioning. You may use Git or Mercurial for this purpose. With version control systems, the progress is transparant. Also, any bugs and improvement can be tracked.

Use web based bug tracking system, project management software, and/or wiki

This will keep any information handy and on track. All any other members can also see the projectā€™s progress. It will keep each team members informed and any unfair situation can be detected. Usually, they are now available in GitHub or GitLab.

methodology Article's
30 articles in total
Favicon
Web Theory - Part 6 : BEM, The Secret Formula for Mastering CSS Organization and Clarity
Favicon
Web Theory - Part 4: Understanding ITCSS: A Comprehensive Guide
Favicon
Tech radar: Keep an eye on the technology landscape
Favicon
A state of remote work
Favicon
What is methodology, and why is it crucial in research, projects, and presentations?
Favicon
"12 faktorli" dastur
Favicon
Understand the 5 Phases of the APM Model
Favicon
Impact of DevOps Methodology: The Strategic Approach For Business Success
Favicon
Introduction to Agile Methodology
Favicon
5 Top Mistakes to Sidestep in Your QA Testing Methodology
Favicon
Improve your mental focus (in a so distracted world)
Favicon
The Benefits of Agile Methodology in Software Development
Favicon
The Four Horsemen of Software Complexity ā€” Architecture Decision Records to the Rescue
Favicon
On estimating data science projects
Favicon
12-Factor Apps
Favicon
The Solo Developer
Favicon
Week 2 : Google PM specialization
Favicon
(mostly incomplete) List of Test Methodologies
Favicon
Managing a Software Development Team: Some Experiences
Favicon
Reduce WIP by practicing trunk-based development, rather than pull requests
Favicon
Does Dev Methodology Matter? w/ Chris Downard
Favicon
Is your agile framework working?
Favicon
Emotion Driven Development
Favicon
Where is ok not to use SCRUM?
Favicon
Quick tips to enhance your gitlab issue workflow, part one
Favicon
Are Lean and Agile enemies or friends?
Favicon
Thoughts on Raspberry Pi GPIO Program Organization
Favicon
What methodology does Amazon use?
Favicon
Docker - Dev, Debug, Deploy
Favicon
Few terminologies on QA industry

Featured ones: