Among all the interesting sessions at Lambda Days there was one titled "The Tools That Shape Us" by Andrea Magnorsky. I liked the topic & the way it was presented, but in this blog post I'm gonna focus on just one (but very interesting) statement the speaker has formulated during this presentation. I don't remember the exact words, but I think that the meaning has been kept:
"Don't delude yourselves. The CREATIVE work ALWAYS means a lot of chaos. Instead of looking for a perfect structure, generic skeleton, universal framework, focus on maximizing the ability to CHANGE in a quick & agile way."
What do you think?
Personally, I totally agree. This is 100% compatible with my fanatic worship of so-called development agility.
Obviously, Andrea was referring mainly to "creative work" understood as some sort of art: her team is developing a computer game - an item that can't be reasonably evaluated with automated, "soulless" metrics, it's value is (let me simplify it a bit...) based on the perception of end-users: their sense of aesthetics, personal preferences, interest, previous experience (which is also individual, of course) , etc..
I'm nowhere close to the statement that programming is a form of art in general (because it isn't - it's not science either, it's far closer to craft), but in non-trivial cases program's functional structure (functional decomposition) doesn't necessary map directly or just easily (1:1, 1:*) into program's structure. Sometimes a tiny change in the expectations (specification, requirements, whatever) may result in complete overhaul of the program's structure (not to mention, that it may affect more than 1 program).
So, programming this "mapping" is still some sort of creative work (and that's one of the reasons why writing software can't be automated).
Rephrasing Andrea's statement a bit, ability to change:
- in a controlled way
- while remaining deployment ready
- without the necessity of introducing tech debt
is the key to maintainable, "healthy", modern software - software able to adapt to everchanging functional expectations & so-called business reality.