From hacker to programmer
Completeness

The difference between hacking and developing software might lie in the quality of testing and documenting projects.
A friend of mine who runs a free software consulting business was lamenting that when he asks his engineers if a project is "finished," they often reply "yes." Yet when he goes back to check the work before invoicing the customer, he finds no or inadequate documentation, no evidence of quality checking, and no communication with the developers of the original source code for inclusion of the changes to the software. In short, the work amounts to a quick "hack" instead of a finished work.
Unfortunately, this happens a lot with software developers, and often those who are hired from "the community." Used to working on smaller projects in which "the code is the documentation" or for end users who do not pay a lot of money for working software, they do not have the experience or rigor necessary for larger projects or commercial code production.
With the very best programmers, projects start before the code is written by making sure that the requirements of the customers are well understood. Timelines are written for the work process, which includes time and resources for quality assurance and documentation. Afterward the design is considered, the code is written, and then the "real work" starts.
Quality Assurance
Quality assurance (QA) has to be done, even for the smallest change or program. Most of the time this kind of testing is best done by someone other than those who wrote the code because QA testing by programmers is tainted by their views of what does and does not need testing and their belief in their own programming skills. Also, a different person might create test cases far outside those test cases programmers would create for their own code.
Documentation
Documentation is another example in which another person with different skills and viewpoints might do a better job than the original programmer in creating usable documentation for new code (or changes to old code). Documenting the "intuitively obvious" is often what makes the difference between usable documentation and documentation that is of no use at all.
In cases of QA and documentation, the programmer has to create detailed "bullet points" to tell the QA and documentation people what has changed and how those changes affect the previous code and to suggest what needs to be tested and documented. Later, the programmer and project leader should review the QA tests and test results, as well as drafts of the documentation.
In smaller companies and projects, the same person might do the programming, the documentation, and the QA, but those actions have to be done. On the other hand, this is where "Free Software" can really leverage off the use of community members.
Calling on the Community
Many times I hear the lament of end users saying, "I cannot help because I am not a programmer." Yet these same people might be good writers or (assuming the developers tell them what has to be tested) good testers.
With the use of modern online collaboration tools such as wikis, for example, there's no reason why end users of Free Software could not contribute to good documentation. If you read a section of the documentation on a wiki and you do not understand it, once you figure out how the software works, try editing the online documentation to make it clearer.
If, as a customer or user of Free Software, you are following a particular project and like what the programmers are doing, try testing new releases of the code, concentrating on testing what the programmers have changed, as well as the overall functionality of the system. Yes, this might require that you learn how to use a problem-reporting and tracking system, but learning that problem-reporting system is part of your contribution to Free Software.
Interestingly, when dealing with some "professional" closed source companies, you have to PAY for the "privilege" (sometimes as much as US$ 500) just to submit a bug report, much less get any bug fixes or workaround advice.
Of course, team leaders or project managers are the ones ultimately responsible for the overall quality and "completeness" of the program. They should explain the ground rules for developing code inside of their projects as each programmer starts and that those rules include a high standard of testing and documentation.
I told my friend all of this as he was still shaking his head about his own company. He said that he would have a talk with his programmers about creating world-class software. I mentioned that I would write this article, and perhaps his job would be easier.
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.
News
-
The GNU Project Celebrates Its 40th Birthday
September 27 marks the 40th anniversary of the GNU Project, and it was celebrated with a hacker meeting in Biel/Bienne, Switzerland.
-
Linux Kernel Reducing Long-Term Support
LTS support for the Linux kernel is about to undergo some serious changes that will have a considerable impact on the future.
-
Fedora 39 Beta Now Available for Testing
For fans and users of Fedora Linux, the first beta of release 39 is now available, which is a minor upgrade but does include GNOME 45.
-
Fedora Linux 40 to Drop X11 for KDE Plasma
When Fedora 40 arrives in 2024, there will be a few big changes coming, especially for the KDE Plasma option.
-
Real-Time Ubuntu Available in AWS Marketplace
Anyone looking for a Linux distribution for real-time processing could do a whole lot worse than Real-Time Ubuntu.
-
KSMBD Finally Reaches a Stable State
For those who've been looking forward to the first release of KSMBD, after two years it's no longer considered experimental.
-
Nitrux 3.0.0 Has Been Released
The latest version of Nitrux brings plenty of innovation and fresh apps to the table.
-
Linux From Scratch 12.0 Now Available
If you're looking to roll your own Linux distribution, the latest version of Linux From Scratch is now available with plenty of updates.
-
Linux Kernel 6.5 Has Been Released
The newest Linux kernel, version 6.5, now includes initial support for two very exciting features.
-
UbuntuDDE 23.04 Now Available
A new version of the UbuntuDDE remix has finally arrived with all the updates from the Deepin desktop and everything that comes with the Ubuntu 23.04 base.