"Never settle for less than your dreams.
Somewhere, sometime, someday, somehow, you'll find them

- Danielle Steel, Bittersweet.

Get more Insight, Inspiration and Self Discovery at The Walkabout.

Saturday, October 25, 2014

How Locally Built, Custom Software Simplifies Life and Business

In association with Enfinite Solutions Ltd:

Whenever the word software is mentioned, computer programming comes to mind for many. It is true the two are closely related. They however mean different things.

Software and Computer Programming

Software is defined as any set of machine-readable instructions that directs a computer's processor to perform specific operations. On the other hand, computer programming is a process that leads from an original formulation of a computing problem to executable programs. Making software, or coding happens to be just one aspect of programming.

For the purposes of this article, the software we shall focus on is application software, specifically desktop applications. This particular class of software may be run on mobile devices such as tablets and smartphones. It is then commonly referred to as 'apps'.

Desktop applications use the computer system to perform special functions beyond the basic operation of the computer itself.

 Learning to Code

Computer programmers, or coders are usually thought of as the geeky geniuses with no social life to speak of, guys who stare at computer screens all day (even night) in the belief that code is poetry. A classic example is Neo in The Matrix.

That aside, what really goes into coding and becoming a competent computer programmer? Is coding easy, difficult, for the precocious or anyone can learn? "Learning how to code takes a long time. For anyone to become good in what they do, they would have to spend 10,000 working hours on what they are doing. After you clock the 10,000 hours which to some people equals 10 years, you can be called an expert. It's not easy but anyone can learn." Says George Njoroge, CEO and founder of Enfinite Solutions Ltd.

George's reference to Malcolm Gladwell's 10,000 hour rule prompts us to ask if there are some who are more predisposed to becoming adept faster. He adds, "it does come easy to those who think logically and are able to see different ways of solving a problem in a logical manner."

Given that many programmers loudly and proudly shout that they learned to code in their bedrooms, how effective is formal training in school or can one simply self-learn with the aid of resources available across the web?
"Though most people learn programming in school, school can only teach you the basics. From there, one would have to learn on their own. Programming learned in school is different from what we do in the outside world. The internet provides tools to learn and program so it's a very important tool." George says.

The Language of the gods geeks.

Any discourse about software is not complete without mentioning programming languages. According to Webopedia, a programming language is "a vocabulary and set of grammatical rules for instructing a computer to perform specific tasks. The term programming language usually refers to high-level languages, such as BASIC, C, C++, COBOL, FORTRAN, Ada, and Pascal."

It should be noted that all programming languages are not created equal. As such, not any computer programming language can do anything. There are limitations, and actually, different languages are used for different tasks. What then, are the most important languages for the aspiring programmer?

"Programming languages have changed a lot over the years. The most popular languages nowadays include: PHP, Ruby, Java, Javascript, C/C++, Python, among others. In our software applications, we normally use PHP, Javascript and SQL." George says. 

Local, Custom Software vs Generic Applications

Upon purchase of a computer, many people, especially college students fill them up with pirated software and other applications shared freely on the web and in local area networks.
This unfortunate scenario is often replicated in the enterprise market where pirated and often dubious software is used. This has seen stakeholders such as the Kenya Copyright Board and Microsoft wage war on software pirates.

Does it mean that locally made software is not competitive enough or not affordable? Do local software solutions present any unique benefit to make them favorable over generic software applications?

"Locally made software is just as competitive as off-the-shelf software. The two types have their place in the market as both offer different benefits. Locally made custom software better offers the ability of the software vendor to customize the software for what the client needs."

There has however been cases where local software is allowed to get out of date, with unpredictable release cycles, irregular updating and patching. Are local software makers able to change with the times?

"Business processes change a lot and for the software to be beneficial to the client for a long time, its modules and features will have to change with respect to the changing business needs. As such, a locally made custom software is best." George responds.

He goes ahead to counter the aforementioned frailties of local coders. 

At Enfinite Solutions Ltd for instance, and in response to changing business needs, we offer additional services which complement our software solutions business. We perform system audits and IT business consultancy, software training, set up call centers and manage call center software.

Challenges faced by local software companies

Despite all the advantages that local software brings, there are still challenges that software makers have to overcome to gain market share and win the hearts of local enterprises whose operations greatly benefit from use of software solutions. George lists the following are some of the issues Enfinite Solutions Ltd and similar companies have to contend with:
  • The sales cycle with enterprise software is sometimes long. One has to make their software unique so that it can be differentiated from competitors. This however extends the sales cycle as clients would want to first understand the uniqueness of your software before purchasing.
  • It is difficult at times to get an audience from the client you are trying to sell to.
  • Advertising is expensive and not many software firms are able to market their creations appropriately.
  • Some clients feel that the price of our software is high and they have limited budgets. They thus opt for cheaper alternatives which in most cases do not fully meet their needs.

Is programming and making software a viable business? 

Given the widespread application of local software, an ever growing market and the challenges highlighted above, what should an aspiring programmer or anyone keen on offering software solutions make of all this?

 "Do market research on clients' needs before developing anything." George immediately advises. He then adds, "find out how you will market your software before you build it, and don't wait until you have a 100% complete software program. All software is nearly always 80% done and invariably a work in progress. Have your first modules ready, then release them to the market for beta testing."

How about customer relations and the ever alluring temptation to be really good in all coding aspects and expert in all programming languages? At what stage should one specialize?
"Always try to meet deadlines that you have been given on various modules and projects." With clients, regardless of the nature of the business, it is your output and exceptional customer handling that makes or breaks you. Software makers should especially go to great lengths to put the end user first.

"Pick a technology and invest time in it. There is tremendous value in understanding the repetition of patterns across engineering domains, but you need to gain deep expertise in one before you can effectively do the same in others." Essentially, such advice underscores the Google philosophy of focusing on the user, and on doing one thing and doing it really, really well.

The insights shared by George above, in many ways capture David Ogilvy's advertising mantra which can equally be applied in other types of business. It can be summed up in the following principles:
  • creative brilliance.
  • research.
  • actual results for clients.
  • professional discipline.

* * * 
Note: The above article is written in memory of Idd Salim, a coder of great repute who passed on in September 2013.