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.
[...]