Clean Coders Apprenticeship - Lessons Learned.
November 28, 2021
Throughout my apprenticeship, I’ve been tasked with planning a software project and practicing code katas to design and implement systems with new programming languages and paradigms.
A lot of lessons learned went into a Tic Tac Toe Project as it went into multiple iterations for various features like:
- Multiple UI’s. (CLI, client app, server-rendered app).
- “AIs” (Easy and Hard) MiniMax.
- Local play mode.
- Player vs. Player (networked and peer-to-peer)
- HTTP Authoritative Server
- Persistence with different databases.
- Leaderboards
The biggest takeaway from the project was how vital clean architecture is for the project’s velocity and flexibility to change as requirements do. When coding the CLI UI, I learned the hard way and did repetitive work to add the web UI. However, the difference was night and day once I cleaned up my architecture, and changing or adding input/outputs like the database was effortless. Thank you, polymorphism. <3
We learned about estimating, giving a range of numbers to communicate risk, and how to manage that risk by planing around worst-case scenarios.
As a clean coder apprentice I’ve learned.
- A new programing paradigm: functional programing. Clojure Koems Coin Changer
- A new programing language: clojure and java. Jar and Clojure
- New Disciplines like Test Driven Development TDDBehaviour Driven Development BDD, Katas, Pair Programing, and more.
- The importance of good code architecture. Clean Architecture Polymorphism
- How to design system that enable productivity in development.
- How to leverage design patterns to enable clean and flexible code. Visitor PatternFactory Pattern Strategy Pattern
- How to plan and communicate estimates clearly with stakeholders/project managers and handling expectations. Preemptive Postmortems
- What it means to be a professional developer and why disciplines matter.
Want to hear more from me?
Signup to my newsletter!
CarrerasDev Newsletter
A free email newsletter on how to create high-performing development teams.
Written by Edgardo Carreras.