The real job of a programmer is understanding people



The first time I wrote a computer application, I saw the computer do exactly what I was asking it to do. I started to believe that if I wanted to become a programmer I'd have to learn as many commands as possible to make the computer do everything I wanted.

But, I grew up. I worked in every kind of companies. From fortune 10s to the small start-ups with a handful of employees. I realized that my job as a software engineer didn't only involve computers. A huge part of the job was talking with people. Trying to understand people.

I went to countless meetings. I'd seat with a manager in a small room and a white board where we would talk for hours. I'd join conference calls where I would listen to a team of non-technical people talk for long stretches. I was still a programmer, but my job was not to play with the latest technology, do some code golf or hackatons. My role was to understand what problem people where having, and then come up with a solution.

Programmers love programming for the sake of code. But the real power of programming comes in extracting requirements out of a non-technical conversation, fundamentally understanding the problem, and coming up with a solution. Only then, should we write code.

How to stop working when you work from home



Working from home, it's easy to find yourself checking your email at 10 in the evening. The workday started when you were in bed checking email. When the day ends, you are again in bed and the email as right there on your phone. Instead of going to sleep, we check it one more time.

It's hard to create this boundary when work and home share that same rooms. When we leave our physical offices, we perform a routine. At the end of the day, we start packing, shutting down computers, and we drive home. This performance switches our brain from work mode to normal mode. But when home is our work, we never make the switch. We find ourselves tempted to work throughout the day.

Create a routine when you finish working from home. At the end of your work day, perform it to get out of work. Whether it is cleaning up your workspace, shutting down your computer, or putting your laptop away in a closet. I have a clean up routine that last 15 minutes. Unless I do this, I'll find myself reaching for my work computer to do more work.

The same can be done to start your day. Instead checking your email the first thing in the morning, start your by going to your home office. Even if it is the same room. Clean up, have breakfast, wear some work clothes.

We need the mental switch to make better use of our time. Otherwise work takes over our homes.

Laugh Tracks



Humans are bound to follow the herd. When you see everyone running out of the building, the instinct is to run out of the building. When everyone is looking up in the sky, the instinct is to look up in the sky. When everyone is laughing, we don't try to get the joke first, we laugh with the crowd. Only later we ask why we do it.

Show runners have exploited this psychological traits by queuing a laugh-tracks in their shows. Every time there is a joke, the crowds laugh, and we follow suit. And it works! TV shows are funnier. But then, we are in a Pandemic and TV shows can no longer have live audiences. The laugh tracks has been silently killed.

It's like a veil has been removed. The lack of laugh tracks revealed how unfunny some shows are. And then, it showed that some shows can do just fine without a laugh track.

When the quarantine end and the live audience comes back, we will never look at TV shows the same. Those who are unfunny without a laugh track, will have to come up with a new trick.

Change is rarely dramatic



Looking back at my life, I can safely say I am a different person. You can find some similar traits, but a lot of my beliefs have change. I don't dress the same, I don't hangout with the same people, I don't even speak the same language. Yet, it is hard to say when the transition occurred. Only that now I am different.

When change comes, we are resistant to it. We are comfortable in our ways. We learn one new habit thinking we have control over it. Fast forward five years, we can see that the habit led us to a completely different life.

When the car was invented, no one pictured gas stations at every corner. Now when you zoom 70 miles an hour on the freeway, you can't even imagine what it was like for people to have horses.

When the first cell phone came out, it was impossible to imagine that every single person will only be a few taps away. When we look at inventions today, we can only speculate about the future. But the change that will happen will always come as a surprise when looking back.

Changes is rarely dramatic when it occurs. But let enough time go by, and you will see that everything has changed.

Software is Magic



Software is magic until you learn how it works. One mistake we often make is we try to break that magic. Instead of using software tools as they come, we try to re-implement them on our own.

The problem with that is that we are not all magicians.

A common place this occurs is in security. Everyone learning web programming immediately starts implementing their own password hashing algorithm. They think because they are not sharing their code, an attacker cannot guess how they are hashing their passwords. The bad news is that, just like cryptography is akin to magic, password cracking is sorcery.

The more you learn about software, the more you understand the plethora of software and hardware needed to run the simplest of hello world.

Ben eater, an electronic instructor on YouTube, goes from using a breadboard, to printing Hello World on a screen. The complexity is enough to lead you into giving up your dreams of becoming a magician. Instead, you get to use the magical product at the end and don't think too much about it.

Are all programming languages the same?



No! But there is something to be said about the question. We can print hello world in every language. Every programming language worth its salt is Turing complete. Meaning, you can rebuild the language using the same language.

But programming languages are different. Each comes with its own preconceptions and rules. For example, PHP is a great language for web programming. A lot of its functionality assumes that you are going to use it in a web environment. But if you are trying to do graphic programming with it, you might find a few hurdles.

I watched a comedy on YouTube with my wife. It was in French but subtitled in English. There was a part a man was saying.

Monsieur le president, Madame la presidence,
Monsieur le prefet, Madame la prefecture,
Monsieur le maire, Madame la mairie,
Monsieur le peuple, Madame la population.

At every single line, I was cracking up. My wife read the same thing in English, and there was absolutely nothing funny to her. The worse thing to do about a joke when someone doesn't get, is to try to explain it. But to understand the joke, you first have to understand the language. Second, you have to understand the country the man speaking was from. And third, you have to look at his uniform... Each of those reinforce the joke in a way that is not obvious.

