:::: MENU ::::
Browsing posts in: Code Craftsmanship

VW emmisions cheat raises questions about ethics and accountability in Software Engineering

You’ve probably heard in the news that some 11 million Volkswagon cars were loaded with software specifically designed to “cheat” emissions tests.   The car would recognise when it was being tested, and switch to a special mode that would drop emissions to the bare minimum.  So the cars would pass emissions tests with numbers that were much lower than what the car actually produces when driven on the road.

On October 8th VW’s US CEO was pulled before congress and was asked what knowledge/decisions were there at a corporate level for this.  To which he replied that an investigation is still “on-going” and continued with:

“This was a couple of software engineers, who put this in for whatever reasons”
– Michael Horn CEO Volkswagon America

Continue Reading

Is Certified ScrumMaster training worth it?

I just completed the Certified ScrumMaster certification by Scrum Alliance. It was a two day course full of dry-erase markers, slideshows and team activities. Lunch was provided.

Overall, I enjoyed myself. We went over the Scrum roles, the different Scrum Meetings, the Scrum Artifacts and general agile principles. There was plenty of time with each topic to answer questions, and everybody was engaged and part of the discussion. I doodled and took notes with colored sharpies, and there were pipe-cleaners spread about for those of us who like to fidget.

Continue Reading

Inversion of Control

In my last post about the Clean Architecture (link) we talked about dependencies, and how we’d ideally like them all pointing “inwards”. That is, we want all the dependencies pointing away from code that might change, and towards code that is less likely to change. The reason we should be intentional about dependencies, is to limit how often we need to change our code. Changes will ripple along those dependencies. Additionally, we need to handle the behavior of dependencies when unit testing.
Continue Reading

The Clean Architecture

Now we all know why the layered architecture sucks (link). The layered architecture is [practically] impossible to create as it’s designed. There exists an implicit dependency of the data layer on the business layer; and a transitive dependency of the presentation layer on the data layer. These two dependencies will probably occur in an implementation of a layered architecture, but are not represented, or acknowledged in the traditional design. There is a better option, and we’ll walk through what that is.

Continue Reading

Simple Plug-in Example

The long-term vision for a project I’m working on now is using the word ‘platform’. “We want to be a platform.” But what does that mean? Windows is a platform, Android is a platform, heck Firefox is a platform. All of these platforms provide a way to run 3rd party code, in the form of apps, programs or plug-ins. When exploring some options for pulling in and running 3rd party code within a rest-service, I realized I’ve never had to write a plug-in. Here’s a simple walk through of a simple plug-in example in Java.
Continue Reading

I See Dead Code

dead code. What is dead code? Dead code is both useless code and unreachable code. A class or method that is never used, is dead code. Code which is run, but the results of which are never used, is dead code. Dead code is expensive. We compile it, deploy it, maintain it, run unit tests against it, and we spend time and effort trying to not break it while maintaining other parts of the system. Continue Reading