my blog. for you.

Let’s talk digital.

I’m an independent IT consultant and entrepreneur in the Internet and software business. I’m interested in design, enterprise applications, web apps and SaaS products. I design and develop business solutions and applications. I help companies in terms of software quality and knowledge transfer, e.g. with Angular and Spring Boot.

Artur Śmiarowski’s Guidelines for Writing Readable Code

Code means communication has become a bit of a mantra for me. Source code isn't just the means by which you translate requirements into commands and structures a machine can understand. Source code also communicates your intent as a designer and engineer as to what a particular piece of software is supposed to do. If written in a clear and comprehensible manner code can serve as an authoritative design specification with no or little extra documentation needed. I would go as far as ... Read more

Keep it simple, stupid

As something of a follow-up on my article on using boring solutions from two weeks ago I'd like to point you to a blog post by Justin Etheredge, cofounder of software development company Simple Thread: Software Complexity Is Killing Us In this post Justin outlines in which ways software development has become easier in the past few decades and also points out the ways in which it hasn't. Most of the complexity of software applications accumulates in the layer that deals with business processes. ... Read more

Use Boring Solutions

Often when working with both startups and project teams at larger, more seasoned companies I encounter a variation of the not invented here syndrome. This usually starts with the well-intentioned idea that in order to build the actual product you need ancillary services A, B and C in order for the product to work. However, more often than not instead of building the 'perfect' solution for your product yourself it might be a good idea to take a step back and think about ... Read more

Paying for Developer Tools

Recently, a user named amerkhalid wrote this on Hacker News (commenting on a question about the market for developer tools): Agreed. Developers are hard bunch to sell to. We go out of our way to find free tools and almost look down on people who use decent IDEs or other tools. One example, when I finally got legit license for Sublime Text, all of my friends made fun of me for paying for a free software. I replied by criticising this attitude (that ... Read more

Front-end / back-end isn’t a useful distinction

Answering a Hacker News Ask HN titled "Why companies look for “full stack” developers instead of specialists?" I wrote this: Front-end / back-end isn't a particularly useful distinction in my opinion. Differentiating between those 2 is just another way of creating information silos. I'm old enough to have experienced at least 2 full thin-client-fat-client cycles and I'm certain the current one won't be the last (at least it seems to have been a recurring pattern since the beginning of modern computer science). While ... Read more

Using Spring JdbcTemplate Instead of Object-Relational Mapping

Spring JDBC and Spring JdbcTemplate in particular has become my go-to tool for accessing relational databases for quite some time now and for good reason in my opinion: The common way for using data from an RDBMS in an object-oriented context used to be and for the most part still is object-relational mapping (ORM) frameworks like the Java Persistence API (JPA) or Rails' ActiveRecord. As the name suggests these frameworks attempt to map data (and concepts) from relational, set-oriented data structures, which ... Read more

The Art of the README

Just recently I was reminded about an obvious and vital but all too often neglected aspect of good quality software: Creating and maintaining a README file to both onboard new developers and to get users started with your software easily. While certainly essential in the context of open source software maintaining a high quality README is also relevant regarding proprietary / company-internal software that's limited to only a select circle of developers and users: It enables both your customers and internal users ... Read more

What Causes Over-engineering and How Can You Prevent It?

Last year software engineer Fagner Brack wrote an interesting and thoughtful article on "How To Accept Over-Engineering For What It Really Is" The article is very much worth the read in its entirety. There are a few key takeaways though I derived from it personally: I like the definition of over-engineering (quoted from Jeff Sternal) as "Code that solves problems you don’t have.". Fagner's conclusion is that what constitutes over-engineering depends on both context and the people involved. Over-engineering is usually brought about by unclear ... Read more

Design Patterns: Event Sourcing and Command and Query Responsibility Segregation (CQRS)

Event Sourcing and Command and Query Responsibility Segregation (CQRS) are system design patterns that allow you to deal with event streams in a consistent manner. Common line-of-business applications typically are built using the MVC design pattern with the database tables representing the model tier in MVC as the single source of truth for the application state. Event-based systems are different - and inherently more complex - in that their single source of truth is the stream of events that led to the current ... Read more

Interactive Flowcharts with code2flow

Visualisation often helps immensely when trying to understand complex systems and interactions. Visualising these systems and their behaviour can be a daunting task though: Covering each and every path a workflow or process might take can be quite arduous. In many cases it's not even possible to comprehensively describe a system that has not yet been implemented. Edge cases frequently only tend to surface once a software has been tried out under real conditions. Software in turn needs to adapt quickly, which all ... Read more
« Previous PageNext Page »