tilchev

21
reputation
4

This About section is a detailed continuation of my LinkedIn About, to get the full story start there. URL above.

As it may be apparent from the mostly Spring stack itself, I like Annotation Driven Development (or as I like to call it Code as Config). I believe the most complicated part of software development is understanding and implementing business logic while keeping tech debt at a minimum. After all hardware is cheap and programmers are expensive, so making (micro or even bigger) optimizations at the cost of having lots of boilerplate and tech debt isn't worth it.

This may provoke the question - why Java at all? Well I like Java for several reasons: 0) Statically typed language with C-like syntax, great aspects for both beginners and pros - why I prefer static typing is a whole other story.

  1. Enormous, maintained and mostly free & open source ecosystem with everything you need
  2. Mostly backwards compatible after all these years (I remember some dramas around project jigsaw with the 8 to 9 switch, probably why lots of companies still use 8)
  3. Not as feature creeped as even newer languages like C# - dynamic type is my favorite example here. After dynamic was added it was labeled as "bad practice".. then why add it in the first place? Java tends to add features slower and think them over more (yes, I know generics are an exception)
  4. Not as much syntactic sugar as languages like C#, JS, Python, etc. In this way I think Java is the ideal language to learn programming with because it shows you lots of details about how something works (take a look how an iterator is implemented in Java vs C#)
  5. Not as bare bone as something like C/C++ (no GC, destructors). To me Java is the perfect middle ground between C++ and C#/JS/Python.
  6. Because Java is very verbal in descriptive of what you are doing with code you mostly end up writing more code than in other languages, but this makes code easier to read. Which is important because the more senior a programmer gets he tends to write less and read more code.

But wait, I said I like Java's verbosity, yet I also prefer to use it with stuff like Spring, Lombok (and am even learning and planning to switch to Kotlin) that shorten regular Java quite a bit.. what am I trying to pull here!? I believe there is a difference between being verbose where it counts and avoiding useless boilerplate where it doesn't. And while I still think that for a beginner it's better to start without all these java "shorteners", for someone with a bit more XP, who knows how these "TLDR" coding approaches work underneath they can be quite beneficial. Also, not having getters/setters/ctors in your code makes sure there won't be any hidden logic in the wrong places.

I have a few thoughts to share about Kotlin as well, but I ran out of space in this about section too. When I figure out where to put that I will update this and continue my about journey.