Sometimes I feel sorry for our recruitment team. They spent years looking for rockstar developers, only to realize that the developers they should have been searching for are actually ninjas. When they finally found where ninja developers live, and learned to speak the ninja language, the target moved once again. Right now, the thing they need to hunt is called a 10x engineer. But what exactly is a 10x engineer? How do you identify one?
Looking from the other direction, as a software engineer, if so many employers are looking for 10x engineers and some are willing to pay them 5x or even more, it’s only natural that I would do my best to become one. But what exactly does it take? …
The French philosopher René Descartes (1596–1650), set himself the task of determining how certainty could be established. He believed that we should:
Systematically doubt everything that could be doubted, including the most common beliefs.
In order to illustrate his approach, Descartes used the analogy of a basket full of apples, some of which might be rotten. As you know the rot from one bad apple can easily spread, and therefore it’s important to get rid of the bad ones in order to preserve the health of the rest. …
Have you ever been on a blind date? If you have, I am sure you remember the feeling of “what am I doing here?” during the date, followed by the “what was I thinking when I said yes” on the way home. I can hear you saying “some great love stories started with a blind date”. Yes, I know. But is blind dating an efficient way to find love?
Efficiency is a core concept in software engineering. We have sophisticated methods and fancy tools that helps us drive efficiently in almost every process. Hiring is an exception.
I assume we can agree that building a strong team is critical for our success and that hiring the right people is a core element in building a strong engineering team. …
Metaphors are great. Especially when we as developers need to explain our geeky world to people who don’t write code.
Technical Debt is a metaphor, coined by Ward Cunningham, co-author of the agile software development manifesto, as well as a guru in the fields of object-oriented programming and design patterns. In this video, he explains the tech debt metaphor:
The explanation I gave to my boss, and this was financial software, was a financial analogy I called “the debt metaphor”. And that said that if we failed to make our program align with what we then understood to be the proper way to think about our financial objects, then we were gonna continually stumble over that disagreement and that would slow us down which was like paying interest on a loan. …
If you have ever built a B2B SaaS product, I am betting that one of the first things you were told is that multi-tenancy must be the operating model for your entire product.
“Multi tenancy is a requirement for a SaaS vendor to be successful”
You probably noticed that every presentation or article about agile software development or about micro services architecture can’t be considered scientific nor serious unless it somehow mentions Conway’s law.
Back in 1967, when “full stack” was still describing a state of a data structure and if someone told you that he is “moving to the cloud” you sadly asked him what kind of terminal illness are you suffering from?, Dr. Melvin E. Conway wrote:
“Any organization that designs a system will produce a design whose structure is a copy of the organization’s communication structure”
This makes perfect sense. The canonical example in a good presentation about Conway’s law would be an org which is divided into 4 R&D groups and is assigned to the task of implementing a 3 pass compiler, and somehow ending up building a 4 pass compiler. …