One of the nicest parts of my job is the constant opportunity for renewal. I work for a few months at a time on a contract (ok, sometimes many many months), then I move on to the next client.
This keeps things fresh for me, and allows me to absorb various ideas from different environments, and spread the best things I’ve learned so far to each environment I arrive at.
So Where To Start?
Each engagement has its own challenges. Here’s a quick retrospective run down of a recent bootstrap in a new one.
- Find out the goals of the project
- Find out any historic blockers to those goals
- Examine current live systems to find out any interesting challenges
- Look at current development tooling
- Build a development shopping list to help budget for all the possible things we may need to buy/subscribe to
- Produce a rough functional areas breakdown of the proposed system
- Produce a rough design showing which technologies might fit those ares
- Document some standards around source control and build process
- Prototype some tiny codebases in the expected technologies to rough-cut the boilerplate for having any such project
- Establish a CI/CD pipeline for the trivial POCs to start CI/CD on day one
- Share learnings from the above and encourage learning within team
Where Does The Start Lead?
The above looks like it could be a hugely time consuming set of activities, but realistically it took the first couple of weeks of orientation.
The aim of the exercise is to get a development capability baseline where:
- We know where we’re going
- All iterations can be short and automatically delivered into environment(s)
- We get certain important things like quality, security, etc built in as standard
- We quickly develop a shared language and set of standards
But the beginning is only the beginning. It’s the work that leads to the deeper work.
Exciting times to follow.