avatarGreg L. Turnquist

Summary

A software developer reflects on their transformative 14-year journey with the Spring team, which led to personal growth and a deep understanding of coding excellence and user success.

Abstract

The author recounts their initial apprehension and subsequent growth after joining the Spring team, highlighting the rigorous code review process known as "juergenization." This process, overseen by Spring founder Juergen Hoeller, involved meticulous refinement of code contributions, leading to the author's professional development and internalization of the Spring team's ethos. The article also promotes the author's book, "12 Rules for Pro Coders," as a resource for career acceleration, emphasizing the importance of continuous learning and adaptation in the tech industry. The author expresses gratitude for the skills and values acquired from the Spring team, which have been instrumental in their contributions to Cockroach Labs and the broader coding community.

Opinions

  • The author values the elite nature of the Spring team and the high standards set for code quality.
  • "Juergenization" is seen as a beneficial, albeit challenging, process that significantly improves code and the developers who undergo it.
  • The Spring team's commitment to maintaining and supporting their projects is admired for ensuring a smooth user experience, particularly in terms of backward compatibility and upgrade ease.
  • The author believes in the importance of a developer's ability to adapt to new technologies and standards while maintaining support for older systems.
  • There is an appreciation for the Spring team's focus on user success and reducing complexity in Java development, which aligns with Rod Johnson's original vision for Spring.
  • The author is passionate about sharing the lessons learned from their time with Spring, as evidenced by their book and upcoming content for professional coders.
  • The author is optimistic about the opportunity to apply the principles learned from Spring to their work at Cockroach Labs, aiming to enhance the experience for their customers and community.

Thank you, Spring!

14 years ago, a young coder with a wife and a baby girl, left his comfy, secure position and struck out to join the recently acquired Spring team. That someone was me.

My daughter’s reaction when I told here I was joining the Spring team!

I had never worked on such an elite team. I had been used to writing functioning code and shipping it out to our users. Of course I’d had feedback on proposed solutions and seen my handiwork reviewed to see if it was correct. But I’d never submitted code that was then “polished”.

I’d never done that before.

But here I was working for a team that was serving literally millions while my previous system’s users clocked in at less than 1000.

There was some awe being able to claim

I was part of this fantastic team. But there a much bigger dose of panic I was trying hold at bay!

And so I did my best to just listen to the feedback I received.

The Spring team is somewhat famous for “juergenization”. Some call it polishing. But that’s an oversimplification.

You see, the idea is to polish your code such that Juergen Hoeller (Spring founder and present lead developer of the Spring Framework) would approve your changes. Invariably, he would make a slight tweak…or a veritable rewrite (assuming your patch qualified) and make your code appear as if it had been there the whole time.

Over time, the more patches you submit, the more your work gets “polished”, it’s ultimately YOU that becomes juergenized. (Maybe I should write a book about juergenization itself? Let me know in the comments what you think!)

Today’s sponsor…

Coding isn’t just about algorithms. There’s more. A LOT more. CI, security, team communication, meetings, career tips, you name it.

I wrote 12 Rules for Pro Coders to give you actionable advice to accelerate your career. As a veteran pro coder, I want YOU to learn the same valuable lessons I did…but faster.

This advice has been put to the test. In my own process of being cut in the acquisition, I have actually leaned into what I wrote in the midst of coming up to speed on my new endeavor over at Cockroach Labs. This book can help you too.

So grab your copy and learn what your university or boot camp didn’t have time to teach you!

https://12rules.io

For several years I contributed not just tiny patches but instead whole features and new approaches to Spring HATEOAS under Oliver Drotbohm’s management. And I swear, not a single contribution was made without some form of juergenization. (Some called Ollie “mini Juergen”!)

I had constant feedback on style, structure, format, and purpose of every piece of code that I wrote.

But the Spring team doesn’t just polish code for fun…or sadistic pleasure. There is a reason.

Just like there is a reason that they often say “no” more often than “yes” to new ideas and new patches.

Spring is a slate of portfolio projects used around the globe by literally millions. For something to be absorbed into a Spring project means taking on a long window of maintenance and support. Because Spring doesn’t break users except in very strict and controlled ways.

The Spring team wants the upgrade experience to be smooth and easy. Patch releases should fix bugs…and just that. Minor releases may allow new features, but shouldn’t break existing behavior.

When I listened in on Juergen at a SpringOne conference birds-of-a-feather conversation, and heard him talking about Spring being “JDK 8 ready”, I was befuddled at what he meant!

So I did some digging. And found out that while it was baselined on JDK 6 at the time, it was being compiled using JDK 8 and had chunks of code that would activate to support various JDK 8 features like Optional return types for Spring MVC controller methods.

I didn’t know Java could even do such a thing!

I spotted places in Spring Data JPA where two solutions existed, based upon whether or not the JPA provider was on JPA 2.1+. What?!?

The more I learned and grew on the Spring team, the more I learned the levels of effort this team spent on this type of support for end users. A lesser toolkit might have simply jumped to the newer version of a given standard and called it a day.

But not Spring.

Part of this was borne of the fact that Spring used to be the underdog. They had to offer an overwhelming reason for people to turn away from “standard enterprise Java.”

And so they focused on user success. They focused on making it easy for developers to solve problems. After all, Rod’s vision for Spring was to reduce Java complexity and offer a better way forward.

And having such an ethos ingrained in me over the part 14 years has truly juergenized me.

When I joined Cockroach Labs and dove into all the content we are building for our customers, I began spotting places where we could improve things. I saw opportunities where I could apply lessons I’d already learned.

I saw the chance to begin juergenizing things here and affording our customers and community a better experience. And this is where all those years of continuous feedback to be now be turned to serve this community.

Thank you Spring team for honing my skills and desire to serve. Thank you for juergenizing me.

If you are pro coder or aiming to become one, then stay tuned for my next article. But if you simply can’t wait, then check out the video below where I talk about exactly what you must do to get promoted or received a merit increase!

— Greg

Do you want to get a free tech e-book, be alerted to my discounts, and get even MORE content about PRO CODING? Then SIGN UP FOR MY NEWSLETTER.

Software Development
Software Engineering
Spring Boot
Spring Framework
Recommended from ReadMedium