What Is An Architect?

What makes one a software architect? Is it just a title you get to apply to yourself after x amount of experience? Are there classes and certifications you need to have? Is it the group of developers that don’t (or can’t) develop any more? One possible definition of architect that I quite like is from … Read more

Just Evil

As developers, we seem to do things to ourselves that are just plain evil. Perhaps it is a shortcut right now, but sometimes in the future it will come back to bite us hard. This isn’t always what we might consider technical debt, but that can be a part of it. Sometimes we even do … Read more

What Is Legacy Software?

There are many definitions out there for what counts as legacy software. For a long time my favorite was from Michael Feathers, which was something along the lines of “any code that does not have tests”. “They are writing legacy code!” I have a new, related definition that seems to fit well too. Any piece … Read more

Craftsmen and Their Tools

This is kind of a follow-up to my earlier post Using the Right Tool. This one focuses more on how people tend to migrate towards tools. Do you know any great craftsmen? Anybody really great at carpentry, or art, or even more traditional tradecrafts like electricians or plumbers? What kinds of tools do they use? … Read more

Builds, and Pomodoros

Do you use the Pomodoro Technique? Many tech folks migrate towards that to help enhance their productivity. I know you do and follow builds, both locally and in a build server somewhere. How do you make these things work together? If your builds take any amount of time, more than 10 seconds or so, that … Read more

When To Rearchitect

Just like any other piece of a software system, a system’s architecture can accumulate dust, and turn into a form of technical debt. Sometimes this debt is non-prohibitive, or even useful, but if it is not considered and re-evaluated on a regular basis, it can jump up suddenly as a crushing debt, keeping you from … Read more

Java JMX in Docker

How to enable JMX in a container running in a local, or remote Docker container. These are the flags that I typically pass: This enables jmx, allows it to be remote, specifies port 9000, and allows it to bind to all the network interfaces. Then, you just need to make sure to expose port 9000 … Read more

Macroservices

Or, Partial Microservices There has been much discussion lately around how microservices may not actually be the appropriate architecture for many teams and companies, especially those working on legacy applications. The idea behind this is that while microservices may perhaps be ideal in some circumstances, they most definitely have their limitations, and really are not … Read more

User Experience

How do users interface with your app?  Do they take actions in a UI with a keyboard and mouse?  Do they tap on their phone’s screen?  Do they open up a chat in their favorite chat client?  Do they dictate actions to Siri?  I don’t know about everybody else, but those are usually questions I … Read more