Words of notice: This is a slightly edited repost from an article I published on my previous blog.
In three months, I will be a web engineer…
After decades of computer science advances, there still have hurdles to overcome to make the field move forward. The future for engineers of all domains has never been so bright but it would be inadvisable to fret; it is not always what one might expect.
The web is a recent newcomer in the history of programming. So much that the state of the art evolves quickly and in a breaking fashion. Unfortunately, this means most applications are and will never be compliant with the latest trends. Then comes the lack of performance and quality… you know the story.
A key issue today is legacy systems. Legacy is everywhere. It is unlikely to work for a big company that has an application with no legacy, monolith or spaghetti code. This means an engineer might end up improving or increasing legacy code.
Is legacy a bad thing? Not always. When it is under control and well documented, you can get around it. Sometimes, there is a need for a hack to avoid an edge case or to release a product faster. That said, keeping things under control is not an easy task and as with any debt, it must be repaid sooner or later.
Did I really sign up for this?
It is natural to prefer creating core features in order to speed up product development during the early stages of a digital company. It is when you support a consequent user base that you start wondering about the stability of the product or the infrastructure that runs it. Too late, legacy has been there the whole time, lurking in the dark and now claiming its victory. Remember that piece of code you wrote in anticipation of a feature that was being discussed but was not completely specified yet? It is now striking back with bugs.
Thousands of new developers wrap their heads around the inner workings of legacy with several techniques. Iterating by scratching the surface and dividing it into services, updating to the latest trends, refreshing the technologies, writing tests to track and eliminate dead code, etc. No definitive answer exists.
Today, we have both the first generation who made the web what it is and the new one which will focus on making it even greater by finding new ways to present contents. Working together is important. Which bring us to another point: ethics.
What about ethics?
Many things are changing around us and this one is essential. This is also the biggest issue I am currently facing: how to handle ethics in our daily routine?
Testimonies of groups or persons feeling discriminated can be found everywhere around us. You can yourself discriminate unintentionally by how you act, how you learned to behave in society. It is hard to point a precise individual to blame, though. The way one grows up shapes their personality and perception of the world surrounding them.
We must not label anyone, regardless of their gender, sexual orientation, ethnicity, religious or political beliefs or any other characteristic. This is an insanely difficult task as it requires to question the way we think and we process information, the way we exchange with others, the limits we impose to ourselves and to our discussion partners. To reduce cognitive load, it is common for most of us to simplify and classify. This is a bad but necessary habit that we have to erase.
We need to rethink our inner workings so that everything goes smooth between systems and between humans. The gap between generations has never been wider and we need to act soon if we wish to have something positive to pass on to our descendants.