The biggest decision in your life



Do you want to be a doctor, a lawyer, or a programmer? You have to answer this question now and live with the consequences for the rest of your life.

One thing that we fail to admit, is that an 18-year-old is too young. He can't to understand the consequences of this decision. Most students are courting student debts, when they are just coming out of middle school. We won't let a 14-year-old go out on her own, but we are OK with making her take massive decisions and putting herself into debt.

You can't blame the parents either. If your parents never went to college, why are they expected to understand the massive undertaking college is?

At some point we ask ourselves: Should we go to college? Now that I am over 30, I can say with confidence that I don't regret dropping out of college. I've avoided massive debt. Many of my colleagues regret their computer science degree. It's not the degree is not useful, it sure is, for someone who wants to work as an academic.

When we make the decision to go to college, we usually want to please our parents, or follow what the crowd is doing. But we rarely consider it as an investment. College is an investment and should be treated as such. You wouldn't put your money in a company going bankrupt, would you? Then you shouldn't invest in an education that doesn't have a clear return on your investment.

When the degree degrades



When they learned programming using punch cards, students didn't think their skill will go obsolete. Punch cards are the punch line of jokes today. But they were the bleeding edge of technology at some point.

Not only that the method has gone obsolete, the modern computer paradigm makes that sort of programming meaningless. I experienced this when my then employer interviewed a candidate who had worked in the 70s at IBM. He was a computer science graduate with a top GPA and a minor in electronic engineering. He was so knowledgeable. He even knew the meaning of the color of each cable on the motherboard. The only problem was, he was interviewing for a front-end position.

Front-end work still involves programming, but it's a different sort of programming. He got the job, he worked for a couple of months, then he left. It was hard to map the knowledge from one domain into another, even if related.

A friend of mine who had a degree in medical billing and coding, found herself obsolete at her job. After working for three years at a startup, the company grew and they purchased new medical billing software. In a month, they trained the entire staff, and there was nothing left for her to do. All the work was automated and it didn't take long for her employer to kick her out of the company. It was as if her four years degree was no longer worth the money.

The prestigious degree of one generation, becomes irrelevant in the next.

Don't ever work for someone if you want to be rich



The web is filled with motivational speakers who urge you not to work for someone else. The only way to achieve true wealth is to get out there and make a name for yourself. You have to have hunger, and hustle until you make something you can be proud off. Usually these people will throw in a few names like Bill Gates, Steve Jobs, Warren Buffet, and a few other names we are familiar with.

These names are supposed to exemplify people who followed nontraditional paths and became wealthy. It is true, if you put your self out there, you might just strike fortune just like those famous names. But, for every Bill Gates, there is Steve Ballmer, Satya Nadella. For every Steve Jobs, there is a Tim Cook. There is a Sundar Pichai, a Lisa Su and many more name of successful people. What these people have in common is that they are not company founders. They are employees. Yet, they hold the same prestigious titles.

There isn't one path to riches. Starting your own thing will most likely result in failure. It's not necessarily a bad thing, but it is something we dismissed. It could turn into years of struggle, and failure, and most likely, never becoming rich.

Instead, think of your time as investment. How much time does it take to achieve a certain financial success through self employment versus a regular job. If financial success is the goal, the shortest time is always better option. Remember, a job can be less stressful than starting your own company. And it can pay just as well. See the names of people I listed above, they chose the career path.

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.