A Romantic Vision of the Software Engineering

Rodrigo Araújo
Jan 29, 2014 · 5 min read

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.

#include<stdio.h>

int main(){

printf(“Hello World”);

return (0);

}

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:

i know it’s a mess, but…150 lines of code? that’s so pro!

—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:

what the *** i was thinking that time??

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

After a short search for a internship opportunity, a software company finally will hire you as an intern, and you, with all your experience dealing with code bases that you created by yourself (getting the mark of even 2 thousand lines of code, wow!) will think that you’re prepared… So your manager says some new stuff to study, so you can understand the technologies of the company: J2EE, JPA, Hibernate, JSF, HTTP, FTP, JavaScript, Jquery, AJAX among others, well, you’ll be a little shocked at first, that’s normal, but anyway, you, strong programmer, affirms “it’s okay, i can learn it quickly”

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:

what the fuck did i just read?

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.

Java code written by engineer of your company

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:

yes, Neo, exactly just like that.

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.

No matter what happen, don’t give up to understand the logical flow of your new universe, the key to this comprehension is to stay mentally connected to the system, feel it, live it, walk inside it just like the processor, step by step, line by line, command by command, trust me

You will find the pattern inside the chaos.

    Rodrigo Araújo

    Written by

    Theoretical CS, Software Engineering, Artificial Intelligence, Mathematics and Security. Yep, I really like all this stuff. More at rodrigoaraujo.me

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade