Deploys Are the ✨WRONG✨ Way to Change User Experience
Always insightful, Charity argues makes the case that using deploys to change user experience is a bad move.
While this isn't going to be news to anyone who's kept up with things like DevOps report, this is an excellent summary for folks who aren't familiar about how to use feature flags to decouple deploys and releases.
By making this change you can continuously deploy while safely wrapping large user-visible changes behind a flag, enabling controlled release and testing in production. This allows engineering teams to ship small changes continuously, improving the speed, safety, and reliability of software development.
Hillel parallels the different levels of editing in the writing process. Code review involves examining code for improvements and suggestions, while code proofreading focuses on identifying defects and errors. Similar to proofreading in writing, code proofreading is often seen as tedious and disliked by developers. However, code review comments primarily consist of suggestions for code improvement rather than identifying defects.
The process of code review should follow a similar flow as editing in writing. Substantive editing, which involves identifying fundamental issues and flaws, should be done earlier in the process when the code is still in its rough stages. Code review, on the other hand, typically occurs when the code is close to being merged, making it harder to identify fundamental issues.
The article proposes a two-step review process where substantive editing is done separately before proofreading, although this may lengthen the development cycle.
All of this becomes a greater challenge when you consider the integration of AI based code generation and/or auto-complete, particularly around ensuring correctness.
A great article from Hillel on improving your debugging skills.
This is one area of software engineering that I feel is under-explored and articulated, but this piece is interesting to me because it gives a way to visualize the effects of different debugging strategies, along with an interesting exploration of one.
A Desolation Called Peace
Once again, not a book about tech, but a thoroughly enjoyable sequel to A Memory Called Empire, which I had previously recommended.
In this followup the protagonist is tasked with stopping a war between two empires that share no common language and no common framework for what it means to be. A fun read, and thought provoking.
Convenience store data processing and ETL - on the ground and in the cloud
In this one Saúl Rojas, an engineer from one of my teams at Savi Solutions discusses about how we used Elixir at a high level to ingest and process data from convenience stores, chief among that transaction data from the point of sale.
Evolving legacy architectures to enable real-time communication with Elixir microservices
Darío de Filippis (another of the folks on the team I built at Savi Solutions) talks about how he was able to use the log from MySQL to push data to RabbitMQ and remove a bottleneck and evolve a system without introducing additional pressure to the database at previous organization.
You can achieve the same thing using the Postgres WAL and Rabbit or Kafka using something like Debezium.
Enjoyed this podcast, though I think Jason voices the short term/short sighted belief that if you're a dictator with your kids or employees you'll get the outcomes that you want of of them.
With both kids and employees you'll get folks that act more compliant, but resent you and either become broken, or learn to lie better in order to survive in the organization, eventually leading to a lack of psychological safety. Allison acts as a a great foil in many ways in this episode.
A great thread on how to address errors and build reliable systems.
Charity, always posting food for thought.