Philosophy
Yes, I have a software philosophy. Actually, it's more like a core set of principles.
Know Your Customer
It's impossible to deliver valuable software to users without understanding their domain.
Many of us are familiar with the following quote attributed to Henry Ford (but it turns out he never said it):
“If I had asked people what they wanted, they would have said faster horses.”
The quote doesn't mean we shouldn't talk to our customers. Rather, it means that we need to dig deeper.
We need to ask, "why do you need faster horses"?
I once had a client who asked for a feature to be added to the application that my team and I were building for him.
I didn't understand the purpose of the feature. My team and I could have simply implemented the feature
he requested. Rather, I asked him what the underlying business problem he was
trying to solve. When he told me, the light came on, and we were able to deliver a much simpler solution that met
his needs. Don't simply give your users what they ask for. Dig deeper to understand the problems they face.
Keep It Simple
One of the guiding principles in the Zen of Python
states
If the implementation is hard to explain, it's a bad idea.
We all have bad ideas at times, including me. That's okay. It happens. And those bad ideas are usually the first
ideas we come up with. Just don't stop with that bad idea. Try explaining it to someone else. Writing it down
can also really help. The key is to explain the solution in English, not code. If we can't explain it in English
without turning ourselves into a pretzel, we need to stop. It's my experience that there is almost always a simpler
solution. Finding that simpler solution, though, requires tenacity. That's one of the most important qualities of
any software developer.
Teamwork
Plenty of major accomplishments have been achieved by individuals, but I'll always take a team over a single
individual, including myself. When a team has a high degree of synergy, ideas flow freely and one idea leads
to another until a consensus is reached that everyone can get behind.
Continuous Learning & Mentoring
No one can be successful in this profession without continuous learning. I was writing code when Netscape Navigator
was released in 1994. It was requires passion and commitment to keep up with all the changes. In the past year,
I've acquired a couple of certifications from AWS, learned React and Tailwind CSS, and built
the Solar Modulith.
Learning is the first critical step. The next step is to share that knowledge. It's one of the things I most love
about my profession. I was once a computer science instructor at the University of New Hampshire. I taught a
variety of courses from Visual Basic to Data Structures. At work, I like Lunch & Learn opportunities. At Conservis,
I taught a multi-week course on Robert Martin's book Clean Code.
©
Donald A. Barre. All rights reserved.