Friends of OpenJDK Today

Interview with a Java Champion: Reflections on a Storied Career and Insights for the Next Generation

August 19, 2024

Author(s)

  • Avatar photo
    A N M Bazlur Rahman

    A N M Bazlur Rahman is a Software Engineer with over a decade of specialized experience in Java and related technologies. His expertise has been formally recognized through the prestigious ... Learn more

Introduction:

In the fast-paced world of software development, a few individuals leave a lasting impact through their dedication and contributions. Our guest today is a seasoned developer, a respected author, and a cornerstone of the Java community.

With over two decades of experience, he has played a key role in the evolution of Java from a niche language to a critical tool in various industries. In this interview, he shares his journey, insights, and advice for developers at all stages of their careers.

Profile:
Name: Ben Evans


Bazlur: Please tell us a bit about your professional background and how you first became involved in the Java community. What motivates you to remain committed to it?

Ben: I first learned Java in 1998 while working on my PhD. I was tutoring a CS student who needed help with their courses, including Java. However, I didn't use it regularly until 2004 when I joined Morgan Stanley as a senior developer. I was initially hired for my Perl/C/Unix skills, but a project came up that required Java expertise—specifically for the Google IPO. I quickly brushed up on my Java skills, and soon it became the primary language I programmed in.

Even then, my real engagement with the Java community didn’t begin until 2009. I gave a talk about an open-source toy language interpreter project I’d written. Rob Nicholson and Holly Cummins from IBM encouraged me to attend the Devoxx Belgium conference and get involved with the London Java Community (LJC), and something just clicked. I had been involved with other open-source communities before, but the LJC truly changed things for me.

"What keeps me in the Java community, even though I no longer live in London, is the people. The Java community has some incredibly smart people, but it's the professionalism and kindness that really set it apart."

When I first got involved with the LJC, I was also dabbling in open-source .NET code, but the warmth and interest from the LJC were unparalleled. I’m quite happy with the path I chose.


Bazlur: How has the Java ecosystem evolved over the years since you first started using it, and how has your involvement with the London Java Community shaped your perspective on these changes? Additionally, what do you think are some key challenges and opportunities for the Java community in the coming years?

Ben: There’s so much to talk about here. To pick just one thing—when I started seriously programming in Java, its domain of applicability was somewhat limited. For instance, in financial systems, where I’ve spent much of my career, Java was only suitable for certain types of problems. Anything requiring moderate or above performance was out of reach and typically coded in C++. Java was seen as having great potential and offered a superior developer experience, but in 2004, it couldn’t handle strenuous performance requirements.

"Over the last 20 years, Java has evolved into 'the everything language.' In performance-conscious spaces, Java has taken over much of the domain that C++ used to dominate."

Modern Java web apps have shed much of the baggage and verbosity they were once known for. The frontend remains the only area where Java lacks a significant presence.

Regarding the LJC, any community is defined by its members. The years I spent in London and with the LJC were special times filled with amazing people whose experiences shaped my perspectives on performance, architecture, agile development, and more.

In my opinion, the three most significant trends in software over the last 15 years have been:

  • A sharp increase in the number of new developers entering the industry.
  • Increasing complexity in the landscape—languages, frameworks, and techniques.
  • Workloads moving to the cloud.

I see no evidence that any of these trends will slow down.


Bazlur: For seasoned developers, the strengths of the Java ecosystem are well understood. However, for newcomers to the industry, these advantages may not be immediately evident, leading them to gravitate towards trendier and seemingly easier languages like Python and JavaScript. What do you have to say to them?

Ben: This question is closely related to the last one.

"Java needs to be on the radar of new developers, but that doesn’t mean it should be the first language they learn. The days of developers knowing only one language are gone forever."

Young developers often believe that the technologies they encounter early in their careers are better than older approaches. It’s part of being young, enthusiastic, and inexperienced.

There’s also an antipattern I refer to as "Easy Cases are Easy." I’ve yet to find a language or framework that caters well to both simple examples and the scale-up required for large systems. For early serverless deployments, sure, JS or Python might suffice.

"Java's positioning should be the 'grown-up, successful uncle' language—reliable, high-performance, and production-grade for systems that matter."

As developers gain experience, they start valuing the robust aspects of Java over the superficial simplicity found elsewhere.


Bazlur: I often get asked by beginners in Java programming about how much they need to learn to become contributing developers and consider themselves industry-ready, even for a very junior developer position. Could you provide some guidelines or advice for these newcomers?

Ben: First and foremost, the right job for you is out there. You may face disappointments and setbacks, but you will overcome them. This is a marathon, not a sprint. Take your time and remember to breathe.

Secondly, disregard the noise and the hype. The trends in our industry are clear. We need honest, diligent, intelligent, professional software engineers more than ever, and you have the capability to be one. Please join us if you feel so inclined.

"Your job is not just to write code. Your job is people. Never forget that."

Do not be overwhelmed. Every eminent person in the field once stood where you are now. They found their way, and so will you.

