Skip to main content

Posts

Showing posts from March, 2024

A Software Design Manifesto - The Relevance of Mitchell Kapor ideas

Writing a Manifesto may be cool. It may make you feel belonging to something historically relevant. But they are generally subjects to the law of unintended consequences.  There are exceptions, naturally. I believe Mitchell Kapor A Software Design Manifesto is one of those few exceptions.

Is Software Design really Dead?

Over an interesting post by @Michele Sollecito where he maintains that software development is all design, there's been a lively conversation in the comment. I said in one of the comments that " Design is Dead " and the provocation was picked up. Here a brief comment on why I believe so. For the long answer, I am afraid you have to wait for my paper to be in a readable draft state (and please don't crowd 😀). Premise Martin Fowler in a 2004 long article maintained that software design has changed nature and as a result it is alive though morphed into something else. Jim Coplien , argues, correctly in my option, that it is wise and experience bears this out to get the structure upfront, otherwise you risk driving yourself into a corner, architecturally. I could mention hundreds. This is to set the stage i.e. it is a fundamental debate, and it’s not settled. Unless we introduce beliefs in the mix. Clarification : Talks of "design" abounds, they are everywher

Overconfidence kills software projects

𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗺𝗲𝗻𝘁 𝗽𝗿𝗼𝗷𝗲𝗰𝘁𝘀 𝗳𝗮𝗶𝗹. We all know that. Statistics are staggering. Or just misleading. Bottom line is that every one in the industry knows that IT projects fail often, many have experienced it first hand. Two interrelated thoughts come to mind. They may not resonate with you - which is, incidentally, a very good news! 💭 [𝙼&𝙾 𝙲𝚘𝚗𝚓𝚎𝚌𝚝𝚞𝚛𝚎 #2]  𝚃𝚑𝚎𝚛𝚎 𝚒𝚜 𝚗𝚘 𝚠𝚊𝚢 𝚢𝚘𝚞 𝚌𝚊𝚗 𝚐𝚎𝚝 𝟾𝟶% 𝚌𝚎𝚛𝚝𝚊𝚒𝚗𝚝𝚢 𝚒𝚗 𝚊𝚗𝚢 𝚎𝚗𝚍𝚎𝚊𝚟𝚘𝚞𝚛 𝚠𝚑𝚎𝚛𝚎 𝚙𝚎𝚘𝚙𝚕𝚎 𝚊𝚛𝚎 𝚒𝚗𝚟𝚘𝚕𝚟𝚎𝚍 💭 [𝙼&𝙾 𝙲𝚘𝚗𝚓𝚎𝚌𝚝𝚞𝚛𝚎 #3] 𝚂𝚘𝚏𝚝𝚠𝚊𝚛𝚎 𝙳𝚎𝚟𝚎𝚕𝚘𝚙𝚖𝚎𝚗𝚝 𝚙𝚛𝚘𝚓𝚎𝚌𝚝𝚜 𝚊𝚛𝚎 𝚕𝚊𝚛𝚐𝚎𝚕𝚢 𝚏𝚕𝚊𝚠𝚎𝚍 𝚋𝚢 𝚝𝚑𝚎 𝚘𝚟𝚎𝚛𝚌𝚘𝚗𝚏𝚒𝚍𝚎𝚗𝚌𝚎 𝚘𝚏 𝚝𝚑𝚎 𝚖𝚊𝚗𝚊𝚐𝚎𝚖𝚎𝚗𝚝. All the "explanations" about projects failure you read in (good) literature are an outpouring of (2) and (3).  

Innovation in Software Development

At organizational level, software development is a flatland, populated by odd creatures. Lots of alchemy, little chemistry. How to stand out and be innovative? A legit question. When it comes to innovation I discount virtually all the recipes foisted on to us by methodologists, gurus, charismatic figures, mesmerizing narratives, and so forth. Innovation is a "negative" concept*, namely, it is defined by pointing out what stifles it. In other words the best we can do is to set out the conditions to let people innovate, potentially. In this context, fostering an innovative environment for software development is a matter of taking stuff away :-) What stuff? My take. No prescriptive recipes, no universal principles - just observation over the years: 1️⃣ No principles: they are all good and agreeable but provide very little guidance. For example: in many quarters software (design) has been trivialized to SOLID, YAGNI, Beck's 4 principles to name a few. 2️⃣ Don't start wit

