When beginning a new project it is essential that you put in place strong technical foundations and a healthy development environment. Discover what can go wrong and what early tasks we regard as essential on Teksidia-run software projects.
Symptoms of ‘Bad Foundations’
Common symptoms of not establishing strong technical foundations and a healthy development environment include:
- Questionable technology choices – incorrect or overly complex
- Inability to support flexible working practices – hindering the creation of high performing, distributed teams
- Technical debt – disjointed codebase with mixed coding styles
- Lack of a shared vision – resulting in a nasty myriad of practices, tools & techniques
- Missed automation opportunities – manual testing and deployments
- Chaotic onboarding process – taking too long for new team members to become useful or productive
- Best practices taken to the extreme – e.g. over-engineered code, or too many brittle, slow running tests
- Poor learning materials – over-reliance on ‘heroes’ or human knowledge silos
Try and avoid the symptoms described! Once the concept and requirements are ready and the problem domain is fully understood then it is time to establish the Technical Foundations…
Checklist for good Technical Foundations
Here at Teksidia, our internal checklist for a good Technical Foundation / Working Environment is:
- Technical Design – A broad-stroke technical design (architecture) with diagrams simple enough to create in something like Microsoft Powerpoint. Not swathes of UML created in something like Enterprise Architect because few read (or understand) them.
- Seed Project – Working code & tests that prove the design concepts and provide a starting point for the development team; hosted in the team’s chosen source code repository (e.g. GitHub)
- Learning Materials – A skeleton set of concise, online documentation (repository ReadMe’s and Wikis are a good place) to include:
- A written set of Architectural Principles and associated Design and Delivery Practices
- Clear references to the technical design (architecture)
- Working practices (with the sole aim of allowing each team member to be as self sufficient as possible)
- Continuous Integration – An automated test and deployment pipeline; delivered via the team’s chosen CI tool (e.g. Travis CI)
- Onboarding Strategy – A formal onboarding strategy for new developers. Even better if you can achieve automated setup of the development environment using virtualization (e.g. Vagrant).
Those who are familiar with Agile projects will recognize these as being common tasks in ‘Iteration Zero’. However projects can get stuck in the mud because Iteration Zero & early iterations get neglected or rushed.
Teksidia are a Software Development consultancy. We make creative use of digital technologies to help your business grow. Discover your potential with our R&D and prototyping services. Or go the whole hog and commission a tailor-made software product.