Effective Project Management

Common Knowledge Base

  • Have a central location for documentation.

  • Easily accessible and updated by team members, with version control.

  • Allow this KB to be available off-line

  • Easily searchable.

I usually recommend creating this central documentation with a tool such as Sphinx. Sphinx allows one to create documents in a non-proprietary format with the ability to scale to multiple projects and cross reference pages or terms in another part of the documentation.

Building the software

  • When developing software, production operations should not be an independent activity that is disconnected from the software development process. Rather, software development practices and architectural patterns must be connected to the activities of deploying and managing software in production.

  • The software development process must include automated deployment and testing into an environment similar to production, e.g. staging. The developer must have access to this environment and understand the issues that occur due to his changes on the staging environment. This culture must start from the beginning of the software development process.

The Team

The quality of the people we work with determines how much we enjoy the nearly endless string of weekdays we spend behind our screens!

The Role of the PM

  • Be a servant leader

  • Provide a culture where team members help each other out and learn from each other. Usually when performing technical work such as development, testing or deployment, one might be stuck with an issue. It is important that this developer can go to someone else to figure the issue out. Then, document it, so that others can understand what to do when the face a similar situation.

  • Identify risks and issues as early as possible and mitigate them.

Code Review & Version Control

As a project manager, one should:

  • Go through the history of commits

  • Understand progress of work done by each member

  • Check code quality for:

    • the inclusion of enough unit test cases and

    • defensive programming techniques; e.g. preventing null pointer exceptions & function parameter checking

    • Documentation explaining reasons why it was coded the way it is

  • Improve coding for the team by having someone knowledgeable in the team to provide mentoring and training to weaker people in the team.

    • Learning IDE short cut keys and creating new ones if necessary (Auto Hotkey)

    • Using an IDE such as JetBrains to provide auto completing, continuous syntax checking and suggestions to make the code better.

    • Using new features of the language such as lambdas (Java) or f print (Python) that making reading the code and maintaining it easier.

Issue Tracking

The project manager should be aware of:

  • Number of outstanding defects per person

  • Quality of code depending on defects coming back from testing

  • How quickly can these defects be fixed?

Team Meetings

Reference URL: (27 Aug 2019) https://www.inc.com/robbie-abed/microsoft-found-that-banning-this-1-thing-led-to-happier-employees.html

  • Employees who like to flourish love to solve problems, not talk about them. To do that, employees need uninterrupted time to think, create solutions and analyse their ideas. Without focused solitude, your brain isn’t going to produce its best work.

  • When you need to hold meetings, keep them lean. Limit the number of people in the room, stick to an agenda and meet only when needed, not because it’s Tuesday and that’s meeting day.

  • Sometimes, hold one-on-one meetings with your direct reports which take must less time and are more effective than group wide meetings. One-on-one meetings require managers to do a lot of learning and coaching, which tends to improve everyone’s performance over time.

  • Take-aways: Track your employees’ meeting time. Find out how many hours a week each person spends on bloated meetings.

The Role of a Developer

  • The developer must use a development environment that is as similar as practically possible to the production environment. He / she can do development and unit testing on a development environment (such as a laptop), but through configuration changes, possibly through a simple environment variable change, he / she should be able to test his application in production or staging.

  • He / she can see the impact of moving to a production environment and the code he writes and the changes he / she commits to version control must work on production from the start of development process.