My quest for a second language

My quest for a second language

Programming has been an essential part of my professional life. Although I have been in leadership and architect roles for which it was not necessary to write code, I always kept my pride for craftsmanship. Today more than ever, I am convinced: Even if you are leading others, you should not lose the connection to the foundation for your business. A software engineering manager who is not interested in the software itself is lame and can only stay in charge of politics. I have a very strong opinion on company politicians and I do not want to go into details.

Like every programmer, I love to tell anecdotes about how I started programming (which would be Commodore BASIC 2.0 on a Commodore VIC-20). Like many other engineers of my generation, I learned Pascal before I dug deeper into languages closer to the machine level. Backed with outstanding teachers from my university(Today, I cannot stress enough how much I benefited from my initial software engineering lectures at the University of Applied Sciences Hagenberg), I jumped into C, C++, and finally also Java before I finished my studies in the year 2000.

While I was studying, I was not yet able to grasp the potential of all languages, and I enjoyed a somewhat excessive student life. My real love for programming languages came later when I had my first job as an engineer. I learned that it is better to love what you are doing than just doing it to make money.

There was one remarkable moment in my transition to "codephilist." I was coding C++ in Linz to build up a mobile platform. Up to that point, I was working as a programmer because I was aware that a long-haired coder who did not much care what clothes he was wearing is not readily accepted in other roles. However, I loved this freedom(and my long hair) and I was not keen on any job back then where I had to talk with people all the time. So I was okay with coding to earn money.

One day, I hear someone laughing outside my office. It was a strange kind of laughing and it seemed not to be related to anything. I stepped out of my office and I saw one of my colleagues who was the archetype of a nerd who simply stood in a hallway and laughed. People standing alone and laughing is seen as a sign of lunacy, so I asked why he was so happy. He just told me that he was so excited because he was able to find a distinctive trick to reduce three lines of code in a makefile. Back then, I secretly made jokes about him. How can anyone happiness be founded on being happy about such a thing? I was still in my twenties. Back then, I would have been pleased if the hot female tester that every software engineer secretly admired passed by, but not because of shortening a makefile.

However, he and many others inspired me to dig deeper into programming, and suddenly, I was not programming to make money, but rather because I liked it. I started voluntarily to optimize code and to reject the wrong solution for a problem. I had to learn the hard way that you should not refactor a solution that is already working to make it better. But I was hooked on maximizing the quality output of my code, and if Lint told me I still could change something to make it better, I did it as soon there was the slightest justification. And if I was wondering back then about a guy who is happy to reduce the lines of code in a makefile back then, you should see me know, when I realized that I could shorten Python code with version 3.8 by using a new feature called assignment expressions.

I became a proud C++ programmer, and with time, my peers acknowledged me for my coding skills. Like many other coders, I became boastful until I met people with more experience who mastered some details. But the pride of being a C++ programmer was the first step towards my "codephility."

I switched to a Microsoft focus in 2005 when my C++ project had ended. C# seemed to be the next logical step, and for years, I loved to explore all options this language offered to me. It looked just natural to go deeper into the .NET framework in general; I was able to create all kinds of solutions faster than with C++ by using the ASP.NET, WPF, WCF, and the many frameworks offered by Microsoft.

From 2005 to 2010, I was the leader of a software engineering department to provide services to clients. The projects were quite different. One day it was dealing with MS SQL Server problems; other days, it was ASP.NET programming. I had an exposure to Microsoft BI and Azure in the early stages. Besides, I was an early advocate of the Microsoft Team Foundation Server. I became a good allrounder. My core skillset was: I got business requirements, and I was able to come up with the technologies to implement them.

Around 2010, I considered the first time to become fully self-employed, but I had to learn a lesson first. When I started to program in .NET, universities just had begun to embrace that technology. But in 2010, there had been tons of C# developers.

I had become an allrounder in 2010, but another important in my career is when I worked more closely with excellent product engineers. It was a bitter truth for me to see that after 10 years of software engineering that some people simply had a far more profound understanding of the details, as they took more time to learn details.

There was a big issue for my self-employment plans. Companies looked for experts, not for an allrounder. All my certifications could not hide that I was not specialized enough to justify high rates at that point. Yes, I was, on average, maybe a better programmer than a person who just had two years of job experience, but would that justify a significantly higher rate? And how long would it take someone younger, fresh from the university, to catch up with me? I realized many potentials clients pick less experienced developers over seasoned veterans for a lower rate. The only way that a company is okay to pay more if they are afraid that the cheaper resource cannot deliver.

With that realization, I transitioned from software engineering to scalable software, because I was sure that with all the intricate details, there is less competition. Also, I believed that most people would pick UI programming over the backend, and so this would also mean less competition.

Starting in 2011, I learned how to scale data platforms. At that point, I was not so much interested in language details instead of on platforms. So in other words, the main languages of that time I was dealing with were C# and Java, but the question in the architectures was instead if it made sense to use Cassandra or a relational database. 2011 was also a time where I transitioned from a person who preferred to seclude himself from others to someone who was okay to spend time with other engineers.

