SOLID, Part 5: Dependency Inversion Principle

by 

|

in ,

In this five-part series, I’m covering each design principle laid out in SOLID. In this final post, I am covering the dependency inversion principle. The “D” in SOLID is a pretty well understood principle. It is supported by a variety of platforms, including Angular. The code below shows how it is implemented using Angular. The…

Read more…

SOLID, Part 4: Interface Segregation Principle

by 

|

in ,

In this five-part series, I’m covering each design principle laid out in SOLID. In this post, I am covering the Interface segregation principle. The “I” in SOLID is a principle that is easy to skip over. Everyone will always remember the “S”, because it is first. The “L” is easy to remember because it is…

Read more…

SOLID, Part 3: Liskov Substitution Principle

by 

|

in ,

In this five-part series, I’m covering each design principle laid out in SOLID. In this post, I am covering the Liskov substitution principle. Now is when things get interesting: program to an interface that can be implemented by many services. The Liskov substitution principle (LSP), created by Barbara Liskov, says we can substitute one service…

Read more…

Developing for the LAMP Stack on Windows Using Docker and WSL

by 

|

in ,

For the past year, instead of working with my customary set of development tools, I’ve been working in the LAMP (Linux, Apache – Nginx, technically –, PHP, and MySQL/MariaDB) technology stack. This world is not new to me. I’ve spent many (many, many) hours developing software with these tools. I was going to be doing…

Read more…

SOLID, Part 2: Open / Closed Principle

by 

|

in ,

In this five-part series, I’m covering each design principle laid out in SOLID. In this post, I am covering the Open / Closed principle. The Open / Closed principle is hardest to argue for. In our SOA (service-oriented architecture) world, we try to avoid using inheritance as a method to change behaviors. We would tend…

Read more…

SOLID, Part 1: Single Responsibility Principle

by 

|

in ,

SOLID is an acronym created by Robert Martin (Uncle Bob) to describe five principles we should follow to make software designs more understandable, flexible, and maintainable. In general, these are very good guidance. While I don’t think the acronym is perfect and I don’t really focus on the open / closed principle, I do think…

Read more…

The Mechanical Turk (The Love Test for Entrepreneurs)

For the last couple of years, I have spent a significant amount of time talking to innovators both independent (entrepreneurs) and inside of organizations (intrapreneurs?). The conversations generally focus on a variation of these familiar themes: Uber for … Ebay for … Facebook for … Computer vision to … Artificial Intelligence / Machine Learning to…

Read more…

Agile Is Not A Silver Bullet, Part 2

by 

|

in ,

In my first post, I wrote about the responsibilities, goals, and struggles that development teams are facing today. In this post, I am covering our experiences and how we must take a bigger picture look at how we’re working in a world of constantly changing requirements. Our Experience So, I seemed to paint a lot…

Read more…

Agile Is Not A Silver Bullet, Part 1

Hopefully this headline got your attention. I considered trying to come up with a hashtag like #NoTDD or #NoEstimates that seem to be popular these days. I opted for a (hopefully) catchy title instead. The purpose of this post is not to bash agile methods or to somehow suggest that we should not be following…

Read more…

What We Mean When We Say “Software Engineer”

It’s very easy to throw terms around in our (or any) industry. In our hurried culture, we latch onto words or phrases that may not fully encapsulate their original intent. I’m afraid that is what has happened to the label of “software engineer”. And it has not been without consequences. I believe the real, working…

Read more…