Rethorical questions from a developer

Can someone show me a successful TDD project? Can someone tell me how writing code is improved by writing the very same tests that the developer has in mind when developing the code of a function? Can someone tell me what are tests good for if for every refactoring you need to create a consistent separate tasks for fixing the unit tests? Can someone tell me why is it better to write functions that are four lines long and redirect the functionality in other functions? Why does everyone think that a function call is zero effort?

Can someone tell me when was the last time they actually felt that by applying a design pattern ‘by the book’ they improved the original code they wrote, they made it more efficient while they didn’t realize that they are complete idiots for not using that solution in the first place? Is there some bad coding practice that design patterns improve?  Is there any moment where someone felt that by saying “a singleton object” instead of “single/unique instance” they improved anything whatsoever? Can someone tell me how is anything improved when someone says “I implemented a half-sync-half-async pattern for a TCP client” instead of saying “I implemented a TCP client stack”?

Can someone show me how pair programming can make your team develop two times faster when in fact you divide your workforce by two and every product of a pair of programmers is less than what a developer would write on his own in the same amount of time?

Can someone show me what SCRUM team does not transform brilliant developers into mediocre engineers? Can someone tell me why everybody thinks that SCRUM makes you develop faster when, in fact, it makes you develop slower? Can someone show me how stopping several times during the development of a product and delivering partial products that will NEVER be used improves anything? Can someone show me SCRUM projects that haven’t fully delivered in an obscene amount of time? Can you show me someone doing SCRUM by the book and not bankrupt yet?

And can someone explain me why brilliant developers who ask themselves these questions are considered an issue and mediocre developers embracing bullshit and always reading the next crappy-agile-extreme methodology book, mystically embracing the mediocrity of it will make them very well seen?

I suppose all these are rethorical. If you have a good answer to any of these, let me know.

PS: Two insightful links for reference: Agile is a sham (via Radu) and Good Agile Bad Agile (via previous link). The first one talks about how Agile started to become a ball and chain for developers – and an incredible business for the ones that evangelize it. The second one tells the same story 5 years earlier, and gives examples of good and bad agile – also suggests that truly agile methodologies should not be named agile (to clear any confusions) and should not be named ‘methodology’ (because anything named methodology is bad).

Comments

Rethorical questions from a developer — 8 Comments

  1. I think Google is doing rather well.

    Well, it depends on the precise definition of TDD, I guess. My understanding is that you have an iterative process where you write code, test, fix and repeat ad infinitum.

    Most projects at Google are very well tested, with pyramid of tests (from basic unit tests all the way up to full system tests), continuous automated testing, alarms when things break, etc.

    Of course, when you handle >1billion users and many many systems things are going to break in different ways from a simple Mom&Pop LAMP server. After all, who says that processors are 100% accurate anyway?

    • Sorry to break the news, but Google is now at its least innovative moment, and I really really really beg the skies for that to change. I’m a fan, and I want Google to succeed, but I think right now they are not doing rather well. Also read Axonn’s opinion on this one: http://www.axonnsays.com/2012/03/can-google-keep-it-up/ . These are personal opinions, however, and we can agree to disagree – but all I can say is that Google is one of the least tempting employers to work for these days. Personal opinion, I underline again.
      The precise definition of TDD would be ‘write tests that fail first, write then the code that fixes them’. This is what Test Driven means, and, very important, there is no code written without a test first. I’m talking about the pure form of the methodology, a form which we can agree is a death of the developer’s passion.
      Test Driven Development is not to be confused with a well tested systems, and has even less to do with automatic testing systems. I have nothing against testing.

    • I wouldn’t write off Google just yet. Sure, they’re not innovating as much as 5 years ago. But I think that the reason for slowing down has a lot more to do with size than anything else (I really don’t think that their testing is getting in the way).

      Oh well, size is why I left them anyway.

  2. “And can someone explain me why brilliant developers who ask themselves these questions are considered an issue and mediocre developers embracing bullshit and always reading the next crappy-agile-extreme methodology book, mystically embracing the mediocrity of it will make them very well seen?”

    Pai intr-o companie daca esti dezvoltator excelent nu o sa stai sa “merge” cu restul de bibani care citesc cartea 🙂