I believe that in any trade or culture,field or an endeavor,to be called a master or guru you should have mastered certain skills or practices.

The same goes for software development to be called a great developer you  should have mastered certain skillsets that enable you to be more productive and add value to your organization or team.

Today i will touch on a few of the things that i feel are very important to know or master as a software developer.

This post is aimed at specially new developers who feel overwhelmed with the amount of things they have to tackle or learn to be productive or effective as a software developer.

Today i will tackle five things i feel are very important to master as a software developer.


1.Data Structures

Google defines a data structure as a specialised format for organising and storing data.

In layman’s terms, a data structure is simply a data container.

Examples of data structures include arrays,linked lists,dictionary,record or struct,a class…etc

I think every developer should have extensive knowledge of data structures because data structures impact the performance of an application.

This is one area where most self-taught programmers fall short,but that’s one area big companies like Microsoft and Google put emphasis on when interviewing with them.

Here are few advantages of data structures:

1.Allows easier processing of data.

2.Are necessary for design of efficient algorithms.

3.Provide means for management of large dataset such as databases or internet indexing services.



Algorithms are usually covered together with the data structures,personally i think that way of mixing the two downplays the importance of algorithms.

An algorithm  is a self-contained step-by-step set of operations to be performed. Algorithms perform calculation, data processing, and/or automated reasoning tasks.

In simpler terms an algorithm is a recipe one follows to solve a computational problem.

Just like data structures algorithms impact the performance of an application.

I won’t dwell much on this as it is a broad topic,if  you need more information check out sites like or Khan academy and also Pluralsight they have great resources on algorithms


3.Source Control

Git is “the” thing nowadays,every developer talks about it.

It is one of the many source control technologies out there,so as a developer there is no running away from it,you have to master it one way or another.

So what is  source control software?

It is A component of software configuration management, version control, also known as revision control or source control, is the management of changes to documents, computer programs, large web sites.

Examples of source control software include Git,Mercurial,Bazaar,Monotone and others.

Advantages of using version control include:

1.Automatic backups: If you accidentally delete some file (or part of a file) you can undelete it. If you change something and want to undo      it, the VCS can do so.

2.Sharing on multiple computers: VCSes are designed to help multiple people collaboratively edit text files. This makes sharing between    multiple computers (say your desktop and laptop) particularly easy. You do not need to bother if you always copied the newest version;  the VCS will do that for you. Even if you are offline and change files on both computers, the VCS will merge the changes intelligently once  you are online.

3.Version control and branching: Say you published some class notes as a pdf and want to fix some typos in them while simultaneously    working on the notes for next year. No problem. And you only need to fix the typos once, the VCS will merge them to the other versions.


4.Integrated Development Environment(IDE)/Code Editor

I believe a serious developer has to learn and master at least one IDE to improve his productivity.

What is an IDE?

An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a source code editor, build automation tools and a debugger.

The reasons i recommend learning an IDE are:

1. Less time and effort: The entire purpose of an IDE is to make developing faster and
easier. Its tools and features are supposed to help you organize resources, prevent
mistakes, and provide shortcuts.

2. Enforce project or company standards: Simply by working in the same
development environment, a group of programmers will adhere to a standard way of
doing things. Standards can be further enforced if the IDE offers predefined
templates, or if code libraries are shared between different team members/teams
working on the same project.

3. Project management: This can be twofold. First, many IDEs have documentation
tools that either automate the entry of developer comments, or may actually force
developers to write comments in different areas. Second, simply by having a visual
presentation of resources, it should be a lot easier to know how an application is laid
out as opposed to traversing the file system for arcane files in the file system.


5.A Framework

A software framework is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions.

In simple terms a framework is acts as the skeletal support to build an application.

Every developer has to master a framework which is directly related to his line of work.I encourage developers to master a framework for the following reasons:

  1. The biggest advantage of the software framework is that it reduces the time and energy in developing any software.

  2. Frameworks provides a standard working system through which user can develop the desired module of application or complete application instead of developing lower level details.

  3. Using frameworks, the developers can devote more time in developing the software requirement, not in preparing the environment and tools of application development.

  4. Framework follow design pattern, so when you use these frameworks you’ve to follow their coding convention which makes your code clean and extensible for future purpose.

  5. Framework separates business logic from user interface making the code cleaner and extensible.

  6. Frameworks help you to develop the project rapidly, if you know one framework well then you’ll never worry about the project deadline.

That’s it for this week folks,i know the list could be extended but tried to make it short as it was going to be a long post but please feel free to add to my list.

and don’t forget to leave your comments below.

Thami signing out!!!


%d bloggers like this: