Skip to content

Best Developer Interview Question

Sponsor: Do you build complex software systems? See how NServiceBus makes it easier to design, build, and manage software systems that use message queues to achieve loose coupling. Get started for free.

Learn more about Software Architecture & Design.
Join thousands of developers getting weekly updates to increase your understanding of software architecture and design concepts.


I want to give you one of the best tips related to hiring and developer interview questions. It doesn’t matter if you are the one in the interview who’s answering or asking this question. This tip relates to one of my most significant issues with the software development community: we often take a concept and then butcher it to the point where it no longer has its original meaning.

YouTube

Check out my YouTube channel, where I post all kinds of content accompanying my posts, including this video showing everything in this post.

Semantic Diffusion

I first discovered the term Semantic Diffusion from Martin Fowler. I would always explain the concept but did not know it had a name.

Semantic diffusion occurs when you have a word that is coined by a person or group, often with a pretty good definition, but then gets spread through the wider community in a way that weakens that definition. This weakening risks losing the definition entirely – and with it any usefulness to the term.

https://martinfowler.com/bliki/SemanticDiffusion.html

This is one of my biggest issues with the software development industry. Semantic Diffusion is constantly occurring. If you’ve been in the industry long enough, you’ve witnessed and likely realized it happening.

Meaningless Terms

Here are a few terms that are often meaningless either because everyone has a different definition or the current widely understood definition is not what the original was.

Service

You’ll get various answers if you ask ten developers what a service is. Some would probably reference in a way that is independently deployable or executable. Some would likely reference a service layer in an actual code abstraction sense. Some would likely talk about them in the DDD Bounded Context sense. The list goes on.

The most relatable and applicable to Semantic Diffusion is REST.

If you’ve read my blog or watched my videos, you may have noticed that I rarely use the term. I often use the term HTTP API instead. REST now means something very different from the chapter in Roy Fielding’s Dissertation.

When people talk about REST, they often mean CRUD with JSON driven by Nouns/Entities.

Then, there are all kinds of bikeshedding and dogma around this butchered concept, forcing people down the path with a certain prescription.

One more example of semantic Diffusion is DevOps. This now means different things to different people. Some view this as a Role or Job Title. Others view it and are sold/marketing as tooling. For example, a build/test/deploy tool might be marked as a “DevOps” tool. However, this was originally a term used to express a concept of collaboration between developers and operations. Removing the silo and division of what historically was two segmented groups of people.

Best Developer Interview Question

So, what does semantic diffusion have to do with the best developer interview question? It exposes how deeply someone understands something they claim to know well.

“Talk to me about something you believe you understand deeply. Talk about what you the good but also the bad aspects of that”.

If someone understands something deeply, they can tell if a semantic discussion has occurred. Another important aspect, often overlooked, is they will be able to talk about the positives and the negatives. Everything has trade-offs or downsides.

If someone is talking about a programming language that they know deeply, they can tell you all kinds of downsides or things they don’t like about it about that language.

If they are talking about a tool/library/framework, they can tell you some hidden gotchas they discovered.

They can do this because they have real-world experience that isn’t shallow. Anytime you’ve done something enough, you’ll experience some pain that builds up your knowledge about the subject.

Back to semantic diffusion, it’s important to know where something comes from and its history. You’ll understand the why behind some concept or what problem some tool/library/framework exists and what problem it solves.

Understanding the why behind the tool or concept you are applying is foundational knowledge. You’ll be able to see past all the nonsense you read about “best practices” and filter through a lot of noise. You’ll actually be able to “use the right tool for the job” and not turn everything into a nail because all you have is a hammer.

Join CodeOpinon!
Developer-level members of my Patreon or YouTube channel get access to a private Discord server to chat with other developers about Software Architecture and Design and access to source code for any working demo application I post on my blog or YouTube. Check out my Patreon or YouTube Membership for more info.

Leave a Reply

Your email address will not be published. Required fields are marked *