The most important characteristics of a programmer

desk, computer, macThe very long list of programming mistakes is so simple it hurts, and Mars Climate Orbiters is in the top of this list. Even the software that is checked and tested lots of times and makes it to the Mars has bugs. It is one more instance that proves it is impossible to have a software completely, totally, 100% bugless.

Let’s imagine the fullest testing suite. Even in this case, it includes a limited amount of all probable paths like any other application. It is just impossible to make it without bugs, as the situations and paths of its usage are endless, but the application processes can work with a certain rules and mechanisms.

Including that the process of verification is disproportional to its falsification, inductive programming here fails to prove anything, as there can be infinite amount of app validity, and only one fail is enough to claim the app is invalid. The main trouble is to find out the conditions accompanying the failure, and it is impossible to ensure such conditions don’t exist. It is beyond attainment to test all the combinations, variables, and execution ways.

Even though there is a huge number of apps that fail due to tiny bugs, lots of programmers still believe they can provide applications without bugs, errors, and other fails. Every time we face a similar concept, we clearly understand the person in front of us has an inflexible, experience–lacking viewpoint, who tries to sell at least something.

Now, try to understand this sentence: the most important skill of a good programmer is to understand when the unfinished and incompetent parts of the code have reached the point that will be invisible or at least acceptable for the clients or users during the work with this code. Yes, this statement sounds bold and weird; however, this is the bitter truth of developers. Those professionals, representatives, and programmers that state they can provide error–free code that works can be divided into two groups. The first group is lying; the second group doesn’t know it yet or hasn’t ever written a line.

Speaking about software that is practical, functional, and worth our time, it is so complex that even advanced teams of quality assurance cannot state this or that app is 100% valid. The exception is only the primitive codes. The main thing is for the senior developer to catch this moment and make a decision that this app has reached the point when it can work and function up to the expectations and needs of users. There is a certain period after users will find some bugs and errors that will be considered and fixed up to the next release. The right strategy for software of good quality is to fix bugs every now and then, regularly perfecting their product according to the feedback of their audience.

But perfecting the code without proper feedback on the level when the app can normally operate brings only the effect that postpones accomplishing the code. It is a trait of inexperienced programmers, who haven’t realized that development isn’t followed by strict rules and doesn’t have an exceptional structure. It is not a simple equation, where you do everything right and get something right. It involves tons of hard work, skills, and inner feel. It is a creative process that includes science.

No matter which purpose your app serves, it is important to understand the very moment when the app can be utilized with convenience for your users. Making a decision that the application is efficient and all the bugs that appear can be fixed with a new release is the most important feature of the software developer. Namely, the ability to make this decision and the right time to make it are the things that matter.

Continue reading about Technologies