What the hell could a founding father possibly teach us about developing software? In the 1740s and 1750s Ben Franklin was still performing early experiments with electricity. He and other citizen scientists were just starting the groundwork that eventually led to modern computers. Franklin’s the guy we credit for having coined the terms “positive” and “negative” as charges for electricity. Yet It would still be another 200 years before the first computers appeared, let alone “software engineering” as we know it today. Despite that there was no software to write, there is a major overlap between what he did every day back then, and what we do every day now: And that’s “get shit done”.
The office recently had some T-shirts made for our developers. The hope was for all our customers and partners to be able to easily recognise our developers at a conference. Unfortunately the T-shirts didn’t compile.
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.
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.