I released the intermediate package of my Test With Spring course. Take a look at the course >>

Do you want to be a better software developer?

If so, you can join me on my journey and find out where it will take us! I will help you to learn new technical skills and give you ideas which you can use to improve your day-to-day work. At the moment I write mostly about Spring Framework and agile software development, but I believe that my journey won’t end here. This is just the beginning.

Who Am I?

I am a software developer who believes that software developers are obsessed by technology. Everyone of us has a favorite programming language (or two), and some even defend their favorite to their last breath. That is a waste of time! Instead of betting on a specific technology, I put my faith in the three cornerstones of software development: value, improvement, and curiosity.


Software has no value unless it solves the right problem.

Our first priority is to identify that problem.

Read more


Every software project has its unique problems.

Kaizen will help us to solve them.

Read more


Software development field is full of “best practices”.

We must be curious and challenge them.

Read more

Why Should You Listen to Me?

I could try to convince you by listing my “official” credentials but I won’t do that. Instead I will let my content speak on my behalf and let you decide if it is worth your time. You can start by checking out the tutorials showcased below or head straight to my blog.

Best Of PetriKainulainen.net

This is a collection of my “war stories” that helps you to solve some non trivial problems and save your precious time.
This tutorial doesn’t help you to get started with Maven, but it helps you to solve some non trivial problems that I have faced during my love-hate relationship with Maven.
This tutorial is written by a beginner, for a beginner. Its goal is to help you to get started with Gradle by solving real world problems one problem at a time.
This tutorial helps you write deterministic data access tests which test the right thing, are easy to read, and easy to maintain. If you want to learn how you can get the most out of your data access tests, you should read this tutorial.
This tutorial describes why you should make your tests as clean as possible and provides practical tips which will help you to transform your test cases into an executable specification. If you want to make your tests easier to read and maintain, this tutorial will help you to achieve your goal.
Are you tired of solving the performance problems caused by ORM tools? If so, you shouldn’t use an ORM tool when you are writing a read-only database query. Instead you should get back in control of your SQL. This tutorial describes how you can do that by using jOOQ in your Spring powered applications.
Most of us use social media services such as Facebook and Twitter every day. That is why it is only natural that many software projects require social media integration. The Spring Social project was born as an answer to these requirements, and my Spring Social tutorial will teach you to integrate Spring Social with your Spring powered applications.
Most applications have a some kind of search function. The problem is that search functions are often huge resource hogs and they can kill the performance of your application by causing heavy load to the database. Moving the load to an external search server such as Apache Solr solves that problem. If you want to use Solr in your Spring powered applications, you should read this tutorial.
Automated tests saves you time, money and a lot of headache. And yet, writing comprehensive tests for Spring MVC controllers has been a complex task. The release of the Spring MVC Test framework (formerly known as spring-test-mvc) changed everything. This tutorial helps describes how you can Write readable, comprehensive, and fast tests for Spring MVC applications
The data access code which uses the Java persistence API contains a lot of unnecessary boilerplate code. Spring Data JPA solves this problem, and this nine-part tutorial will help you to get started with Spring Data JPA. If you want to get rid of boilerplate code once and for all, this tutorial is a good place to start.