Summer Reading 2023

View from a beach restaurant

I'm about to jet off on my sunny* summer holidays, so it's a good time to leave you with my recommended reading and learning. Are they all my books and content? Yes. But I do have discounts and deals for them, so that's something, right?

Working With Code in IntelliJ IDEA (Online course)

I've just released a Brand New online course on LeanPub, Working With Code in IntelliJ IDEA. If you want to step through the most helpful features for writing code with IntelliJ IDEA, this is the course for you. We have a special introductory price if you click on this link: https://leanpub.com/c/workingwithcodeinintellijidea/c/eBRBFWYIyek8.

If you're already a subscriber (reader or author) of Leanpub, it's available to you for free.

If not, but you already own the IntelliJ IDEA book, I can give you a link to get the course for free, contact me.

Getting to Know IntelliJ IDEA (PDF, eBook & paperback)

If you follow me on Twitter, or literally anywhere else, you'll know that Helen Scott and I released this book on IntelliJ IDEA at the end of last year. We're currently doing a limited-time-only offer where if you buy the book, you get access to our first IntelliJ IDEA course, Working With Code in IntelliJ IDEA, for free. You have to buy it before 6th August to qualify. Do it now!

If you want an e-version (eBook or PDF), I recommend getting it directly from Leanpub. It's also going to be much easier for me to confirm your purchase in order for me to issue you a discount.

If you want the paperback version (and let's be honest, it's nice to have these things physically in your hands at times) it's available on Amazon.

After you've bought the book, contact me and I'll give you a link to get the course for free.

Descubre IntelliJ IDEA

The IntelliJ IDEA book is also available in Spanish. It's feature-complete, we're just working through all the feedback from reviewers. While we're still doing that process, you can get the book at a discounted price on Leanpub. We also welcome feedback from readers.

Head First Java (Third Edition) & 97 Things Every Java Programmer Should Know

Head First Java is, of course, a classic, which is why I jumped at the chance to help update it to its current third edition. This version covers features all the way up to Java 17, so even if you're a Java expert, there will be some new stuff in here for you. I also modernised the concurrency chapter and added so much modern concurrency stuff that we had to split it into two chapters.

97 Things Every Java Programmer Should Know was released in 2020, and with everything else that was going on at the time I didn't really talk as much about this book as I would have done. I'm very proud to have been able to edit this and for this to be the first book that had my name on the front cover. It's got a huge number of tips and wisdom in it, whatever stage you're at in your career, there's something in there for you.

I have a link for a 30-day free trial for O'Reilly Learning. If you sign up with this link, you can read these two books for free: https://learning.oreilly.com/get-learning/?code=HFJAVA21. You just have to finish the books in 30 days!

Modern Software Engineering - David Farley

At last! A book I didn't write! Although... Dave did very kindly ask me to write the foreword, which I was very excited to do because I loved this book so much. I read this book in less than a week when I was on summer vacation back in 2021, and I highly recommend it as summer reading. It covers a whole bunch of topics that qualify as "Software Engineering", but it's not stuffy or academic, and Dave's writing style makes it clear why these things matter. You can buy it on Amazon, or, if you used the 30 day free trial above, you can read it on O'Reilly Learning.

O'Reilly Playlist

Oh OK, I should recommend some other stuff I didn't write. I actually curated an "Expert Playlist" on the O'Reilly platform called Becoming a Better Programmer. So, you can use the 30-day free trial link to check out that playlist.

More Learning

I'm hosting my first online training for Gradle next week. I'll be teaching Gradle Enterprise for Developers. Note that this is not about the Gradle build tool. In fact, Gradle Enterprise works for Gradle and Maven, and also has functionality for Bazel. You can attend virtually to find out more.

I'm also presenting at the Manchester Java User Group and the London Java Community in August, and Madrid Java User Group in September. If you're local to any of those areas, keep an eye on those websites and sign up when my events are published.

And Finally

As you can see from this blog, I have quite a few projects and ideas in progress or brewing. I've been investigating using substack to publish news and updates. There's nothing there right at this second, but if you are interested in receiving news about new or updated books, courses, events, and even blog posts, subscribe here.

Happy summer learning!

* I'm going to England. It's definitely not going to be sunny.

Why I prefer trunk-based development

Photo of a tree at the side of the river in Sevilla, Spain

These days, distributed version control systems like Git have "won the war" of version control. One of the arguments I used to hear when DVCSs were gaining traction was around how easy it is to branch and merge with a VCS like Git. However, I'm a big fan of Trunk-Based Development (TBD), and I want to tell you why.

With trunk-based development, all developers work on a single branch (e.g. 'main'). You might have read or heard Martin Fowler or Dave Farley talking about it. It was when I was working with Dave (around about the time that Git was rapidly becoming the "go-to" version control system) that I really saw the benefits of trunk-based development for the team, particularly in an environment that was pioneering Continuous Delivery - Dave was writing the book with Jez Humble while I worked with him.

