Key elements of Bliss Framework
The principles and key elements you'll see in this framework are amalgamation and distilation of different approaches we've met and tried over the years.
We, as a company, also own a small restaurant and it surprised us how much these two types of operations have in common.
Chefs and programmers do the same things
- they have to follow a recipe
- they take and return tools and ingredients from and to the same place
- they must keep their workplace clean
- they have to learn new approaches, new recipies,but they still have to customize them for their catering operation
- they have their own language, they have no time for miscommunication, for long debates what is what
Understandibility
Since we have insight into gastro operations, we describe our process with real life examples from restaurant, which is something even very fresh programmers can understand.
If the thing you do feels too complex to explain, it's probably overengineered and you should rethink your approach. Be like Erlang OTP, keep it simple and it will last.
Leave your ego outside
When you start using this framework, you'll start to feel urges to do something different, to do it better.
The problem with this is, that if everyone felt the same way and let his ego get over him, then there's no need for any framework.
It doesn't mean you cannot take this framework and adapt it to your environment, but after you do that, be strict on yourself and others, push them to follow the same rules.
!!! THIS IS CRITICAL !!!
Nomenclature
Nomenclature, the naming of things, is super, super important. It makes the team faster in understanding what is what, and after a while it comes to you natural, it leads your way through code.
Our nomenclature is universal and not really dependent on the language or framework we use for our projects.
Focus on order
When you focus on keeping everything in order, you'll just slide through your code like hot knife through butter. That's where the bliss and efficiency comes from. You simply know where to look.
We have same naming conventions for directories, projects, files, repositories, batch files and so on. And if we find some older projects, where we were not so diligent, we first start with clean up before working on them.
We even have the same setup when it comes to IDE and shortcuts. When we share our screens with others, this helps tremendously, since it's like you are watching your own screen and you can focus on problem at hand.
Real life example
At BaƄa shoe maker company, the marvel of efficiency and optimiziation, back in 1930's, every worker on assembly line had a toolbox that was hanging on wall. This toolbox contained all tools that worker station required, and it was facing the aisle between the stations.
This toolbox had a red background in shape of every tool, just so when the tool was hanging in the box, the background was not visible. At the end of shift, all that foreman had to do, was to walk the aisle and look for red color.
That's how smart order of things gives you efficiency.
Restrain yourself
Over the years you'll be tempted by many, MANY, new frameworks, new language features, new tricks how to be cool.
It's is very important to restrain yourself. You and your team has to be on the same level. The more features and quirks of the language you use, the more you have to explain to new programmers, and others.
You can find a new operator in almost every version of C#, or a different way to create objects, to define constructor. Once again, the problem lays with individuality.
For example, your like ??
operator, your colleague doesn't, so he doesn't use it, but uses a different one, and another colleague doesn't even understand it. Now you have three team members and every single one uses something different, and every single one will have to learn the way of others. This of course adds up over time.
Everyone will have to sacrifice some feature and accept another, that is the only way to keep the code base concise and readable for all.
Trust me, it doesn't make you more cool, if you write your code only with ternary and null operators, it just makes your code harder to read.
Restrain yourself, be readable.
Plan for tomorrow, build for today
Leave your individuality outside as well
We understand that (almost) everyone has a need to express themselves, to be unique, and that's great, just leave it out of your code. There's no place for in there.