Upgrade to Pro — share decks privately, control downloads, hide ads and more …

An Appeal for Minimalism in Software Development

An Appeal for Minimalism in Software Development

We are going to look at ways we can apply minimalism in modern software development. This is an era of buzzwords and FOMO -- everyone wants to jump on every train leaving the station. It might be important, at last, to seat back and question our practices.

This will be mostly philosophical but whenever I will give example, I will use Node.js/Javascript stack in most of my examples but this lessons can be applied in almost any stack.

Anthony Nandaa

August 29, 2018
Tweet

More Decks by Anthony Nandaa

Other Decks in Technology

Transcript

  1. An Appeal for Minimalism in Software Development Anthony Nandaa @profnandaa

    Eng. Manager, Andela #AndelaWorkshops | Aug, 2018
  2. Intro • Sorry, no black screens today - more of

    a discussion and reflection • The talk will be minimalistic too coz what’s the point? :) • Content: ◦ The Age of Packages ◦ Is the tool using you? ◦ Easy != Simple ◦ The Cost of Minimalism ◦ Less is Best ◦ Recommendations
  3. Questions • Have you ever built something that was never

    used? • Consider your favourite framework. How much of it do you actually use?
  4. Is the tool using you? • Accidental complexity: Complexity arising

    from the solution rather than the problem we are solving • We spend a huge amount of our time in making the tools work, than the actual solving of our problem. • Delicate balance => building for potential future needs vs. the actual needs
  5. Is the tool using you? “if all you have is

    a hammer, everything looks like a nail” - Abraham Maslow • Framework Driven Development (FDD)! • Is the tool dictating what you should build? • Forcing the solution to fit into the problem you are solving.
  6. The Age of Packages • Take some time and peek

    through the dependencies you are installing • Go for minimalistic frameworks and plug in packages as needed (plugin-based architecture) • Beware, the size is not always proportional to what those modules actually do. • Profile, profile, profile!
  7. Easy ≠ Simple • Don’t mistake ease for simplicity •

    Some frameworks may give you a quick and easy start but in the long run come biting with maintenance overheads
  8. The Cost of Minimalism “I'm sorry I wrote you such

    a long letter; I didn't have time to write a short one.” - Blaise Pascal • Simple ≠ Easy • You will need to dig deep into the frameworks/libraries you use to notice how much of it you don’t need • DIY is tough with it’s own cons!
  9. Less is Best If you are building for longevity then

    going minimal is best! • You have better control of the software you are building • Easy maintenance / flexibility • No framework lock-in
  10. Node.js / JS Recommendations • Hapi.js - micro-framework for building

    HTTP servers • Knex.js - SQL query builder • Tools for optimizing dependencies: ◦ const-of-modules - find out which dependency is slowing you down ◦ npm.avanka.com - visualize dependency tree of packages ◦ npm-consider - check package size, licenses and impact on your package before installing it ◦ depcheck - analyze your dependencies (which ones are in use, etc) ◦ import-cost extension for VS Code, etc.
  11. Summary • The Age of Packages • Is the tool

    using you? • Easy != Simple • The Cost of Minimalism • Less is Best • Recommendations