I was determined to stay open-minded. I realized that many platform topics are on Linux and not on Microsoft, and I started to explore Linux. With that came another aspect which might have influenced my later decision for a new primary programming language: The love for aesthetic design and simplicity. During my life, I have developed a respect for literature, and with that, I learned that words could be harmonious and beautiful. Compare French and German: There is nothing which you would not be able to explain in German, but most language-lovers confirm that for the majority of people, French has a better sound and is all in all more harmonious as poetry influenced its development and not bureaucracy (for those who speak German, there is a book on that Stilfibel). I learned that Unix was designed to be aesthetic. Ken Thompson and Dennis Ritchie did not just name their core functions; they invested a reasonable amount of time in giving the key commands short but meaningful names. This was the reason why I compared Windows and Linux at some point with German and French. Although Windows-based platforms do their jobs right, on the command line, many commands miss the elegance of their Unix counterpart.

For some years, programming became less critical. By the time I jumped into the classical Big Data Stack of the mid-10s (which can for me had summed up with the Hadoop ecosystem, Spark, Kafka), the consensus was that it was much about getting these technologies in place and for many companies, it was a question of strategy. I was facing a lot of PoC, where it was more important to show what Big Data can do instead of putting it into production. I learned about R, and I learned to apply it, but at the same time, for me, R was always analytical and less an engineering language.

In my journey with Big Data, starting with the second half of the 10s, many enterprises in the CEE region gradually realized that Big Data is a valid option in their companies, and now as the orientation phase was over, the question was how to put things into production.

As a data engineer, I had to choose between four languages: Scala, Java, Python, or R. I soon excluded R because of the above reasons. Also, the support for that R seemed to the weakest in Data Engineering frameworks I was working (e.g., Apache Spark) with or was not offered at all (e.g., Apache Flink).

The most logical choice for the primary programming language would have been Java (more conservative) or Scala (more progressive) as all the mentioned frameworks are programmed in that languages. But through various projects, I discovered my love for Python. And I consider myself a Pythonista. Up to the current version 3.8.2, I always studied the language updates and tried to employ them as soon as possible, and I took much time to study also the internals of that language.

I still consider Python as my primary language. This is the language; I can use to create a complex solution without the need to research internals. I would be able to write Java or Scala applications too.

But being focussed on just one language is a mistake. There are many projects out there that require different languages. So, I am going to look for a second primary language. After questioning many people, I concluded; I have the following 7 candidates that would fit most to a data engineering capability

  • Go
  • Scala
  • Java
  • Kotlin
  • Julia
  • Rust
  • C

In a second article that I intend to write in one month or so, I outline why I chose these languages as candidates and for which language I decided in the end to become my second main language.

Great Job. I think you should learn C just for bragging rights ! :D Then go for any other on that list as your actual second language.

Like
Reply

I love the ML style data types in Rust. They are quite different to what I'm used to from OO languages which I find quite boring after so many years working with them. Rust is quite a challenge to learn, but I think it's also rewarding. I also found Elm refreshing because of its uncompromising functional style. I finally learned why currying is actually a useful and elegant feature :D. I'm not sure yet if I will use Elm more in the future for real projects or if I'll rather tend using Rust with WASM. I'm still experimenting. I always found the option to use the same language on the client and on the server appealing. Curious where you'll go. Cheers!

To view or add a comment, sign in

More articles by Stefan Papp

  • Startup Nation Armenia: Stop Dreaming, Start Pitching

    Armenia has unicorns, a deep semiconductor talent pool, and one of the most powerful data centers outside the US. The…

    7 Comments
  • Armenia - The EU Workbench

    The EU's working-age population will shrink by 13% between now and 2060. The baby-boomer generation is retiring.

    13 Comments
  • Using LLMs Research for Financial Analysis

    In this article, I will show how to use LLMs' research function for an ad hoc financial analysis. My goal is to show…

    1 Comment
  • Armenia's biggest asset

    In Germany, the Minister of the Interior, Nancy Faeser, left a package for her successor: a 1,100-page-long paper to…

    15 Comments
  • Yes, Gitem

    Recently, a friend told me about his talk with a Genocide survivor who became successful in the USA. This man said to…

    19 Comments
  • Coming to Armenia

    People approach me about relocating to Armenia. The reason is likely apparent.

    19 Comments
  • What if countries thought like startups

    Everyone who knows me knows that nothing upsets me more than bureaucracy. It may be my experience with the public…

  • Armenia's Path Forward: Education, Innovation, and Opportunity

    Many people look at Armenia and say, "We must finally implement X." Others propose, "Someone should do Y to achieve Z.

    10 Comments
  • Common Sense Investing

    I usually prefer to stay humble and let my work speak for itself. But as many have reminded me, showcasing results is…

  • Leapfrogging politics - A chance for Armenia?

    Let's embark on a journey to understand leapfrogging. Imagine a developing country, like a determined athlete, leaping…

    7 Comments

Others also viewed

Explore content categories