In contrast, the branching model encourages developers to create separate branches for every feature, bug fix, or enhancement. Although branching may seem like a logical approach to isolate changes and reduce risk, several factors make me more comfortable with trunk-based development.

Continue reading "Why I prefer trunk-based development"

What should every Java programmer know?

Front cover for the book "97 Things Every Java Programmer Should Know"

Preface to 97 Things Every Java Programmer Should Know

The mind is not a vessel that needs filling, but wood that needs igniting.

Plutarch

What should every Java programmer know? It depends. It depends on who you ask, why you ask, and when you ask. There are at least as many suggestions as there are points of view. In a language, platform, ecosystem, and community that affects the software and lives of so many people, and has done so from one century to the next, from one core to many, from megabytes to gigabytes, it depends on more than one could ever hope to cover in a single book by a single author.

Instead, in this book, we draw on some of those many perspectives to collect together for you a cross-section and representation of the thinking in the Java-verse. It's not every thing, but it is 97 of them from 73 contributors. To quote the preface of 97 Things Every Programmer Should Know:

With so much to know, so much to do, and so many ways of doing so, no single person or single source can lay claim to “the one true way.”. The contributions do not dovetail like modular parts, and there is no intent that they should—if anything, the opposite is true. The value of each contribution comes from its distinctiveness. The value of the collection lies in how the contributions complement, confirm, and even contradict one another. There is no overarching narrative: it is for you to respond to, reflect on, and connect together what you read, weighing it against your own context, knowledge, and experience.

What should every Java programmer know? In the 97 things we have sampled, the answers span the language, the JVM, testing techniques, the JDK, community, history, agile thinking, implementation know-how, professionalism, style, substance, programming paradigms, programmers as people, software architecture, skills beyond code, tooling, GC mechanics, non-Java JVM languages… and more.

In the spirit of the first 97 Things books, each contribution in this volume follows a nonrestrictive, open-source model. Each contribution is licensed under a Commons Attribution 4.0 License. Many of the contributions also first appeared on the 97 Things Medium publication.

All these things are fuel and fire for your thoughts and your code.

New! Landing page for Getting to Know IntelliJ IDEA

Background image of the colours in the Getting to Know IntelliJ IDEA book

One of the things you have to do as a self published author is marketing. I mean, obviously you have to do EVERYTHING as a self published author, that's the thing.

I've just finished creating a landing page for Getting to Know IntelliJ IDEA. It's one of those things that should be "easy" and "quick", and yet after all the work we put into the book, we never got around to it.

Fortunately, now it's a few months after our official launch, we have a lot more information to put on the landing page, like: videos, interviews, and recommendations from people who liked the book.

It's also yet another example of how "easy" and "quick" turns into a morning's-worth of work, and, more than that, self-doubt and dithering on where to place things and how to present information. It's a morning of Googling how to do things in WordPress.

There's still a lot to do, not least of all removing all the "Trisha Gee" site branding and making it into a proper standalone page. But it does the job.

Anyway, take a look. And buy the book!

Gradle Gradle Gradle, with Gradle we’re going to play

I know I owe you a blog post1, and today I actually have the time, energy and inclination to write it. It's not often those three factors coincide.

I have already done the Great Reveal about the job I am doing now that I'm no longer at JetBrains.

The question I wanted to answer (if only to remind myself later in life!) is why?

Continue reading "Gradle Gradle Gradle, with Gradle we’re going to play"

Writing A Book Is Hard

Getting to Know IntelliJ IDEA book cover

Hey Helen, I know you were disappointed you missed out on a chance to contribute to 97 Things Every Java Programmer Should Know, do you want to write a book with me?

Trisha Gee, Spring 2020

That's how it started.

It's that easy.

[Maniacal laughter in the background]

I have long wanted to write a book. It didn't really matter what type of book (novel, technical) or on which topic (I have opinions on everything). I wanted My Name On The Front Of A Book. I wanted to be An Author. I knew Helen also wanted to be An Author, and that by working together we could keep each other accountable and actually do this.

Continue reading "Writing A Book Is Hard"

What’s Next for Trisha?

Right. It's about time I started looking for my next job/gig/source-of-income. I'll be honest, 9 months of sabbatical has not been as restful as I had hoped, but apparently writing two books and taking on the ownership of a restaurant are not restful activities. Who knew?

Anyway this blog post is because it's too hard to explain in 140 characters (OK fine 280, but I'm old school) what I'm looking for. There are three main paths I'm exploring:

  1. Developer Advocacy
  2. Engineering
  3. Consulting & Training
Continue reading "What’s Next for Trisha?"

It’s not you, it’s them

I believe in asking for help, for being vulnerable about the things we don't know, especially if we've been in industry a long time. We can't possibly know it all, and it's important to normalise that.

So I wrote a blog post about the thing I was struggling with. Yes, it also had the lovely positive of asking The Internet to solve my problem.

Shocked I was, shocked (no, I was not) to receive responses suggesting that perhaps I was a bit rubbish as a developer.

Continue reading "It’s not you, it’s them"