Let’s imagine a developer’s life without limits.

What would we be able to accomplish if we were not victims of time pressure, blockers, inherited code bases, political games or economic distress?

What if we could dedicate all the time in the world to design and build our solutions with no dependencies blocking our way. Just a clean slate sprinkled with hope and glory in a perfectly functional organisation surrounded by magic money trees. Wouldn’t that be nice?

Let’s face it, we all have those days where we feel like external pressure and other constraints are limiting our abilities. …

Enforcing standards in a distributed system might impose the risk of constraining innovation but it can help preserving everyone’s sanity.

The importance of standards

Microservice architectures can quickly evolve into an integration nightmare and a fractured ecosystem if standards are not taken seriously. Do you remember what it was like before most manufacturers standardised on USB for the mobile chargers?

Do you remember when the following adapter was a thing?

Your current software running in production might be considered legacy today, but it has managed to achieve something remarkable: it solved the problems it was created for.

As technologies evolve it gets harder and harder for software to survive the test of time. With exponential progress, software tends to start feeling outdated much faster than it used to. Analysing the main factors impacting the longevity of our code and how to improve on it will be crucial to ensure our solutions will live long and prosper.

Old Technology != Broken Software

Software built with old technologies is commonly considered legacy. It does not necessarily mean…

Your GitHub profile can increase the chances of landing your next programming job, but it can also act as a double-edged sword.

The résumé filtering challenge

Some companies rely on GitHub profiles when evaluating software engineers and dismiss candidates that don’t have one. People tend to have radically different opinions about whether this is a good practice.

Dismissing a candidate just because their GitHub profile is either empty or non-existent should not be the default approach. Having said that, it is still widely used as an additional filter in the interview process, and for good reasons. …

Are you considering a career in software development? Or are you currently struggling to keep up? Achieving your goals is both easier and harder than you think.

I recently participated in a coding dojo as a teacher and I was really surprised to see how some of the participants, most of them with no prior exposure to programming, got hooked up extremely quickly to the world of software development.

The question that pushed me to write this article was asked by one of the enthusiasts on the day: “Do you think I could be able to learn to program and…

Individual code ownership or collective code ownership? Your choice won’t really matter if you are missing one critical ingredient: the developers need to care.

Empowerment and the risk of unilateral decisions

From the management point of view, it makes a lot of sense for a larger company not to allow an individual developer to completely own a part of the overall system. This person could be on sick leave or on holiday and cause unwanted delays to some deliverables. He could also just leave the company altogether taking with himself all the knowledge about the part of the code base he owns.

On the other hand, developers…

I absolutely love functional programming. It does help in a lot of ways, but you should keep in mind that you can still end up with a written program that is completely, utterly, broken.

Avoiding mutable state

Functional programming will help you avoid most of the errors caused by having an unmanageable amount of mutable state in your code. This does not mean you are forced to use a functional programming language in order to take advantage of immutability in your code though.

In general, it’s useful to carefully consider where in your program you definitely need state and where it can just…

Why do businesses grow technology teams to the extreme? The Mythical Man Month taught us that throwing people at a problem won’t help to deliver software products faster. But in some cases, it still feels necessary.

Team Size != Productivity

This has been crystal clear for quite some time. Smaller teams usually have a much higher performance than larger ones, and they are dramatically more efficient. This is true in software development, but in most other fields as well.

The main reasons this is true are simple: fewer people means less communication overhead, more focus on the most important things first and less friction…

This is going to be a tough topic. It’s a very powerful dilemma in modern software engineering. It’s complicated because it also reflects our everyday lives. We all live in a world where there’s no absolute freedom and a government is considered vital by most people. Ok then, how does this apply to a software company?

We don’t need no architects!

As you should already know, we used to have enterprise architects sitting in their ivory towers and doing a bunch of software design up front. With the advent of Agile things seem to have changed for the better. Designing everything up front looks like…

This is our story. For some of us, those with 10 or more years of experience in software, it might sound familiar. For the others, still in the early stages of their careers, there should be plenty of advice about what’s coming up next in your short-to-medium-term future.

The early stages

We are not entirely sure how, but it happens. A light sparkles and we just fall in love with programming, maybe after finishing building that university project or the other piece of software we built just for our own use. So much to learn, so much to experiment with. There’s this very…

Bruno Filippone

Software Engineer | bfil.io

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store