April 8, 2012

10 Hard Truths Developers Should Learn to Accept

 

Like any other profession even a Programmer faces a lot of hurdles. From demanding Bosses to complicated parameters like security and flexibility, there are a many factors of the job that a programmer needs to beware of.



Programming is the cooler side of engineering, as considered by many, where programmers can play around with the algorithm and make the product sing and dance as per their wish. If your thoughts go the same way then its time that we get some reality check and get back to the hard ground of programming.



“The grass is greener on the other side”, the phrase is apt for all the non programming professionals who envy the work of programmers and the so called creativity that goes into programming. There is no doubt that there is a lot of innovation and creativity that goes into programming but it is in no way a job to kill for. There are some bitter and hard realities in the world of programming which can turn it from a job much desired to a job despised.



As many programmers, who work for the corporate programming firms would empathies, these are the 10 ground realities faced by programmers.

 

 



1. The most difficult task for a programmer is to think like a user



It is simply impossible. All the programmers try writing a code which is free of bugs and flaws, but no matter how hard you try, you just cant over come the bug called the User’s Mind. User’s can at times accidentally (or just for the fun) press a weird set of commands which can turn the flow of the code into a dead bind. This does not mean that the program is not well written, but is one of those inevitable problems that a program would eventually get into as nothing can beat the curiosity of the User’s playful and highly experimental thought process.


2. The Tale of a lot of Data

Internet is the most widely used commodity of the software family. But, what exactly is internet. Its nothing but a huge bunch of Data linked together. There is huge chunk of data lying around in the servers around the world. Internet, as the name suggests creates a mesh of all this data and makes it available on one single world wide network. So, all of you who imagined that there must be a magician somewhere making all this information available to you, think again and you would see that internet is like that meticulous register of an accountant. So, programming websites can be something like maintaining this register and linking all the relevant data so that they can be easily found.

3. Scope Creep can be Creepy

A programmer tries to make his code as perfect as possible, but as the cliché goes,” Nothing in this world is perfect”. The real challenge comes if the scope of perfection of the code is unstructured; this phenomenon is referred by programmers as the Scope Creep. Scope Creep occurs when the demand from the end result of the program is really high and is not intimidated to the programmer at the beginning of the programming process. It is very likely that last minute changes are forcefully inflicted into codes just because the management team notices a scope for improvement, which might be completely insignificant from the programmer’s point of view.

4. The unused code

From the perspective of a quality analyst, every part of the program must work perfectly and to the fullest extent. Most of the applications available are fully loaded with sophisticated features. A lot of the code in the program goes unused and the hard work done by the programmer goes in vain, as users do not use all these available features of the software.

5. All About the If and Else

There are many attributes to programming, and they are very interesting and intriguing. Does a programmer use all of it? Well to be frank, programming is all about ifs and else. If and else statements are the base of any programming language and are the most frequently used logical factors. A strong sequence of logical branching statements leads to a strong set of codes.

6. Simplicity vs. Security

Users demand to keep their information and uploaded data secured and creating a code which maintains a balance between these parameters can be a tedious and nerve racking job.Security calls for a lot of clearance like password and other credentials. But, the user gets annoyed if he is asked to type in the credentials on every click. So, users demand security but not at the cost of simplicity.

7. The Promises of Web 2.0

It is a hard job to start any program from the scratch, so most of the programmers like to use ready made templates of programs and logics. Web 2.0 lets programmers merge their codes with the ones which are already out there on the net. Sounds very tempting but the process is highly complicated and can at times take a long time as a grant from the firm that owns the patent to the template is required. Why would they provide you the code and who knows what you are going to use it for.

8. Rotten Bits

In Hardware programming when a particular component is not used for a long time, various factors like temperature etc. can possibly alter the program, this phenomenon is called Bitrot. In Software programming the same thing happens when a particular part of the code is not used for a prolonged duration. These dormant components can end up malfunctioning when used later, as the active components of the program constantly make changes to the way the program behaves. Hence, Bitrot is capable of causing fatal errors to the program and is not controllable as all the sections of the application might not be used by the users.

9. Mystery Sells

Openness and flexibility in programming is usually overhyped. Many companies who brag about openness in their programs usually have an underlying feature that is untraceable. These applications which are highly secretive about their technology are the once which flourish.For instance, while most of the Linux applications are open source, the underlying codes of their attractive GUI are still a secret.

10. Bosses never Understand

No matter how much effort a programmer puts in to develop the program in the most efficient and effective manner, the Boss will never understand the amount of effort going in and would always concentrate on the deadlines and other likely constraint which sound insignificant to programmers. That is something which cannot be conquered considering the Boss’ point of view.