Java

My experience with Java came from University where all of my coursework was completed in Java. Three courses in particular gave me an understanding of how object oriented programming (if leveraged properly) can really simplify developing complex apps. The first was a course on computer networks where we got super into depth about how TCP/IP and other networking standards work. We built simple websocket clients, ftp servers, and routers using Java, and it gave me a much stronger knowledge of how the web works, as well as some exposure to the Java ecosystem. The second was a course on data structures and algorithms where we weren't allowed to use Java collections but instead had to build everything from a linked list to a red-black tree from scratch. Learning the how and why behind some of the structures as well as learning how to analyze growth rates is in my opinion one of the most important things I took away from my entire time at university. The third course was a software engineering course where were introduced to design patterns, and got to build a functional REST API using MySQL, Java, and PHP. It was a very simple app, but it really helped me realize that we were being taught how to pick things up more than any technology in particular, and It was around then I started getting into JavaScript and the frontend out of interest.

I am learning Spring at the moment, and have a way deeper appreciation for Java after writing in a language without a strong type system for two years. The ecosystem is absolutely massive and I know it will take a while to learn, but in the limited time I have had to check it out I really like it. The constructor based dependency injection, database implementation abstraction that JPA provides, and annotation processors like lombok and mapstruct have been a lot of fun to play with. I also see why Spring would be a good choice at scale. Also being able to integration test on in memory databases using h2 just by switching profiles blew my mind, I really like how easy Spring makes it to do things the right way. I've just started to get my feet wet but would love to dive deeper into Spring, and the DDD concepts that it is built upon.