
Hello, my name is Jarik Marwede and I am a software developer from Germany.
About me
My Software Development Journey
I started programming sometime in middle school with the scripting language of the Windows command line called Batch. It was pretty fun for a while and taught me the basics of programming. Eventually though I started looking for a new language because I became limited with the capabilities of Batch.
Python
So after trying out a few languages that I thought where too complicated for me like C# and Java, I started learning Python. It was way more fun, and I could do basically whatever I wanted. It was also the first time I was able to develop a Graphical User Interface using Tkinter which was mind-blowing to me. I spent the following years learning as much as possible about Python and developing tons of Programs. But all that time I only ever developed Desktop Applications and didn’t know that there was more to programming. Then I found out that there were more programming fields, and I became interested in a lot of them like Web Development and Machine Learning. Although I would have liked to, I would not have been able to learn all of them at the same time, so I started with Web Development.
Web Development
But as I soon found out I wasn’t able to develop Web Applications with Python. In fact, it is only possible to do so using JavaScript. So even though I loved Python I started getting myself familiar with HTML, CSS and JavaScript. It was surprising to me that JavaScript itself wasn’t that different from Python, and I had already learned the basics of HTML and CSS while developing Web scrapers in Python. Soon I also learned about the difference between Front-End-Development and Back-End-Development.
Back-End Development
The courses I followed were recommending using Node.js (a JavaScript runtime) for the Back-End because it was using JavaScript too so I learned to use that as well. I also tried using Python web frameworks like Flask and Django, but later on I decided that using Express as a Node.js framework was simpler. To minimize costs for some of my projects I also learned about the concept of Serverless development and cloud functions. I used AWS Lambda and some other AWS products to create my APIs. In grade 12 I started learning about PHP in school.
Front-End Development
When developing my applications one problem occurred a lot: How could I reuse HTML code on multiple pages. Even though I had learned JQuery that could load in HTML dynamically it became really cluttered. That’s when a friend of mine told me to use a Front-End-Framework like Angular, React or Vue. He recommended Vue, so I started learning that first. This website itself was once built with Vue. But after learning about different website/webapp structures I found out that using Vue alone as a SPA framework was not good for load times and SEO. I learned about SSR and Static Site Generation. To improve the performance of my website I decided to learn Nuxt.js which is a framework to develop Vue apps that can be statically generated and rendered on the server.
C/C++ in school
After changing schools between grade 10 and 11 I started getting IT classes and the first language we learned was C++. It was a lot more low level than any of the languages I had learned before but because it was a beginner course we did not learn a lot. So the first time I really started to learn more about C++ was for my “Facharbeit” (a big project in grade 12 for which German students have half a year of time). One of my friends and me developed a bartender robot which let you select cocktails on a touch display which the machine would then prepare. It used an Arduino microcontroller which ran a subset of C++ and forced me to learn a lot more about object-oriented C++.
Java
Once I had finished school I started a dual study programme at IServ GmbH and Ostfalia University of Applied Sciences. Starting with the first semester we got to know Java. It had now been a few years since I had last tried to learn Java and this time it went pretty well. The syntax wasn’t all to different from languages I already knew like C++ and JavaScript. The only thing I had to get used to was the explicit type system. Before I had not thought much about types when programming in Python or JavaScript. But, because we used Java in basically every course where we had to code, I eventually got better and at some point even started to really like explicit type definitions. So much so, that I even started to use the optional type annotation system that got introduced in Python in some of my hobby projects and eventually picked up TypeScript to add types to my JavaScript projects.
C/C++ in college
While we did most of our software development in college in Java, we also had a few courses that used other programming languages for specific purposes. In one course that was about computer architecture we used C to once again program microcontrollers like I had done in school. We also had a course specifically for learning C syntax and I chose a course about the Linux operating system where we built a basic HTTP server in C++. Those courses were really interesting and combined with other more theoretical courses taught me a lot about how computers work.
Haskell
One more different programming language I came in contact with during college was Haskell. I only used it in one course of my area of specialization (software engineering), but it was fascinating. I had of course heard of functional programming before. But I had only used a few features in Python that came from the functional programming paradigm. I had never used a language that only allowed functional programming. One course was of course not a lot of time and I only scratched the surface of functional programming as a concept. I will have to dive deeper at some point in the future as it seems very interesting.
PHP
At IServ, which is a company developing a software platform for schools that is used all over Germany, I once again got confronted with PHP. This time however was very different to the PHP programming I did in school. IServ was an enormous software platform divided into many modules and used the Symfony framework in most of them to make web development easier. We didn’t use PHP as a templating language like we sometimes did in school. Instead, we used the Twig templating language and used PHP in an object-oriented way. Once I learned that PHP like Python had adopted optional type annotations, I started to actually like it. It will probably never be my favorite language, but it works fine now and Symfony is a really powerful framework that is pretty nice to work with once you get used to it.