Well, it all will start with your first steps on studying programming, a very innocent and and naive programming, i mean, your very first “Hello World” and the classics “Read 3 inputs and print the sum of them”, where your concerns will happen because of some missing commas, whitespaces and some misplaced IF’s… things that at first sight may cause a little confusion, you’ll start to think that’s even something hard.
The time will pass, you’ll start to understand logic better, and get impressed with your first program written with 150 lines of pure java code, and this will be you amazed about it:
—now you’ve become a programmer, or even better, a software engineer, right?!
we shall answer that soon, let’s continue our timeline…
You’ll commit yourself to do your first not-so-trivial software project, maybe a stock management system, using some sort of web technology and data persistence with some cool database system. After a few days and some effort, you’ll finish your project and get even more amazed…1500 lines of code!!
Until happen the first problem with your system and you gotta fix it, and you will have to come back to it after 1 month without looking at its code and your first reaction, probably, will be this:
And you start to suspect “Well…maybe i’m not this Software Engineer thing yet”
From this point, you start to study some software development principles, design patterns and how to write reusable and maintainable code and all this stuff. Uff…finally, now you’ll think “i feel more professional now” and that finally you can deal with the industrial world, so you’ll come to a important step:
“it’s time to get a software engineering internship”
Well, i will tell you the consequences from this important decision in 3 phases:
Phase 1 — New technologies to study
what bring us to the big shock that is the phase 2…
Phase 2— The company show to you their legacy systems
Ok, then you studied every concept that were indicated to you to learn on phase 1, so, you, with all experience that you have (because you wrote 2 thousand lines of code, right?), affirms “ I’m ready to work with the company’s systems ”, then, your manager shows to you their system that was written in java, 10 years ago, with a total of 700 thousand lines of code without documentation and he says:
— “You will be responsible by the maintenance of this system, here’s the code, study it, good luck!”
And you, programmer, looks to the code, runs the system, looks to the code again…and your only reaction is:
And this is the time that you’ll start to doubt about the universe’s laws. You’ll start to think that nothing makes sense anymore and all your knowledge was a lie…after all…
“seriously, what the fuck is this? there’s no way to understand this code, it’s giant, messy, old and nothing makes sense” — you think.
And then, the desperation takes over your thoughts, you realize that everything you learnt on your classes and on codecademy was very different of the real world systems, you don’t know where to start…but after read the code 10000000 times…you, in a magic way, gets to the phase 3.
Phase 3— The discovery
After much effort and lost nights, you, magically, starts to see patterns in these many lines of code, you start to see a logical flow and the most important thing:
You start to realize that even a uncommented code has the power to tell you a story
“A story? how is that possible?”
Exactly, the more time you spent there trying to understand the code, more you started to see patterns, it’s like the code could talk by itself, telling what problems they were trying to solve, it’s like you were present at that time when the old engineers were doing a brainstorm to find the solution to certain problem
And you, young future engineer, start to see the logical flow inside those 700 thousand lines of code, and strange as it may sound, you start to mentally talk with the code, and the most amazing, the code starts to answer to you, and it gives you tips and paths to follow so you can understand it better.
And suddenly you reached a state of mental ecstasy, so all your powers got back to your hands and all this messy and dirty code starts to make sense and gain shape:
And then, the following quote from Eric Filson makes a huge sense in your life:
“The art of programming is finding patterns where others see only chaos”
Yes, this is where you really start your love story with the art of software writing, is where you create your extreme connection between your mind and the code, is where you, temporarily, disconnect from the real world and connect yourself to new others universes: Your systems.
Where new laws are created and you understand all of them, yes, all of them. Universes which you have total control and you like it. At this moment is created an emotional bond between you and the system, you created it, you own your own universe, use it with responsability, after all, thousand people depend on it.