Quantcast
Channel: Coding Uncut
Viewing all articles
Browse latest Browse all 7

Defining the Craft of Coding

$
0
0

To describe something as a craft is to describe it as lying somewhere between an art (which relies on talent and technique) and a science (which relies on knowledge). In this sense, the English word craft is roughly equivalent to the ancient Greek term techne.
[1]

Craft: An occupation or trade requiring manual dexterity or skilled artistry. [2]

I talked to a friend about Coding as a Craft the other day and we worked out together that programming is taught very little all-in-all and that the teaching that is done is rather academic and not geared towards practicality.

Even more importantly, I posited, the majority of programming mistakes are made within 10 minutes of starting a project, and that it would be incredibly helpful to establish and convey best practices about those first 10 minutes (in no particular order):

General Skills

  • use of a suitable environment (editor, REPL, highlighting, lint, plugins, etc.) and good skills in using it
  • good knowledge of your language, libraries and frameworks
  • good knowledge of existing algorithms
  • use of a version control system
  • clear separation of prototyping, exploratory programming and production code
  • “Premature optimization is the root of all evil”

Problem-specific Skills

  • proper understanding of the problem
  • research of viable solutions
  • ability to apply your solution manually (where applicable)
  • implementing the first approach at the right level of complexity/abstraction
  • suitable choice of data types. good separation of logical modules
  • suitable choice of programming language
  • use of automatic testing and writing testable code
  • visualization of your program process/outcome

Other skills come in later in the act of programming

  • structured debugging skills
  • structured profiling skills
  • good use of deployment systems
  • regression testing
  • documentation of sources, algorithm, motivation, etc.
  • ability and willingness to refactor code
Craft of Coding crest

Craft of Coding crest

Of course this is a blanket list of arbitrary skills, but I will outline possible best practices for each of these in the coming weeks and would welcome your feedback.


Viewing all articles
Browse latest Browse all 7

Trending Articles