Java is not a beginner's language; it is for those ready to level up. The right job will meet you where you are, challenge you, and help you grow while having realistic expectations.

In terms of technical skills—learn Git. Being proficient with Git is one way a junior developer can distinguish themselves. Learn it properly and on the command line.


Bazlur: You've given a great holistic overview, especially with the stress on the people aspect of software development and the importance of Git. Could you specify a bit more about the foundational concepts and skills, particularly in Java, that a beginner should aim to understand before considering themselves industry-ready?

Ben: This is a somewhat difficult question to answer.

The core Java language isn’t particularly difficult to learn—e.g., it has only 53 keywords, compared to many more in other languages, and its syntax is highly regular. The complexity comes from the libraries and ecosystem, a characteristic shared with many other language communities.

"I also struggle with the phrase 'industry-ready.' The nature of our industry is dual—constant change versus unchanging fundamentals."

We must ask ourselves, what do we really mean by "industry-ready"? Is it a familiarity with the framework de jour, or a willingness to learn, to get stuck in, and to rediscover the most important truths of the world we inhabit?


Bazlur: Could you describe your process for writing a technical book?

Ben: I am responsible for three titles:

  • The Well-Grounded Java Developer: This was my first book, co-written with Martijn Verburg. It began when I started working at Deutsche Bank in 2009, where I was asked to overhaul training materials for new joiners. I realized I was writing "the book I wished existed" to help them, which eventually became the first edition of "Well-Grounded."
  • Java in a Nutshell: O'Reilly approached me to take over writing duties for this established title and update it from Java 5 to Java 8. This has only ever been a process of revision.
  • Optimizing Java: O'Reilly approached me with the idea of writing a Java performance title. The project took over a year from concept to contract and kickoff.

Bazlur: How do you start writing a technical book, and what steps do you follow until completion?

Ben: For the first editions of "The Well-Grounded Java Developer" and "Optimizing Java," we started with a detailed outline, breaking down each chapter into sections. The chapters were then expanded and underwent many changes during development. The code examples were developed concurrently with the text.

Illustrations started as rough sketches. I used to hand-draw them and then take a picture, but now I use Excalidraw for the first draft. My wife, a professional artist and graphic designer, usually helps convert these into high-quality diagrams.

I now write in Asciidoc, check it into Git, and render development builds to PDF. My first book was done in Microsoft Word, and that experience was painful enough that I never want to repeat it.

Over time, significant changes to the book may occur—chapters may split, merge, or be dropped altogether.


Bazlur: How does the process of revising an existing work differ from writing a completely new book?

Ben: Revising an existing work is significantly different from writing a new one. Most of my books are revisions.

For instance, when I updated "Nutshell" from Java 5 to Java 8, major changes were required—like removing extensive coverage of inner classes, which lambdas had largely replaced. The "Nutshell" series has developed over many editions, each tied to a Java version. This approach sometimes causes callouts of specific features to accumulate, creating layers of references that can be off-putting to modern readers.

"Part of the revision process is to reconsider the material as if encountering it fresh—does it read well? Is it presented in a way that makes sense to someone unfamiliar with the subject?"

This takes more time than one might think, but it’s absolutely essential.


Bazlur: Can you describe any challenges you faced while writing or revising your books?

Ben: The second edition of "The Well-Grounded Java Developer" required major changes—only about 30-40% of the first edition's material was kept. We were also writing during the COVID lockdowns, and got a little carried away.

As the lockdowns ended, we realized we had written a lot of new material but were nowhere near finished. We had to stop adding new content and focus on completing the book, which is why it ended up 50-100% bigger than the first edition.

The book I'm currently working on is a second edition of "Optimizing Java," but the world has changed since the original. The first edition focused on single-JVM performance during the early days of Java 11. Now, everything is increasingly about the cloud and clustered applications, so the new edition reflects that shift.

We've renamed it "Optimizing Cloud-Native Java" and shifted the focus to aspects of cloud technology that a modern Java developer needs to understand. We've kept about 40% of the first edition because single-JVM performance is still important, but it’s no longer the only thing that matters.

I’m actively working on it now, and it should be out later in 2024.


Conclusion

This interview offers a wealth of insight into the Java ecosystem's evolution, the importance of community, and the intricate process of writing and revising technical books. Whether you're a seasoned developer or a newcomer, there's something here to inspire and guide you on your Java journey.

Topics:

Related Articles

View All

Author(s)

  • Avatar photo
    A N M Bazlur Rahman

    A N M Bazlur Rahman is a Software Engineer with over a decade of specialized experience in Java and related technologies. His expertise has been formally recognized through the prestigious ... Learn more

Comments (0)

Your email address will not be published. Required fields are marked *

Highlight your code snippets using [code lang="language name"] shortcode. Just insert your code between opening and closing tag: [code lang="java"] code [/code]. Or specify another language.

Save my name, email, and website in this browser for the next time I comment.

Subscribe to foojay updates:

https://foojay.io/feed/
Copied to the clipboard