Timeless programming: learn not a language, learn the principles
Sandro MaglioneGet in touch with me
15 November 2023•
3 min read
“Look mum, I made an app that sums numbers!”
This was the spark that started my journey into programming. It was in 2012. I had just built my first android app using Eclipse and launched it on my smartphone. It blew my mind. Write (copy and paste) 20 lines of code and a machine executes everything that you tell it. God-like power!
Since then my goal has always been to explore new technologies. I moved to the Web, Raspberry Pi, Arduino, Games.
Notice here: I did not mention what programming languages I used. It does not matter. Not at all.
What pushed my curiosity has always been how to achieve the result I wanted. I want an app, I want a website, I want a robot, I want my own game. The programming language is an afterthought, just the means to an end.
I carried this idea over the years. I call it Timeless Programming™.
Languages (not just programming languages) are a game of patterns.
I know 3 languages (Italian, English, Japanese) and countless programming languages. While symbols are different, patterns are the same.
I can say “Hello World” in English or “Ciao Mondo” in Italian. Different symbols, same meaning.
The same is even more true for programming. print(”Hello World”), console.log(”Hello World”), System.out.println(”Hello World”).
What matters is what I aim to achieve. The end result, not the means to get it.
How do you apply this idea?
Ask yourself: what are the principles? What matters regardless of the language? I’ll give you some ideas:
- Data Structures
- Architectural Models
These are everywhere. Get these right, and everything else falls into place on its own.
Granted, the practice then requires the programming language. We are writing code after all, we cannot escape knowing the language.
Nonetheless, knowing the principles will carry you way far ahead in your career than knowing a single language.
Other principles are specific to your profession. Frontend, backend, cloud, IoT. All have their quirks and fundamentals.
- When building mobile apps I must take care of permissions, OS versions, notifications.
- When building for web the focus is on bundle size, performance, responsiveness.
These aspects will be there. You’ll have to deal with them. They are the foundation. As such, knowing them may be more valuable than writing code, especially in the long-term.
Want a concrete example?
When I started coding (2012) the leading language was Java. Should I have gone all in on Java? Hell no!
The languages that I use the most today are Typescript and Dart. Typescript first appeared on 1 October 2012, Dart on October 10, 2011. Basically unknown at the time.
Speaking about frameworks?
- React: May 29, 2013
- NextJs: October 25, 2016
- Flutter: May 12, 2017
- Remix: November 22, 2021
What about principles?
- Reactive programming: 1970s
- Functional programming: 1950s
- Data structures: Forever