Hayek on Complexity and Knowledge

In Software Development, knowledge acquisition and transformation on one hand, and internal and external complexity, on the other hand, are two interconnected and inseparable aspects of the same endeavour. F. Hayek, a towering figure in economics, and a major member of the Austrian School of Economics, put it simply. “𝑻𝒉𝒆 𝒄𝒖𝒓𝒊𝒐𝒖𝒔 𝒕𝒂𝒔𝒌 𝒐𝒇 𝒆𝒄𝒐𝒏𝒐𝒎𝒊𝒄𝒔 𝒊𝒔 𝒕𝒐 𝒅𝒆𝒎𝒐𝒏𝒔𝒕𝒓𝒂𝒕𝒆 𝒕𝒐 𝒎𝒆𝒏 𝒉𝒐𝒘 𝒍𝒊𝒕𝒕𝒍𝒆 𝒕𝒉𝒆𝒚 𝒓𝒆𝒂𝒍𝒍𝒚 𝒌𝒏𝒐𝒘 𝒂𝒃𝒐𝒖𝒕 𝒘𝒉𝒂𝒕 𝒕𝒉𝒆𝒚 𝒊𝒎𝒂𝒈𝒊𝒏𝒆 𝒕𝒉𝒆𝒚 𝒄𝒂𝒏 𝒅𝒆𝒔𝒊𝒈𝒏. 𝑻𝒐 𝒕𝒉𝒆 𝒏𝒂𝒊𝒗𝒆 𝒎𝒊𝒏𝒅 𝒕𝒉𝒂𝒕 𝒄𝒂𝒏 𝒄𝒐𝒏𝒄𝒆𝒊𝒗𝒆 𝒐𝒇 𝒐𝒓𝒅𝒆𝒓 𝒐𝒏𝒍𝒚 𝒂𝒔 𝒕𝒉𝒆 𝒑𝒓𝒐𝒅𝒖𝒄𝒕 𝒐𝒇 𝒅𝒆𝒍𝒊𝒃𝒆𝒓𝒂𝒕𝒆 𝒂𝒓𝒓𝒂𝒏𝒈𝒆𝒎𝒆𝒏𝒕, 𝒊𝒕 𝒎𝒂𝒚 𝒔𝒆𝒆𝒎 𝒂𝒃𝒔𝒖𝒓𝒅 𝒕𝒉𝒂𝒕 𝒊𝒏 𝒄𝒐𝒎𝒑𝒍𝒆𝒙 𝒄𝒐𝒏𝒅𝒊𝒕𝒊𝒐𝒏𝒔 𝒐𝒓𝒅𝒆𝒓, 𝒂𝒏𝒅 𝒂𝒅𝒂𝒑𝒕𝒂𝒕𝒊𝒐𝒏 𝒕𝒐 𝒕𝒉𝒆 𝒖𝒏𝒌𝒏𝒐𝒘𝒏, 𝒄𝒂𝒏 𝒃𝒆 𝒂𝒄𝒉𝒊𝒆𝒗𝒆𝒅 𝒎𝒐𝒓𝒆 𝒆𝒇𝒇𝒆𝒄𝒕𝒊𝒗𝒆𝒍𝒚 𝒃𝒚 𝒅𝒆𝒄𝒆𝒏𝒕𝒓𝒂𝒍𝒊𝒛𝒊𝒏𝒈 𝒅𝒆𝒄𝒊𝒔𝒊𝒐𝒏𝒔 𝒂𝒏𝒅 𝒕𝒉𝒂𝒕 𝒂 𝒅