Monday, July 6, 2009

abstraction is not always a good idea. Web services take the approach of trying to hide many very different technologies under a single abstraction layer — but abstractions tend to leak. For example, there is a huge difference between sending a message via JMS or as an HTTP request. Trying to dumb widely different options down to their least common denominator serves no-one. An analogy would be to create a common abstraction that hides a relational database and a file system under a common API. Of course this is doable, but as soon as you address aspects such as querying, the abstraction turns into a problem.

Finally, as Mark Baker once coined: “Protocol independence is a bug, not a feature”. While this may seem strange at first, you need to consider that true protocol independence is impossible to achieve — you can only decide to depend on a different protocol that may or may not be on a different level. Depending on a widely accepted, officially standardized protocol such as HTTP is not really a problem. This is especially true if it is much more wide-spread and supported than the abstraction that tries to replace it.

About Me

Software Developer with 17 years experience as senior developer and tech lead in many large and small agile teams. I enjoy consulting with teams to implement improvements in development, testing, and devops practices leading to higher-quality software. I've experienced many of the pros and cons of Agile/Scrum/XP/DevOps and I'm always looking for continuous improvement in both team efficiency and personal skill. I believe the world needs more well-rounded developers, capable of seeing themselves in the bigger picture, able to quickly spot bottlenecks in the delivery pipeline - whether it be in Dev, QA, or Ops - and work with a sense of urgency to fix them with cutting-edge technical ability while using well-honed interpersonal skills to help improve the culture around them. Passionate about giving back to the community, I co-organise the DevOps Brisbane Meetup group and help run study groups for professional software developers on topics such as AWS Solutions Architect Certification, Continuous Delivery, Functional Programming, NoSQL & Distributed Systems, and enjoy inspiring IT professionals to sharpen their craft through professional development and group learning.