Japheth Obala

Software Engineer


Learning Vim

I started using Vim to look cool but kept using it for its simplicity, speed, lack of distraction and how it feels like an extension of my psyche when using it. The editor has acquired taste properties and when you go Vim you never go back. This article is about my ups and downs mastering Vim. I came across Vim around the same time I was starting out as a programmer in 2014.

Read more...

Open Closed Principle

A system’s design is rigid when a change in requirements leads to a cascade of changes in the software. The open closed principle is the antidote for rigid software designs, when implemented properly it makes the software system flexible. It is the principle you should know. The principle states that software entities – modules, classes, functions – should be open for extension but closed for modifications. For a module that conforms to this principle it should be possible to add new features without modifying the module’s source code or binaries.

Read more...

Single Responsibility Principle

I used to think the single responsibility principle means that a module should only do one thing, this is a common misunderstanding of the principle and often leads to fragmented codebase with thin classes that have one or two methods littering the codebase as we can see in this StackOverflow. While researching about the subject, I came across SRP is a hoax which in my opinion embodies the misunderstanding of the single responsibility principle.

Read more...

Humane Software

Learning about design thinking has been eye opening, it changed how I view software products and made me realize that all software is not equal. There’s humane and inhumane software. Humane software caters for human need and inhumane software exploits human need. The two categories naturally lead to different kind of software companies. Humane companies make humane software and the opposite is true. However, more companies tend to be in the middle.

Read more...
1 of 1