Stop trying to change yourself — Java Software Engineering Weekly Newsletter

Stop trying to change yourself — Java Software Engineering Weekly Newsletter

Oleksandr Stefanovskyi

Hello everyone,

You Don’t Need to Stop Shipping Features to Fix Technical Debt - This post by Ryan Djurovich will be the one I recommend for people who ask me about dealing with their Tech Debt while aligning it with the business needs and stakeholders. Consider what to measure and make visible, as it would help you deal with anxiety and frustration caused by our natural Recency Bias as humans. Let the data show if things are better or worse, and use that data to show it over a 6-12 months graph so the last 2-3 weeks won't give you the wrong impression.

Remote Brainstorming for Regular Humans - Bartek Ciszkowski will help you make some order in how you run a brainstorming session. Considering more in-writing preparation (e.g. sharing a doc with goals, pains, KPIs, etc. a few days before the meeting) and the roles you'd like to see people take can help boost the effectiveness and inclusiveness of your team.

We'll Be Working Remote for Another 6+ Months. Time for a 1:1 Tune-Up - Chris Hicken offers the latest iteration of how they conduct 1:1s at Nuffsaid. I like the fact they chose a different name to it ("syzygy") and framed it around long-term alignment between teammate-manager-company. What can you use from Nuffsaid's format? Which ideas can you borrow?



  1. Spring Autowiring - It's a kind of magic - Part 2 - And another example where autowiring goes above and beyond, this time by filling in the gaps of an incomplete configuration. (part 1)
  2. Announcing the Spring Authorization Server - It is a community-driven project led by the Spring Security team and is focused on delivering Authorization Server support to the Spring community.
  3. Adding HAL pagination links to RESTful applications using Spring HATEOAS - Retrieving data, even when applying search criteria might result in hundreds, thousands, or millions of records. Retrieving such amount of data could lead to performance issues, not meeting a contracted SLA, ultimately affecting the user experience. One approach to overcome this problem is to implement pagination.
  4. Java Records – A Beginner’s Guide - In this article, the Records feature will be presented. It was introduced in Java 14, and which aims to simplify the way we create a POJO (Plain Old Java Objects), DTO, or Value Object.
  5. Java 14: Looking at the updated switch statement - Everything you missed showed here by a good example.
  6. Choosing Tools for Test Doubles


  1. Patterns for Managing Source Code Branches - The first installment of this series focuses on a couple of base patterns: source branching and mainline.
  2. The secret skills of productive programmers - Most discussions of programming productivity tend to end up focusing purely on technology, coding, and design skills, and skip over these problem-solving skills. Of course, this isn’t a conspiracy of silence, no one is deliberately hiding the existence of the skills.
  3. Logging additional metadata - Logs can be made faster by removing the need to parse them. To achieve that, one can directly output single-line JSON messages. When additional meta-data is required, just use an MDC and the logging pattern appropriate to the logging implementation.
  4. Refactoring: This class is too large - An example of refactoring from a real (flawed) code base by Martin Fowler.
  5. AWS Alarms for Application Errors - Monitoring is key for any real-world application. You have to know what’s happening and be alerted in real-time if something wrong is happening. AWS has CloudWatch for that and gives you a lot of metrics automatically. But there are some that you have to define yourself. And then you need to define proper alarms.
  6. How Netflix brings safer and faster streaming experiences to the living room on crowded networks using TLS 1.3 - At the time of writing this article, the Internet is experiencing higher than usual traffic and congestion. Saving even small amounts of data and round trips can be meaningful and even better if it also provides a more secure and efficient streaming experience.


  1. 'Things I Wished More Developers Knew About Databases' — A Google engineer (whose name may be familiar to those Go developers amongst you) shares 17 insights about databases she’s picked up over the years. I strongly recommend this piece and I identify with lots of the points myself...
  2. Lambda Store: A New 'Serverless Redis' Service — This seems a neat idea. Claiming to not be just another Redis cloud service, Lambda Store applies a serverless-style pricing model that opens up a variety of neat use cases for the popular data structure server (serverless caching, for starters). The underlying system appears to be a custom clone of Redis rather than the real deal, however.
  3. kvrocks: An Open Source, RocksDB-based, Redis-compatible Database — You know Redis’s API is good when so many projects continue to implement it for themselves. kvrocks brings the Redis API (with pretty good support) together with the RocksDB persistent key-value store. Written in C++.
  4. An Easy Postgres 12 and pgAdmin 4 Setup with Docker — Docker provides an easy and loosely coupled way to get things set up in a development environment.
  5. Redis Labs Moving RedisJSON to a New Codebase Written in Rust — RedisJSON provides a JSON data type to Redis and it’s been ported from C to Rust for better safety and developer experience.
  6. Replicate Multiple Postgres Servers to a Single MongoDB Server using Logical Decoding Output Plugin

You could check out previous issues at my site, telegram or twitter.