Programming languages are like jokes in a language. You can tell the same joke in many languages, but the translation will not be one to one. You have change part of it to be relevant to the culture of the audience. In programming term, this will be the context. If you want to switch from PHP to Golang for example, you'll have to remember that you don't get your web server globals for free. You have to learn a new syntax for your template engine. You have to remember to return your errors. You have to write a panic recovery scheme.

And, you also have to consider that for the same outcome, different languages will use a different method. Good luck handling your web sockets connections in your PHP instance.

In other words, you can print hello world in every language, but it still doesn't mean you will program it the same way.

Why do we study for the test?



If you are in class and the teacher says that you have a test the next day, what are you going to do? The most common thing to do is study for the test. But why? Isn't a test supposed to measure what we have learned so far? If we encouraged students to study right before the test, we are measuring their ability to study.

When I took an astronomy class in college, there was no need to study. The class was held in a planetarium where we gazed upon the stars in pitch darkness. The professor had a laser pointer and pointed at different parts of the sky while he told stories. He told the story of Orion and Taurus with the Pleiades. Spoke about the illusory distance between the stars on Orion belt. Introduced us to parsecs as unit of measurements.

On clear nights, we would go out and look at the sky through telescopes made by students in a different class.

When it was time to take a test, we already knew everything. When you have looked through the lens with your own eyes, it's easy to differentiate a reflective telescope vs a refractive one. When the story is interesting, you remember the names. When the dates are major events you can relate to, you memorize them effortlessly. The test only reveals what you understood and what you didn't.

Even a Math class can be taught in an interesting way. Very few students can thrive when the professor regurgitate dry, yeastless factuality. The Pythagorean theorem stuck in my head because we used it to measure earth's radius. And with that information, I was able to measure its circumference. I knew how long I would have to drive non-stop to go around the world. How cool is that for a kid? You'd never have to study for it before the test.

Tell stories students can relate to and your tests will be a more accurate measure of knowledge.

Great stories don't rely on spoilers



Not too long ago, I was watching Jurassic Park on TV. The one that came out in 1993. To this day it is a fascinating movie. It was just as impressive to watch when I was 6 years old. What if you have never heard of the movie and I tell you the story line. Would you stop me and ask me not to reveal any spoiler? Chances are you've already seen the movie and, well, you know that there are no spoilers.

The story can be told, and it is still a fascinating movie to watch. Can't say the same thing about all movies, not even the latest Jurassic World.

When a story only relies on a punch line, it becomes the joke that we heard one too many times. A good story is one that you can immerse yourself into. One you can relate too. Even if it is a fictional one about dinosaurs, our minds can wonder and explore.

Memory intensive Software and Expensive Hardware



When I started programming, I used a defective Power Book G4 to build websites. I would launch BBEdit, and fly through the HTML and CSS. I ran MAMP in the background to interpret the PHP parts of the script. For less than a $100 in investment, I was able to make a living.

Today, the beginning programmers starting their career are encouraged to get a hefty MacBook Pro. This sets them back between $1,299 &ndash $1,999. Even though websites still use HTML, CSS, and JavaScript, the tools to develop them have changed. Creating a new website means creating a new docker image with yarn, npm and jetpack. Good luck trying to install all those in one run.

If this was my barrier of entry, I'd stay in school and become an electrical engineer and make my family proud. But in 2020, if a new programmer got an under $200 computer, could they even program?

The short answer is no. The tools people use to create websites require a lot of processing power and RAM to be usable. Try running docker on a cheap machine, or even npm install. The code will freeze for a good moment before you can get anything done. You won't be running npm, jetpack, yarn and whatever it is they teach in programming boot camp. In the Olden days of 2009, MAMP was enough to run a website on my 512MB RAM machine.

There are more tutorials than ever on the web, lowering the bar of entry for programmers. But the bar has been raised when it comes to hardware and tooling. I find myself lucky. There is no room for a poor person to learn programming any longer.

We never see it coming



When your job becomes obsolete, you don't see it coming. The last time I saw a horse was close to 6 years ago. Two police officers were saddled on their horses while children admired the majestic animals in the parade. These horses were a showcase, not a mean of transportation.

When the car was invented, people weren't worried that their horses will no longer be needed. They didn't even connect the dots until the stable was transformed into a gas station. The horse went from being the de facto mean of transportation, to a luxury animal enjoyed by the very rich. Or a novelty in a parade.

The paperboy was not replaced by a bigger and faster automated android boy. The change first came when wages stagnated and grown-ups were forced to take those jobs. Labor laws also killed the tradition of underage kids delivering paper. Now these grown-ups have seen their paper route taken away by the ruthless robot that threatens to take all jobs away. The Email.

Today, J. Crew, a giant in retail with 450 stores in the U.S., has filed for bankruptcy. A great number of people will lose their jobs. But where is the faster horse replacing brick and mortar stores? It's right there on your phone. In your inbox. You order your clothe online, and you get a nice email to confirm your order.

A friend of mine worked in medical billing. She went to business school, and got a certificate in medical billing. She got a stable job in her field until one morning they added a new software to their stack. It collected bills from all agents, and sent a nicely formatted email at the end of the job. She lost her job.

The jobs that disappear are not the easy and repetitive one. For one thing, a pandemic has showed us that the a grocery bagger is more essential than a parking enforcement officer. The jobs that become obsolete are the ones you went to school for. The one you once thought was your calling. It's the one that feels important.

It's time to decouple ourselves from our jobs. The years to come will call us to be more flexible in our careers.