Approach
A Mindset
The pace of technology is moving at a faster pace every day. There is not enough time to grok all that's been done before. These foundations allow for the easier construction of larger complexities. It would be hubris to ever assume mastery. The pursuit of mastery should be lifelong and result in open case studies that encourage a request for comments. Mastery is not a solitary pursuit. Seek out mentors and learn from those mentored.
For Science
Programming contains the concept of Test Driven Development (TDD). TDD is the practice of writing a failing test and subsequently writing the code which makes the test pass. Test ensure that changes to the code will identify failures. This is often colloquially referred to as "red green re-factor."
Test writing should be informed by background research. These steps are better demonstrated as a problem-solving approach called the scientific method.
The scientific method in steps:
- Make an observation.
- Ask a question.
- Form a testable explanation.
- Make a prediction based on the hypothesis.
- Test the prediction
- Iterate: use test results to inform new hypotheses and predictions.
As long as there are observations to make and question to ask there will be code to write.
A Light Toolbox
As a result of doing the majority of my work on someone else's servers, I must impose some requirements on myself:
- Tool installation must use native package managers.
- Tool installation must be easily scripted.
- Tool configuration must be stored in remote repositories.
- Tool configuration must be synced from remote repositories.
- Tools must not require a graphical user interface.
Tools
IDE
IDE Tools
Code Tools
Specific code choices are outside the scope of this paper yet a few axioms require acknowledgment:
- Use code formatters and linters to maintain a coherent style. Establish rules in a shared repository and force compliance in continuous delivery pipelines.
- Use make, a ubiquitous build automation tool used to generate a target/goal, to keep build tasks in a central location for delivery pipelines.
- Use shared pipelines to ensure consistency.
Version Control
- git - version control
Documentation
- markdown - text to markup language
- pandoc - convert files from one markup format into another
- wget - retrieve files using HTTP, HTTPS, FTP and FTPS
- curl - transfer data
Text Web Browser
There will arise a need to search for something.
A Plan
Work In Progress
As with all things in one's journey this document is a work in progress.