That’s how I learned programming and French, at least. Both are considered difficult and complex skills to learn.
I spent four years learning French grammar, syntax and rules. Yet, I couldn’t speak to someone a complete sentence in French after all that hard work.
It’s the same with programming. I did a four-year degree in software engineering. Yet, after graduation, if you asked me to make a simple website, I couldn’t.
So, what helped me master these two complex skills?
Going into it
For both French and programming, I intentionally got into an environment where I had no choice but to speak French and write code daily.
The story behind zero-to-fluency in French
In 2020, I got lucky and found a Belgian roommate to live with. We initially spoke in English. But after I showed my interest in learning to speak French, he suggested we communicate in French at home.
Living with someone while speaking French daily for two years was a good start. I forgot I was learning! But around 2021, I also had to find a job. I just graduated. For that, I thought getting a programming job alone would not have been challenging enough for me.
So, in my ideal job checklist, I wanted a team that spoke primarily in French but wrote code in English. That would guarantee I do work in my best language while, at the same time, I could learn a new language.
A year and a half into the job, I finally became comfortable with spoken French! For the last two and a half years, I have been waking up every morning and having meetings in French first thing in the morning.
The story behind becoming junior-to-pro programmer
This one, you probably can guess. I took a job that forced me to write code every day. That is one of the best recipes for learning anything. Take a job where you need to do the skill you want to learn.
But right before getting a job, I had already gotten my hand around programming. How?
I paid for an online course that helped me make coding projects. I did the dumbest thing possible! I copied exactly as the instructor in the video did.
Surprisingly, even that was difficult when it came to programming. I got stuck in many places. While following the course line, I had to solve minor problems specific to my computer environment.
I learned more programming in those two months of project creation than from the four years of programming courses at university.
Swim in the flow once you catch the stream
Once you have put yourself in an environment for the specific goal you have in mind, the next step is simple: Keep Swimming! Do not stop.
It is not enough to float. You also need to go somewhere. Take what your environment is presenting you. Grab the opportunities it provides so that you can reach new destinations.
In my case, I did not say ‘no’ to my Belgian friend when he proposed conversing with him in French while at home. Nor did I doubt when someone on YouTube was selling me their course.
I opened doors of opportunity for me by giving others a chance!
Keep Pushing and Get Incrementally Better
Lots of people learn something new and leave it there. I am a lazy person. I am not overzealous about learning anything. All I do is to make sure I keep growing incrementally, one step.
My software team’s most senior developer is 10x better than every other developer. I was lucky to be on his team. But unlike others, I didn’t just watch him solve problems or use him as a clutch to finish my task; I tried to learn how he solved problems.
Due to my incremental growth approach, I outgrew many team members who had come before me and many who had more years of professional programming experience than me!
Don’t Think About It Too Much
When I was learning French at school, I thought a lot about it. I wondered how French people would say specific sentences and what would be a more French way of saying things vs English.
I would do the same thing as a junior developer. I would overthink solutions. Tried to make every line of code as short and perfect as possible.
If you’re doing that, you’re not in the flow yet. Once you do enough of an activity, you have reached flow when you don’t think about it.
I have a programming problem I couldn’t spend all day today. In my early years, I would keep thinking about it after work. Now, I don’t. I know I can wake up tomorrow and suddenly find a solution that was right there, but I didn’t see it yesterday.
Just like a computer needs a reboot to refresh its computer memory, so does the human brain need a restart by sleeping through the night. Your brain gets tired of processing life throughout the day.
The most amazing thing about being in flow is having a sense of power over your craft. You don’t think about it because you know overthinking will not help you. You know you will get better just by doing what you must do. All you need to ensure is that you keep improving incrementally over time.