Most significant differences
Number of team member
Documentation and proper communication is crucial point.
- Some team members can work remotely or on other part of the world!
- clarifying even small issues can be a challenge when working hours are different.
- It is worth in such cases to schedule regular meetings, in order to assure continuously information exchange process
- Very important is to create a team which puts stress on transparency and sharing which activities are done by each team member.
- Agile methodologies like SCRUM are supporting such processes very well; Inside SCRUM there are special meetings for it like daily SCRUM, Sprint review, Sprint planning.
Documentation is a key feature
Especially with long lasting project with many team members.
Some employee can be ill/change company/ etc. and this will mean that knowledge collected by them can be suddenly unavailable.
Docs will help to introduce new team members – this will require less time to put him on current track.
Usage of coding standards
Bigger projects with a lot of code (many thousands lines) are easier to read and maintain where the code was written conform with special standard.
Coding standards are expressing the way:
- variables and functions naming;
- a way of structuring the code (especially in C or Java);
Examples of such standards: clang-format, MISRA, PEP8 (for Python);
- It is worth to use automated tools to check instantly the code standard inside IDE – like cppcheck, pc-lint, or pylint, flake8 (both last ones for python);
Usage of code-review processes
Automated checking tools (for coding standards ) are not assuring that the logic of implementation was done in a right way. To assure it there are processes where other team members are reviewing created code. This spreads good practices and knowledge across whole team.
Usage of version control system – for instance Git
Very important is also to create processes of working with such tool, for example “git-flow”. More info you can find here.
Build processes independent from IDE
- To establish continuous integration processes
- Allows that team members are using different IDEs
- Example of such tool is CMake
Testing and debugging methods
Platform dependent parts should be splittet from remaining parts.
- In such way most of code can run on the PC instead on target HW.
- In this way it is possible to introduce unit-tests which can run in continuous integration process;
Continuous integration is automated building and testing process executed in a scheduled way. For example every night to obtain instant info about nr of bugs in the code.
As you can see there is a bit of points which are describing professional way of creating code. Of course it is not recommended to preform instant revolution inside your project. It is much better to perform evolution and make step by step improvement to achieve very efficient way of developing your application.
Feel free to share your opinion in the comment section.
Infos collected in this articles are based on my own experience and also on points posted here;