Premature infrastructure is a peculiar behavior pattern that I witnessed in every single tech company I worked for. It is the habit of creating infrastructure code before it is actually needed. The development team is predicting future requirements and preparing ahead of time. That might be preparation for a future feature, extension capabilities that aren’t needed yet, or customization that may or may not be wanted. I believe that creating premature infrastructures is one of the biggest problems in software development.
Is C# slower than C++? That's a pretty big question. As a junior developer, I was sure that the answer is "Yes, definitely". Now that I'm more experienced, I know that this question is not obvious and even quite complicated.
In software, one developer can make a big difference. This is why hiring great engineers is so hard, and why programmer salaries are sky-rocketing. A high-performance software developer is an incredible asset in a team. A company is willing to pay them top dollar, and the competition to hire them is fierce.
One of the most important things in a good project is naming. You can’t deny it – Good names of Modules, Classes, Methods and Variables can make the difference between a code that’s a joy to read and obscure text. Some names are so bad that every time I see them I get a little jolt of annoyance bordering pain. I mean, I worked so hard to build this beautiful piece of code, this piece of art really and it’s now completely ruined by this… Name.
Fixing bugs is a huge part of a developer’s job, but not many think or read about the actual process of solving a bug. We sort of go at it intuitively, trusting our own self-developed process. Some of us tend to think of bug solving as the 2nd class citizen in programming. Not our real job, which is writing code, crafting new features and discovering new technologies. It’s just something we do in between real programming, right?
In software we have to learn new technologies all the time. I mean, every day there are probably a couple of additional JavaScript frameworks born into the world. The amount of languages, frameworks, 3rd party libraries and tools is staggering. And every place of work uses a unique permutation of those. As developers, we have to stay on top of things, no two ways about it. Once we’ve decided we want to learn a new technology, we have a lot of ways to approach that.
Have you ever encountered an over designer? An over designer is a software developer that had some life changing event and became obsessed about architecture. The result being, obsessive decoupling, endless coding of Factories, creating deep (also needless) inheritence hierarchies and various use of design patterns for no good reason. I believe the over deisgner is a mutation in the natural evolution of a software developer. Software Developer’s Evolution Not every software developer reaches to Senior level.