Five Cunning Traps To Avoid In Software Development

This article describes some of the key traps software developers often fall into when working on numerous client projects and provides tips on how to avoid them.

Imagine falling into a dip that's 10 feet deep and trying to crawl out of it by clinging to the edges and scrabbling on the surface. The chance is high that you'll eventually get out of the dip on your own. The same is happening in software development; however, the more traps you'll get caught in when working on a software development project, the deeper your dip and the slimmer the chance you'll get out of it without external help.

Metaphorically speaking, avoiding traps in software development is like walking along a very narrow pathway with challenges on the left and solutions (most of which are really absurd) on the right.

Trap #1: Code optimization

"Smartass" type of developers often gets trapped by paying too much attention to code optimization.

"Premature optimization is the root of an evil," Donald Knuth.

Their knowledge of efficient algorithms or processor's firmware makes them think that the code should be optimized in the best possible ways. As a result, they spend too much time on code optimization, and the code becomes nearly unmaintainable, unscalable and unstable for errors.

How to understand you're getting trapped?

However, when trying to avoid premature code optimization, some developers actually forget about it until the final stages of development. So, when trying to avoid falling into a trap of over-optimization, you may fall into a trap of under-optimization. When you shift your code optimization to the final stage, you're at risk of facing the following challenge: in order to increase efficiency up to an acceptable level, you'll have to re-write at least 1/3 of your already written code instead of just running a profiler and fixing a couple of isolated algorithms.

That being said, if you don't provide for code optimization upfront, brace yourself for having to delete a lump of your beautiful and clean code at a later stage.

How to understand you're getting trapped?

The Way Out:

Trap #2: Abstraction

In software engineering, abstraction is one of the best features. At first there were binary codes, then there appeared processor mnemonics, followed by imperative, structured, procedural, modular, object-oriented and functional programming.

Now imagine you still have to use goto to arrange a cycle. As such, you still need to generate similar functions that only differ in data types. And you can't just take and modify the size of your collection; you have to highlight a new memory chunk, copy your old collection in it, add a new element and release memory not in use.

Excessive complexity

Let's start with a trap when developer's attempt to abstract everything becomes absurd. Abstraction evangelists normally clutter 20+ classes, use 12 different patterns, create own DSL to parse another DSL, build a cross-platform framework for visualization of cyclic graphs and do other messy things.

How to understand you're getting trapped?

Too much of simplification

While experienced software developers normally like abstraction, rookies often ignore it and the best developers balance somewhere in-between.

Amateur developers are oftentimes unaware of many types of abstraction used in software engineering in general and their programming language in particular. Therefore, they usually write a very inexpressive code that would be easy to re-write using built-in tools or external libraries and frameworks. They think simplification will make project development easier and more effective.

How to understand you're getting trapped?

The Way Out:

Trap #3: Perfectionism

That's probably the most popular trap most of smart software developers fall into.

How to understand you're getting trapped?

As we know, chaos is reverse to perfectionism. What if you completely ignore your code cleanness, refuse from refactoring and turn off your common sense and critical thinking when solving issues? You'll most likely fall into another trap - messy coding.

Are you looking to hire IT professionals for your in-house project or build a remote IT team?
Let's talk!

How to understand you're getting trapped?

The Way Out:

As always, it's somewhere in-between.

Trap #4: New tools and technologies

Software programming is a dynamic and a rapidly developing space that currently provides thousands of tools, plugins and libraries aiming to simplify your work. However, some developers are taking advantage of them, while others are still inventing a bicycle. Let's take a look at these two cases:

Laziness

Of course, using existing frameworks and tools is a sign of laziness to a certain extent, but sometimes it can have crucial subsequences. For instance, simultaneous use of boost, Qt and STL when writing "Hello World" isn't the best idea, but such things do happen quite often.

How to understand you're trapped?

Workaholism

As the practice shows, fully ignoring programming legacy makes more harm than good. And it's perhaps one of the most dangerous traps for developers.

How to understand you're getting trapped?

The Way Out:

Trap #5: Magic Pill

Remember using a non-trivial solution on your project and literally falling in love with it? It's another trap many developers are at risk of getting into. Magic pill is referred to a habit of using a favorite method everywhere, even where it obviously wouldn't work. None of us is insured from falling into a magic pill (aka silver bullet) trap: someone may fall in love with object-oriented programming and create classes for every sneeze, while the other one may use design patterns and build a whole program with singletons and factories. For some, their programming language is a magic pill, for others - a favorite paradigm or a development methodology is a magic pill. The main distinguishing feature of this trap is an attempt to use the same tool always and everywhere.

How to understand you're getting trapped?

However, avoiding this trap is no rocket science.

The Way Out:

To be continued...

In part 2 of this blog post we'll address such software development traps as cross-platform development, secure and insecure programming, multitasking and more! Stay tuned with us by subscribing to our blog updates below or following us in social media!


 

Vik is our Brand Journalist and Head of Online Marketing / PR with 11+ years of international experience in IT B2B. He's also a guest blog contributor to Business2community, SitePoint, Journal of mHealth, Wearable Valley and other IT portals. You can contact him directly on LinkedIn.

Leave a comment