Recently I’ve analyzed – when actually I started my adventure with programming languages and how was it going through my life – interesting insights there.
13-15 years old (1999 – 2001) – C++
At that time actually my adventure starts – of course till that time I already loved computers – mainly through playing games 😉 I was lucky enough, as one of my friend’s further organized lessons for four of us – lessons of programming in C++. Programming is the future he claimed – and he was actually right!
I remember mainly that time as rewrite what books says, and enjoy the fact actually computer says what we tell him!
When I finished training, I’ve started to play by myself (no access to internet yet!). Unfortunately, I’ve got at some point book about Borland C++, and it was too much for myself at that time – I started to hate programming (through experience with Borland C++).
16-18 years old (2002 – 2004) – Pascal
This is the time of my high-school – and again I was quite lucky. Besides of my unlucky experiences, my class profile was focused on math and computer science. That was lovely time spent with Pascal – and my first algorithms, simple games, and finally exam from computer science which as I realized was more about math than programming at all 😉
After this time I already knew, that I like programming – but still I’ve didn’t consider is as main stream for my university faculty – I was planning to go into telecommunication one (that would be huge mistake – I realized I don’t really like it that much!).
19-20 years old (2005 – 2006) – C++/Java
This is my first approach to higher education – I’ve started Applied Computer Science (because I had too small amount of points to get into telecommunication, I was first on the backup list! – lucky me …) – which wasn’t focused around just computer science – but about applying it in Material Engineering domain. Besides of interesting domain, I went up deeply into C++ (later starting to play with Java). It was the time for me when I learn about the beauty of Object Oriented Programming – and how modeling of the real world can be brought closer to code – instead of procedural world well-known from Pascal!
Besides of that – it was the time when I developed my first ‘serious’ program – I was dreaming about such homework all the time! It was my first RPG game (of course through console) and I really enjoyed it – I think I have sources somewhere, wondering what I would say now …
21-22 years old (2007 – 2008) – Java/Ruby
I decided that I love computer science – and I moved to different faculty, which was purely focused on Computer Science – and which was filled by one of the best guys in Poland – that was right decision. I quickly learn that Java is a king – and through those years I’ve programmed in more than 10 programming languages (I still remember Lisp, VHDL and OCaml adventures!).
That was the time of more serious programming, first distributed systems, doing C programming on low-level, and more. But I really started to love Java and I was thinking it’s the choice for a years …
Besides of Java – 2009, natural language processing lessons taught me how beautiful code can be, and how nicely code can look like – that was the time when I learn about Ruby, Pragmatic Programmer and all good stuff coming from guys around Ruby 🙂 Ruby was staying as my second language for a long time, even in professional career – at some point finally replaced by JS + Node.JS.
23-24 years old (2009 – 2010) – C# (Apriso)
That was really interesting. On my 3rd year of studies, I’ve decided to find a job. I was really looking for Java one, but very nice one found me – and it was in C#! I remember the talk with the guy – we were talking about passion about software engineering, some challenges languages put on developers, and on the end I’ve realized I’ve got job offer.
The domain (automation of manufacturing – Apriso) was so interesting, that I’ve decided to learn quickly C# – it didn’t look that different from Java, and I was already learning other languages in couple of days. With .net 3.5 coming – I really started to love C# – the solutions like LINQ, lambda all that we’ve just got in Java recently – that was really nice time for me and my C# code 🙂
25-27 years old (2011-2013) – C# (EPAM)
Those were first years in my actual employer projects (UBS) – and it was full of C# and PL/SQL programming. Through that time I’ve started to write more and more code by myself, trying to deeper my .net/C# knowledge – I was really knowing much about it.
I’ve created at that time my first open source project (the most successful) – NDatabase. I always was fun of Object Oriented Programming – and I really wanted to know how Object Oriented Databases works – so I’ve created such – it was one of the best experiences!
But as it happen, I couldn’t find more challenging stuff for me in C#, and I didn’t like the ecosystem of pay for everything (Visual Studio, Windows, etc), mono wasn’t that popular at that time (or at least I thought like that). I’ve started to write more and more Java code – and that was the time when I decided it’s time for a change.
28-29 years old (2014-2015) – Java (EPAM)
That was gold time of my engineering skills, I’ve learned (back) Java and started to gain more and more knowledge on JVM ecosystem. That is the time of when I already knew Clean Code and other good books quite well – so I was really quickly getting required experience and know how on Java world. And again it happen – I’ve started to be bored by just doing Java (and Ruby as helper tool 😉
This is the time when I’ve started to find ideal language, ideal language for my potential startup or just pet projects, and I was going from Java, to Scala, from Scala to Node.JS, and again back to Java, again to Scala and you now how further it was going.
The interesting things happen – I liked Scala, but had a problem with verbosity and legacy of the language, when I’ve tried to go with Scala – I’ve always struggled with the language syntax for more complex projects (Open Bank Project as example) – and I was always scared about how many things I had to download when I was doing simple Play project (maven dependencies).
The Node.JS was the answer, but again many pitfalls were waiting there. Initially when platform started to gain momentum, I couldn’t imagine how big project could be created with it – didn’t know how to deal well with asynchronous programming and lack of types – especially with projects with bigger scale. One one side I knew how to deal with it with Ruby – but I already knew how productive I could be with Java vs Ruby in bigger projects (maybe it’s just me).
I was playing long between those 3, and then I think I’ve found the better answer on Node.JS problems – which would allow myself to keep it for a longer time.
30 years old (2016) – TypeScript (UBS)
I’ve heard about this language before, when I was busy with .net stuff – but I’ve never treated it seriously. Some language attempting to be better JS? Yep, I already knew Dart and CoffeeScript, and the second was preferred way for me. I even started to go into more Babel ES6 – so why would I even think about TypeScript?
Then recently some facts came to my attention – Angular team chosen TypeScript? Google collaborating with Microsoft? Wait a moment, I know both companies quite well – and if it happen it means I should really look at typescript and know the reasons!
I’m still new here, learning quickly, but for now I think I will stay with Java (Spring Boot & Netflix OSS is really great!) and TypeScript – trying to do more and more things in TypeScripts and Node.JS (5?) to finds the limits of it, or maybe to just harden my thoughts that it’s really great platform and programming language, which can be our next de facto standard for web development for long years!
It was actually interesting retrospective of my adventures with different programming languages. I’ve realized it’s already 17 years from when I wrote my first line of code! And it wasn’t Logo 😉 A bit of shame that GitHub wasn’t there, would be really interesting to do code review of all my code …