8 Tips To Work On Large Software Projects More Effectively

I've asked our CTO to share a few tips how to work on complex software development projects more effectively and this post is based entirely on his recommendations.

No need to deny the fact that both tech leads and software developers prefer working on small teams of up to 10 members. Advantages are obvious: frequent face-to-face discussions and on-spot brainstorming and problem solving vs virtual meetings booking in case of distributed teams, delayed feedback, etc. However, you can't complete a robust and complex project on time with a small team, so large projects are normally distributed across several locations and executed by cross-functional teams comprised on average of 25 to over 50 employees. Other distinguishing features of large projects include:

  • Long build time (over 5 minutes)
  • Clear role definition, each team is responsible for a particular function delivery
  • Full adherence to coding standards, code review is a critical part of the process
  • Task-based time tracking
  • Analysis of discrepancies between estimated and actual labor costs

In this case bureaucracy is a "good evil", although it irritates a lot! But working on large projects can be interesting and easy if you acquire and get used to new habits in the workplace. But once you know the ropes, you can easily replicate such teamwork practices in smaller teams and succeed.

Use feature branching and keep your commits atomic

Although it sounds like a Captain Obvious tip, too many dev teams don't use this best practice at all, that's for sure. It's better to use atomic commits along with TDD due to the iterative nature of development. Plus you get an additional bonus: if you screw your own branch, just do git reset --hard and your current branch (typically master) will be back to point at <SOME-COMMIT>.

If a colleague needs your unfinished code in a different branch, they can cherry-pick the most critical changes without waiting for the merger and leave your stream of consciousness apart.

Use standard commit naming conventions

Assign your task ID in a tracker to the beginning of your commit name. All modern project management systems synch well with a build server and VCS. It'll facilitate history tracking in a repository.

Are you looking to hire IT Talent for your in-house or offshore project fast and with no HR, IT and administrative hassle?
Let's talk now!

Create git aliases for pull requests

You should always push all local commits to upstream and merge with a master/dev branch. This task is like shooting fish in a barrel, but you may get distracted and forget to do so after completing a more complex task. So you better automate this action.

Keep a check-list of your daily assignments

Here're some examples:

  • Check all pull requests for rejected ones
  • Change status of task containing a rejected pull request for "in progress" and assign to yourself or re-assign to a responsible team member
  • Fix rejected pull requests, move task to Review, re-open pull request
  • Merge development and master branches
  • Fix / eliminate conflicts
  • Perform smoke testing
  • Move to the next task

You can fully automate this check-list if you have strong DevOps.

Make all arrangements beforehand

Literally EVERYTHING! On large teams workflows are normally standardized and regulated, and decision makers are always super busy. If you badly need to perform code review tomorrow noon, make all arrangements tonight! If you need your colleague's assistance with a complex piece of code tomorrow morning, make sure to ask them now if they can and book their time in advance! If you need to coordinate something with offshore / nearshore teams, start planning it at least a week before!

Be more apprehensive than usual

The more people are involved in your project development, the higher the cost of errors and delays. I'm sure the following situation is familiar to many of you: a developer sends a pull request, team leader is busy and doesn't review or merge the code. The next day, his teammate needs code from unmerged request. This results in declined pull request, two delayed features and lack of proper QA. Eventually, it'll cost the company an arm and a leg, therefore you should make as many efforts as possible to deliver your project milestones on time.

Check back soon for more tips to manage software teams more effectively!

 

Vik is our Brand Journalist and Head of Online Marketing / PR with 11+ years of international experience in IT B2B. He’s also a guest blog contributor to Business2community, SitePoint, Journal of mHealth, Wearable Valley and other IT portals. You can contact him directly on LinkedIn.

Leave a comment

Get a Quote