Why Care About Design Principles?

“The computer industry is the only industry that is more fashion-driven than women’s fashion” – Larry J. Ellison (CEO of Oracle) Technology is changing more rapidly than ever before – with old buzzwords getting quickly replaced by new ones (do you still remember buzz words like “grid computing” and “semantic

Continue reading »

How Debugging Can Result in Bugs!

We typically debug code to find and fix bugs. However, debugging itself can cause bugs!   Consider the following simple Java example which I recently encountered: Logger.log(“Skipping undefined data type: ” + dataType.getCategory().toString( )); This was a debugging code to print log message that was meant for tracing what was going wrong

Continue reading »

Common (and Uncommon) Smells in Java Code

  Smells are structures in code that violate design principles and negatively impact quality. Here are some of the bad smells in Java code. 1. Constant Interface. Constant interfaces have only static final data members declared in them without any methods. Suggested refactoring for this smell depends on kind of constants present in the constant

Continue reading »

Manual design reviews are effective in finding smells in design. Use this checklist when you are reviewing UML diagrams (mainly class diagrams) or code. Abstraction 1. “Encoded strings” or “clumps of primitive types” are used instead of an abstraction (i.e., a class or an interface) 2. There are one method classes

Continue reading »

DevOps: A Gentle Introduction

DevOps is an abbreviation for Developers and Operators (i.e., bringing developers and operators closer), but DevOps is much more than that: “DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high

Continue reading »

Algorithm Strategies for Success!

Recently I was creating study material on algorithm strategies (in computing). While preparing, I realized that algorithmic strategies can be mapped to success strategies for life! Hmm, that’s really an interesting perspective and can make for a fun thought experiment. So, here we go. Brute force strategy Trial and error

Continue reading »

Are you a tech dinosaur?

  We all admire dinosaurs. They were strong. They thrived in their environments. They ruled the world. But they also went extinct! There are many theories about the extinction of dinosaurs. One popular theory is that, as the world around it changed, they could not quickly adapt to the changing

Continue reading »

Great Coding Skills Aren’t Enough!

I have been fortunate to have worked with some geeks with incredible coding skills. I felt amazed at how they can play games with compilers, perform magic with their incantations on the shell, and solve some insanely complex algorithm problems with ease. I naively assumed that they are going to

Continue reading »

Fantastic Books and Where to Find Them

“An investment in knowledge always pays the best interest.” – Benjamin Franklin. There is so much change happening around us, especially in the world of computing. Like never before, we have so much computing power at our disposal. We have connected most of the human beings through technology (mobiles and

Continue reading »