Thursday, December 31, 2009

Computer Science vs. Software Engineering

I listened to SE-Radio Episode 149: Difference between Software Engineering and Computer Science with Chuck Connell.

Interesting stuff...

The most insightful thing was that historically we put too much unrelated things into the same bucket:
  • Computer Science vs. Software Engineering
  • Algorithms, Cryptography, Compilers vs. Business Applications, Consumer Applications
  • Complexity Analysis, Correctness Proofs vs. Maintainability, Testability
  • Formal Specifications vs. Estimation
  • Language Syntax/Semantics vs. Design Patterns

  • More background is in Chuck Connells article on Dr.Dobb's. Including The bright line in computer science:
    090604connell_f1.gif
    This once again leads back to the question: What is software engineering?
  • Art?
  • Craftmanship?
  • Science?

  • Wednesday, December 30, 2009

    Bug Driven Development: Samurai Debugging Reinvented

    Mechanical_bug.jpg In his presentation about Behavior Driven Development (BDD) and Domain Driven Design (DDD), Dan North talks about another interpretation of "BDD": Bug Driven Development or "DDD": Defect Driven Development.

    It goes like this:

    The customer comes to the developer and wants the perfect system. He describes what he wants, but its this fuzzy vision described in a business language that the developer just is not able to grasp...

    The developer: "Ah ok... I understand. It is done!"

    Customer: "What? What do you mean?"

    Dev: "Well it is done. The system is finished!"

    Customer: "Well, no ... I don't see an icon where I can start the system?"

    Dev: "Oh! You are right. That's a bug! I will fix it."

    ... five minutes later ...

    Dev: "Ok, the icon is here. Now it is done!"

    Customer: "Well, no! When I double-click the icon nothing happens!"

    Dev: "Oh! You are right. Thats a bug! I will fix it."

    ... five minutes later ...

    Dev: "Ok, the the app starts when you double click. Now it is done!"

    Customer: "Well, no! There is nothing in the newly opened window!"

    Dev: "Oh! You are right. Thats a bug! I will fix it."

    ... you get the idea.


    While this is a humorous story, it actually demonstrates the qualities that BDD (now Behavior Driven Development again) strives for:
  • Pull based instead of push based: The developer pulls new requirements from the business just in time when they are needed.
  • Outside-in: The development is driven by the business relevant features that are actually used and matter to the stakeholder.
  • Constant involvement of the customer.
  • Small steps with clear acceptance criterias.

  • Another analogy is funny: Behavior Driven Development is an evolvement from Test Driven Development, taking the concepts of the latter to a higher level, evolving out of a purely developer-centered discipline.

    The same could be said for Bug Driven Development: The concept of Samurai Debugging was already a humorous technique in Extreme Programming:
    When you follow the Samurai Debugging technique, you start with a blank screen. That's not what you want, so you start debugging it, and you continue debugging it until your program does exactly what you want it to do.

    Now Bug Driven Development takes this to the next level by involving the customer :-).

    Tuesday, December 29, 2009

    Java vs. Net: Web Frameworks

    Quantity is the real difference:
    Screen shot 2009-12-29 at 7.06.16 PM.png

    Humorous episodes following from this:
    Trolling with Java Web Frameworks.
    I don't think you can count someone even as a semi-decent java dev until he wrote his very own web framework at least once in his life (from here)

    Monday, December 28, 2009

    Code Monkeys do exist: I knew it!

    Ever felt like a Code Monkey?

    Then Primate Programming Inc might be the company for you...
    Screen shot 2009-12-28 at 12.36.44 PM.png
    "Humans and higher primates share approximately 97% of their DNA in common. Recent research in primate programming suggests computing is a task that most higher primates can easily perform. Visual Basic 6.0™ was the preferred IDE for the majority of experiment primate subjects."

    Thursday, December 24, 2009

    Definition of Behavior Driven Development

    images.jpg I updated the entry for Behavior Driven Development on Wikipedia.

    On the Agile Testing, Specifications and BDD exchange Dan North gave an updated definition of BDD in his talk:

    BDD is a second-generation, outside-in, pull- based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well- defined outputs, resulting in the delivery of working, tested software that matters.
    Watch his talk for an explanation of this definition...

    Wednesday, December 23, 2009

    Maven gets partially absorbed by modern JVM languages …

    matroschka250pxMaven has a lot of interesting and useful ideas, but its usage is often over-complicated and several concepts are too much entangled. (examples: 1, 2, 3)

    The foremost feature of Maven that comes to mind is probably dependency management. Maven probably standardized dependency management for the Java platform. That’s probably also the reason for its wide adoption.

    At this time there are already several attempts for smaller and easier solutions that repackage the ideas about dependency management from Maven. Their promise is to be a cleaner and easier to use.

    Foremost there is Ivy, which provides Maven-like dependency management for Ant.

    There are even two JRuby projects that bring simplified Maven-like dependency management to the JVM: maven_gem and javagems.

    Especially interesting is Grape, which provides dependency management for Groovy at a language level (by integrating Ivy).

    I think these examples are an impressive demonstration how the Java platform grows and how good ideas and concepts are adapted and evolved.

    Monday, December 21, 2009

    Challenging Requirements Video

    Screen shot 2009-12-20 at 11.10.20 PM.png Definitely the most entertaining presentation (closely followed by Dan North's) at the Agile Testing, Specifications and BDD exchange was Gojko Adzic's "Challenging Requirements".

    You can watch a video of his presentation on his blog.


    puzzle.png I can also recommend Gojko's latest book: Bridging the communication gap.

    It is a very good resource for learning ATDD and BDD.
    Related Posts Plugin for WordPress, Blogger...