diff options
Diffstat (limited to 'content/blog/slowftware-development.md')
| -rw-r--r-- | content/blog/slowftware-development.md | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/content/blog/slowftware-development.md b/content/blog/slowftware-development.md index 4995d59..1cd8c7d 100644 --- a/content/blog/slowftware-development.md +++ b/content/blog/slowftware-development.md @@ -5,6 +5,7 @@ draft: false --- # Slow is Fast + The fastest way to create high-quality software is to develop this software slowly and thoughtfully. It might seem counterintuitive, but by focusing on understanding the problem, designing the **right** solution, and refining it through iteration and simplification, @@ -14,6 +15,7 @@ Rushing to get an MVP out the door often results in poorly scoped projects and a technical debt, and "Big balls of Mud" -- architectures that are costly to maintain, and slow to fix. # Perfection Through Removal + > "Perfection is attained, not when there is nothing more to add, but when there is nothing more to remove." <br> > --- _Antoine de Saint-Exupéry’s observation_ @@ -22,6 +24,7 @@ Clean, maintainable software is born from stripping down, not piling on. Yet, si It requires careful thinking, planning, and understanding the problem before jumping into coding. # Worse is Better + In 1989, Professor [Richard P. Gabriel][4] wrote an [essay][5] to describe the dynamics of software acceptance. It is the argument that software quality does not necessarily increase with functionality: that there is a point where less functionality ("worse") is a preferable option ("better") in terms of practicality and usability. @@ -49,6 +52,7 @@ By aiming for simplicity, you not only make the system easier to work with but a improvements. # Working Backwards + Amazon’s "[Working Backwards][21]" process exemplifies the power of taking time upfront to define the customer experience. Before any code is written, teams work backward from the final product, crafting press releases and FAQs to clarify the vision. This approach forces developers and stakeholders to deeply @@ -58,6 +62,7 @@ By focusing on the end goal from the start, it ensures that despite that the pro and slower, it actually speeds up the development and delivers better products.[^2][^6] # Agile Pitfalls + Agile, though powerful, is often misunderstood and misinterpreted, Many organizations are taking it too far and using it to avoid careful planning and preparation[^3], Many teams focus on velocity and delivering a constant stream of features without truly understanding the product’s requirements. @@ -66,6 +71,7 @@ Instead of rushing to build the next feature, teams should balance speed with pr decisions, focusing on building sustainable solutions rather than quick fixes. # Avoid the Big Ball of Mud + In a [paper][10] published in 1997, Authors [Brian Foote][11], and [Joseph Yoder][12] examine the most frequently deployed architecture, dubbed "The BIG BALL OF MUD": > A BIG BALL OF MUD is a casually, @@ -94,6 +100,7 @@ authors: Good architecture takes time and meticulous thought, but it pays off when your system is easy to maintain and scale. # Code Disposability Over Reusability + Another shift in thinking comes with focusing on code disposability. Rather than trying to write code that’s reusable across the board, aim for code that’s easy to delete or replace. @@ -110,6 +117,7 @@ In such cases, a "healthy" level of repetition that would make the code more rep making the code more reusable (by being more "DRY").[^5] # Slowftware Development + (or slow software development), is the collection of these old ideas and concepts, to develop valuable, maintainable software with patience and a deliberate focus on simplicity and correctness. @@ -126,6 +134,7 @@ Special thanks to [Abdallah Dorra][34] and [Tom Nick][35] for proofreading, revi this post. Further Readings: + - [Write code that is easy to delete, not easy to extend.][26] - [Write code that’s easy to delete, and easy to debug too.][27] - [Repeat yourself, do more than one thing, and rewrite everything.][28] @@ -147,11 +156,8 @@ Further Readings: [^2]: The Kindle e-reader, AWS cloud computing services, and the Echo voice assistant with Alexa all came from "working backwards" at Amazon. -[^6]: Fun fact: The initial [version][38] of this article was written in an "investigative journalistic" style - about the history of the blog's ideas and philosophies, but [Tom Nick][35] suggested "working backwards" - from the desired conclusion and end goal of the post, and building the narrative from there, - removing all the unnecessary narrative, quotes, and undefended claims. Which led to a better and shorter - final version. +[^6]: Fun fact: [Tom Nick][35] suggested "working backwards" from the initial longer version, to make it direct and + concise, instead of a long story told. [^3]: "The fundamental problem with agile, as many companies use it, is that its relentless pace biases developers. They want to get out a minimum viable product in only a few weeks, so they skimp on scoping out just what the @@ -172,8 +178,6 @@ Further Readings: [11]: http://www.laputan.org/ [12]: https://joeyoder.com/ [18]: https://hbr.org/2021/04/have-we-taken-agile-too-far -[19]: https://www.amazon.com/stores/author/B08FRTFQD8/about -[20]: https://www.amazon.com/stores/author/B08HW23WY6/about [21]: https://www.amazon.com/Working-Backwards-Insights-Stories-Secrets/dp/1250267595 [26]: https://programmingisterrible.com/post/139222674273/write-code-that-is-easy-to-delete-not-easy-to [27]: https://programmingisterrible.com/post/173883533613/code-to-debug @@ -185,7 +189,6 @@ Further Readings: [35]: https://tn1ck.com/ [36]: https://sandimetz.com/about [37]: https://www.youtube.com/watch?v=8bZh5LMaSmE -[38]: https://git.sr.ht/~a14m/a14m.srht.site/tree/9176ade8ff48b3f4d1e538a572bf538c55b480c7/item/content/blog/slowftware-development.md [40]: https://hbr.org/2010/05/need-speed-slow-down [41]: https://go.dev/blog/compat [42]: https://github.com/zakirullin/cognitive-load |
