My programming journey started all the way back in 1997. It’s been over 25 years since. The first programs I made were all on Windows 95 and Windows 98. Keep in mind that at the time I was 12 years old. An age that many kids in the era started programming at. My first programming language was Logo inside MicroWorlds from LCSI that I got from my parents as a present.
When I exceeded the capabilities of Logo and the small MicroWorlds environment, I went on to Visual Basic. For a very simple reason: it was available to me and it was easily available inside Microsoft Office as a playground. Visual Basic 6 was the first real programming language that I got in contact with.
Early web development
Since the Internet was the latest an greatest in the late 90s, web development was something everyone wanted to learn. I got myself a copy of Sierra Web Artist early on to build my own website. Although I had done some HTML 3, really HTML 4 was the first time I was able to build more complex web pages. I also learned CSS early when a guy at a LAN party (it was a thing back then) got me into it. JavaScript always had me excited. Not so much as a language, but mostly because of the possibilities it offered for web pages.
Like many people of my age, I spend a good amount of time in my life making my JavaScript code work in both Internet Explorer 4 and Netscape Navigator 4. My personal preference was always the Navigator and maybe that’s also why I stick to Firefox. Firstly because Firefox is, in my opinion, the best browser there is and secondly it reminds me of Netscape Navigator every day.
Server-side in ASP and PHP
The first serious programming language you start with tends to stick for quite a while. When I began programming, everything was new and unknown. The comfort of at least knowing a single programming language like Visual Basic gave some comfort. That’s why my first server-side code in web development was in VB6 with Microsoft ASP on IIS. Since that was an expensive technology back in the day, I challenged myself to learn PHP.
Not just because of web development, but also because I got myself into SUSE Linux 7.2 and enjoyed it a lot. Around 2001 was the time when I got deep into Linux. So much that SUSE became my daily driver. PHP as a language was fairly straightforward to learn when you came from the Visual Basic world. Although the second language is not as hard as the first, since you know the data types and basics of programming, it comes with a steep learning curve. Especially when you’re just 17 years old.
You might wonder: didn’t I mention JavaScript before? Do not forget that JavaScript in the early days was extremely limited, painfully slow and only worked in the browsers. It was a mere scripting language to make websites a little more interactive or fancy. Nothing I’d consider a serious programming language back in the day.
Education got me into C, C++ and C#
I started my first job at the age of 17 in the form of a professional education through the dual education system here in Germany. That was in 2002 and two major things happened: Microsoft released the .NET framework and somewhat recommended to migrate from Visual Basic to C#. Secondly, the curriculum of my professional education included C and C++. Not the modern C, but the classic C without any string libraries and other helpful things that C and C++ have today.
There was no way for me to get around that learning curve. It was steep and trust me, I hated C and C++ in the beginning. The .NET framework, C#, C and C++ made me feel like I had absolutely no idea of programming. I felt like a total idiot during my first baby steps with it. However, if you’re as young as I was, you don’t question yourself as much as you do when you’re older. That helped me a lot. I just jumped into C#, C and C++. I wrote lousy C code and got away with it.
The thing that made me really enjoy C was Linux. Using C on Windows feels somewhat useless since C# is very often a better choice. On Linux however, C and C++ have their home game. To be able to properly apply C and C++ for any problem took me more than 5 years of learning and applying the language.
After C, everything is the same
When I became somewhat fluent in C, everything started to look the same. Mainly because all the things were written in C or C++. PHP itself is written in C. The majority of Windows and Linux system libraries are also written in C. The .NET framework is written in C. Everything is C.
After C, I was able to learn a ton of programming languages very quickly. I learned ActionScript for Flash, AppleScript for the Mac and some Delphi when I had to maintain a Delphi project. I learned WML and WMLScript when WAP was the hot thing around on the Nokia 7110.
Learning Objective C with the arrival of the first Xcode versions was the first language that really felt hard at the time of learning. Honestly, I never became friends with Objective C. A language I do not prefer to this date. I was super excited when Apple released Swift and SwiftUI. I never understood the Storyboard approach to UI development.
My personal top 10 languages today are: Swift, Go, C, JavaScript, C++, CMake, SQL, Java, C# and Scratch. Scratch pretty much because it is awesome for kids to learn programming.
How I learned programming languages
In my early days of programming a lot of learning included trial and error. In hindsight, way too much trial and error. Two things that never worked for me: jumping head first like learning as you go and starting off with the theory and just reading books. I was and am a self learner. The best practices for me personally is a combination of practical application and theory. I always learn with books and I love books. Books give you a structured approach to learning, but they cannot replace practical application.
Even though I learned Go in a mere 2–3 days, I got myself two books about the language. They helped me understand concurrency and the basic principles and design decision of the language. For JavaScript, to this date, I did not use a single book, but mostly reference manuals online and website tutorials. But that’s because JavaScript and I grew up together.
For a self learner like me, getting your hands dirty and following books is the fastest way to a language. It is important to emphasize that the process of learning depends on the experience as a software engineer.
Knowledge that is helpful with programming
A programming language is simply a tool to build applications for computers and their operating systems. Knowing computer architecture, how a computer works under the hood, how networking works (mainly TCP/IP, IPv4, IPv6, HTTP) and being able to trace your HTTP request with Wireshark on a packet level will help you understand what you are actually doing.
Being able to read documentation and reference manuals helps a lot. I wrote software for Linux, Windows, BSD, Macintosh System 6–9, macOS, Pocket PC, Windows Mobile, PalmOS, iOS, iPadOS, tvOS, watchOS, Android, Tizen TV, OpenWRT, Arduino, ARM Mbed and whatnot. Knowing how operating systems work under the hood, helps you understand their paradigms and what your code actually does.
Writing a system daemon with networking in C, Rust or Go on Linux will help you understand a lot about computers and networking. To me, that knowledge has proven to be the most useful I ever learned. The reason is simple: almost everything is networking on Linux or BSD today. Your iPhone is, your Samsung TV is and your network router is.
SQL is a rabbit hole on its own
SQL is a completely different story. Just because you know how to write nested SELECT statements does not mean you know SQL. I’ve been through MySQL, which I like a lot, Microsoft’s T-SQL and PL/SQL. I wrote thousands of lines of code for stored procedures, functions, triggers and views on MySQL, MSSQL, Oracle and a ton of other database management systems.
Learning to apply SQL is not just about SQL as a query language. It is about properly designing and using relational database management systems. The paradigm of applications outside the system not being allowed to directly manipulate tables, the design patterns for stored procedures, function and triggers to isolate the underlying tables from the outside world and many other concepts that don’t really have much to do with SQL as a language in itself. Learning SQL is more about learning relational databases than the language that is SQL.
You had to be fluent and confident in SQL 10 to 20 years ago, if you wanted a well paying job as a sofware engineer. With the rise of many alternatives, that may not be the case anymore. However, I have seen a good number of people having a great career only focusing a relational databases and SQL.
Languages I haven’t used in over 10 years
When you learn that many languages, there is a time when you forget about some and that is perfectly fine. Here’s a list of programming languages I have not used in over 10 years: Objective C, Visual Basic, Delphi, Perl, ActionScript†, Logo, OpenScript†, WMLScript†.
These languages just vanish over time or you no longer have the need for them. When I encountered Delphi after 10 years of not writing it, I was able to remember many aspects of it, but honestly it felt like I had to learn it all over again. Things like WMLScript and ActionScript are gone for good, I forgot everything about them. If I see WMLScript, I remember it, but couldn’t write it anymore without reference material and books at hand (the good old Nokia WAP programming book).
Development environments that I no longer use
My daily drivers are VSCode, Xcode and vim. I love Xcode a lot, it just feels like the way I want to program. VSCode is just pure magic for a polyglot programmer since I have a comfortable world for much of the programming I need and want to do. There are IDEs that I no longer use, but spent a lot of my lifetime in.
- Microsoft Visual Studio 6
- Microsoft Visual C++
- Borland C++ Builder 5
- Borland C++ 2.0
- Borland Delphi
- ThinkC and MPW
- CodeWarrior
- Dreamweaver UltraDev
These IDEs were fun and I spend a lot of time with them. However, when new programming languages and runtimes arise, new tools pop up. There’s a time for each of them and there’s a time when you know you need to move on. With the arrival of Mac OSX, all the System 9 tools were essentially dead overnight. Don’t fall in love with these IDEs, you’ll never know how long they’ll survive. But, learning the basics of vim is never wrong.
30 languages you say, huh?
The title claims I have learned 30 languages and by learning I mean I wrote a reasonable amount of code in them. I wrote the code, released and deployed the applications. Here’s the complete list of these languages in alphabetical order: ActionScript, Arduino, Assembly, Bash, C, C#, C++, CMake, COBOL, ColdFusion, Dart, Delphi, Go, Java, JavaScript, Logo, Objective-C, OpenScript, Perl, PHP, PL/SQL, PowerShell, Scratch, SQL, Swift, T-SQL, TypeScript, Visual Basic .NET, Visual Basic Classic and WMLScript.
There are probably some languages I forgot about. Many small scripting languages that I learned, applied for a few weeks and then forgot about. So it could be more than 30. The number doesn’t really matter.
Psychological factors in programming
A large part of the life of a programmer is to feel stupid. Mistakes and errors are a daily experience of every programmer or software engineer out there. The world of computing is so vast, you cannot know everything. In the mid-1980s computers were still relatively simple. Yet, even in that period it was impossible to know everything from chip design to application user interface design. It’s simply impossible for the human brain to store all that information. Don’t be too hard on yourself.
You need to have fun with computers
I can highly recommend the book “Just For Fun” which is the biography of Linus Torvalds. Besides the story on how he build Linux, it also includes a lot of his personal experiences in life. Understanding what Linus went through helps you a lot in understanding that you’re not alone and we all went through the ups and downs of programming.
Linus belongs to the top software engineers and programmers our world currently has. It is definitely worth following him and learning from him. He wrote the most popular and dominant operating system of our time and is still in charge of maintaining it. Someone you want to look up to.
Program what you love most
When you dwindle around the different programming languages, you will find niches you are most excited about. For me that is anything mobile. I love mobile apps, mobile websites and computing you can carry in your pocket. I loved programming for Pocket PC, for Android and I absolutely love writing for the Apple ecosystem.
Writing mobile web apps that are tailored to smartphones is something I absolutely enjoy. But that might not be the case with you. Everyone has different interests and different things that gets one excited. My personal recommendation would be to follow your excitement. That way, even in the brutal periods of programming, you will still enjoy it.
Don’t be fooled, go easy on yourself
Programming languages are over a 100 years old and the assembly language will have its 100th birthday in 2049. There is a lot that evolved in computing over the decades after Konrad Zuse invented the Zuse Z1 in 1938. You don’t need to be able to reproduce the Zuse Z1 or Windows or Linux. It is certainly helpful to understand the basics, but you don’t need to become a master of everything and you cannot. Your brain cannot.
I was very hard on myself and though I needed to learn the hottest new thing. I was brutally hard on myself to learn ActionScript in order to be able to build Flash applications. Something I never enjoyed. I enjoyed working with Dreamweaverf and Fireworks back in the day as much as I enjoy working with VSCode, XCode, vim, Photoshop and Illustrator today.
Learn what you love to do and don’t be too hard on yourself. Organise your learning, don’t jump head first into it. Get some really good material for learning. There are great books and video courses. I wish I had all these video courses back in the day. I really love enjoying a programming course on the TV while hanging out on the sofa.
Programming should be fun and if it’s not fun for you, engage with it from a different angle. Try a different field (e.g. system applications instead of web apps) or a different problem solving challenge (e.g. technical challenges instead of algorithmic challenges). I personally always love to solve technical challenges more than solving algorithmic challenges. Example being the programming of a network protocol instead of a indexing algorithm. Not all programmers are the same and everyone has a different taste.
Program what you love to program. Learn what you’d love to do.
Thank you for reading. Jan
Credit to the Original Article | Explore More of Their Work If You Found This Article Enjoyable.
https://news.google.com/rss/articles/CBMicWh0dHBzOi8vbWVkaXVtLmNvbS9AamFua2FtbWVyYXRoL2ktbGVhcm5lZC0zMC1wcm9ncmFtbWluZy1sYW5ndWFnZXMtaW4tMjUteWVhcnMtaGVyZXMtd2hhdC10by1leHBlY3QtMDhjZTJhYzlkODBi0gEA?oc=5&hl=en-US&gl=US&ceid=US:en



