2

Preface: I am not arguing against convention but rather want to have a greater understanding why convention is something I should follow and what are the benefits/drawbacks of doing so.

I have found in my development that convention is something that I feel I should strive for for whatever technology or platform that I am developing for. I believe in this to the point that I regularly seek out what platform specific conventions have been defined. However, I do not have an entirely good conceptual reasoning for doing so. What I usually cite when asked is the fact that if convention is followed it gives a larger base of knowledge to pull from and more standard practices that can be adopted in development.

It is my belief that with enough domain knowledge and tight design principals among a development team convention can be dropped for a custom convention as long as an entire team has committed to maintaining a new standard. However among teams that have a loosely centralized vision of development it is better to rely on a standardized conventional principal.

Should I as a developer seek convention as a way to resolve development decisions or have I developed a fallacy around conventions that would become a hindrance?

  • 5
    For the same reasons you follow traffic lights: because it reduces chaos. – Robert Harvey Apr 27 '18 at 18:03
  • 3
    Beyond that, I'm not quite sure what you're asking here. There is a tendency for developers, especially inexperienced ones, to use conventions and patterns as a crutch, to reach beyond their fundamental understanding of the technologies and practice dogmatism instead of problem-solving. Those folks don't need more conventions; they need more experience. – Robert Harvey Apr 27 '18 at 18:05
  • Would convention be important enough that I should spend time to specifically to understand or follow convention. I guess I would feel somewhat like you mentioned that convention is becoming a crutch to me, and in that consideration how does development evolve past convention to become something more and how does that play with myself or others trying maintaining convention as well. – Dinkles Apr 27 '18 at 18:10
  • 2
    The key is understanding your limitations. The correct question to ask is not "what's the standard way to do this" or "what software pattern solves this particular problem," it is "given my adequate understanding of this problem space, is there a generally accepted convention that I can follow that will improve me and my team's communication of ideas?" Conventions do this by providing a well-known and well-understood mental framework for communicating those ideas, thus reducing cognitive friction. But those ideas have to already be fully-baked. – Robert Harvey Apr 27 '18 at 18:25
  • To put a finer point on what @RobertHarvey said, if you're blindly following convention, best practices, agile or any other buzzword because somebody says "you need to do this," you're not reasoning about your situation. – Blrfl Apr 27 '18 at 19:00
5

I think your answer is partially in your question:

a development team convention can be dropped for a custom convention as long as an entire team has committed to maintaining a new standard.

It is hard to get a group of individuals to agree on a convention. Trivial things like, tab or spaces, variable casing and logging can occupy weeks of time. Some of this convention is trivial and we can waste a lot of time arguing. It is often more time-effective to say "Follow the standard convention".

Some languages have convention built so tightly into their community that tools are built around it. Take python for example. PIP 8 is a widely accepted standard for naming conventions. It is so widely accepted that most IDEs handle checking compliance for you. Using a set convention allows you to use tools that check that convention.

  • This doesn't answer the question why you would want to follow conventions. – Jesper May 1 '18 at 9:20
5

Why do we follow Convention?

To reduce cognitive load.


In todays (sofware) world, complexity is hidden under every stone. In order to achieve a simple looking task like show me a list of all users in my browser windowyou have to build a very complex system of many moving parts. In order to accomplish this task in a reasonable amount of time, convention helps reducing the number of things one has to reason about, i.e. the number of decisions one has to make. So you are free to do your actual job of solving problems and are not stuck in side- or meta-problems.

It is like @Robert Harvey said

For the same reasons you follow traffic lights: because it reduces chaos.

But the reason why chaos should be avoided is not that chaos in itself would be bad, but it is more energy consuming to deal with it. If you have limted resources, conventions help you not wasting too much. It is an organizational pattern.


And this is not limited to software.

4

Convention is important when there are multiple options available with no clear reason to prefer one over the other. The best example I have for this is determining which side of the road should you drive on. The answer is whichever side everyone else is driving on. Neither side is inherently better so the only way to avoid a big mess is to pick one more or less arbitrarily and have everyone follow that convention.

Convention can be problematic when it is substituted for critical thinking. If convention is to do something a specific way but a new discovery or tool allows for a superior approach, choosing convention over results is clearly folly.

  • Following even a braindead convention might be worthwhile, as it allows you to avoid controversy. Naturally, if people are reasonably reasonable (no guarantees on that) and you have the time and other resources to invest, you might get away with improving things, and can then reap all the benefits from that. – Deduplicator Apr 27 '18 at 18:27
  • @Deduplicator These aren't always simple choices i.e. what's enough potential value to warrant going against convention? But using a convention as a argument against improvement, by itself, is problematic. This is a path that leads to obsoletion. – JimmyJames Apr 27 '18 at 19:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.