No Bullshit Software Development
Anand Kumar Keshavan
Principal Engineer at Postman| Computational Linguistics | Generative AI| Formal Methods | Author | Musician| Neurodivergent
Recently, I read Erik Meijer's rant wherein he compares the agile movement to a cancer that needs to be eliminated with immediate effect. He comes down especially hard on two of the "best practices" propounded by the agile community - stand up meetings and test driven development. Well, he isn't the only one who has expressed disillusionment with agile and it's practices - the same article has a quote from Dave Thomas, one of the signatories of the Agile Manifesto, which is harsh to the point of being cynical.
Okay, here is the scenario in our software development world:
a. an idea is proposed by a group of individuals- say the Next New,Cure's Alzheimer's Kind of Idea ( NENCAKI).
b. it is adopted by an early bunch of enthusiasts who wax eloquent about this new idea and passionately evangelize NENCAKI as a counter-culture - to the point that those who question the questionable claims are branded as members of the "evil empire" .
c. A large number of people embrace this counter-culture - fear of being left out being the main motivating force.
d. Consulting companies mushroom, seminars on 'best practices' of NENCAKI turn up in your inbox, social media communications, certifications are offered ( at extortionist prices), highly qualified (not having written a single line of code in the last 10 years being the highest qualification) NENCAKI coaches emerge, global/national/regional NENCAKI societies appear and so on.
e,. And then, corporates (somehow the name Goldman Sachs always springs out) start adopting NENCAKI, software outsourcing companies have NENCAKI practices, each claiming to be the "thought' leader in the brave new world of NENCAKI.
f. Finally, someone (say Erik Meijer) comes along an says "hey! this emperor has no clothes! Let us dump it.
How often do you think this happens? It seems to happen with alarming frequency -- so far once in every 7-10 years. I suspect the frequency will increase- with "internet time" and all.
You can replace the term NENCAKI with any of the following and you will understand what I am saying:
- Structured programming
- 4gls
- Objected Oriented programming
- ISO 9000
- SEI-CMM
- Lean
- Six Sigma
- Zero defect
- Total Quality Management
- Agile
- Concurrent Engineering
- Functional programming-- now in phase (d) above.
And possibly many more I haven't come across. Of all of them had "best practices", certifications, seminars, societies, coaches and all the related goodies.
Well here is an idea, NOBS (No Bullshit Software). Read carefully now, its is very profound:
- Learn how to write good code - believe me, it is simpler than you may think!
- Learn your technology stack in-depth.
- Learn English - or any other natural language that your customers know.
- Learn to communicate using the your chosen natural language - and that means: (a) ask what the customer wants (if she doesn't know what she wants, then tell her you can't write the software) (b) spend some time explaining the limitations of computers (c) explain why something takes so much time to write and test and (d) what are the technical unknowns, limitations of the chosen platform
- Find people who do or are willing do all of the above.
- Finally, write the damned code!
Trust me, all the successful software projects (about 10% of all projects attempted) have followed the techniques described above.
Let us start this year with evangelizing this all new revolutionary software development methodology. Seriously, No Bullshit!
Designing and Building Data Engineering Platforms and Large Scale Software Solutions
10 年Anand Kumar is just using strong dictionary words to market his disappointment against the Agile manifesto without exemplifying his stand. Agile methods also encompass "Write the damn code" with good support and greater flexibility. It surely teaches you how to write a better code, and Unit testing is a part of it. Adoption of frameworks can hinder the ability to unit test the code, but you can surely learn and do better. Numerous times I have had a full development lifecycle relying on unit test cases, which has made the development cycle so much faster. TDD makes sure that you write your code "right" ground up.
AI/ML Leader
10 年The methodology is mostly lost in translation, most unwitting managers, do not invest time to understand its true meaning, so often whittle it down to just collecting status updates
CxO OnDemand | Agility | Systems Thinking | Cloud | AWS | Cursory interest in AI. Bullish on NI - Natural/Nurtured Intelligence
10 年Learn how to write good code - agile development accelerates this through pair programming Learn your technology stack in-depth - Learn fundamentals not the tech stack. That's why agile way of working gives you smart programmers & not smart ".net" coders. Learn English - Again agile emphasises this. Without good english you can not give good stand up update, can not communicate well with your pair during pair programming , can not do a good showcase , can not provide good feedback in a retrospective Learn to communicate using the your chosen natural language - All you described under this agile way of working promotes that. Finally, write the damned code - Agile way of working accelerates this vs other "methodologies" which keep delaying writting code with endless requirements gathering, architecture,design stages. So ...NOBS (No Bullshit Software) = agile way of working
Principal Consultant at SwanSpeed: Rightsourcing, Time Series Forecasting and Anomaly Detection
10 年This is what Mr D Thomas says: “The word 'agile' has been subverted to the point where it is effectively meaningless, and what passes for an agile community seems to be largely an arena for consultants and vendors to hawk services and products.” and he is spot on! Meijir seems to need a therapist... BTW structured programming is good stuff, if you don't like it, try unstructured programming.
Product development team leadership and Program Management, Technical Product Ownership
10 年Anand, while your observations have a point which cannot be ignored, we have to take into consideration that Software writing is evolving and is an relatively new Art (or is it Science (or something else)). Traditional engineering have evolved their practices over periods of time sometimes over more than 10 decades. Also let us not forget that conceptualizing, architecting, designing & ultimately productizing is all done by same/similar set of people. In other branches of Engineering these are usually different set of people/organization/practice. Software lacks the mass production stage which these engineering branches take for granted...