5 ms·
> (A programmer does not primarily write code; rather, he primarily writes to another programmer about his problem solution.) An obvious concept that can so ea
by superJimmy64 10y ago
> (A programmer does not primarily write code; rather, he primarily writes to another programmer about his problem solution.)
An obvious concept that can so easily be forgotten at times.
- astrobe_ 10y agoNot so obvious. I have a couple problems with this statement. The first is that it confuses programmer (as in "coder") and developer (as in "designer"). But maybe that distinction didn't exist yet. To me, a programmer/coder is actually a translator - they translate the solution expressed in the specification of a program into a computer language (which is typically itself translated to machine code by a compiler). In reality, gaps in the specification or impedance mismatches between the specification language and the computer language can "force" a programmer to become a designer. In a way, one can still see this as a translator having to translate an idiomatic expression. The second problem with this statement is the same as with "readability": it is very subjective. That's why another claim in this text, that incomprehensible code written by bad programmers dies early, has been proven false in practice. Readability and viability are in practice separate concerns. For instance, highly optimized code is often less comprehensible than naive code yet it is more viable because the extra efficiency is required. Furthermore, human to human communication using a computer language is more or less efficient depending on the distance between then computer language and natural language; as an extreme example, it would be terrible to communicate using assembly language. So the H2H communication problem is better solved with documentation. That is, comments if we speak strictly about computer code. Now the question is: if comments solves the human to human communication problem, why would one has to write more comprehensible/readable code? To me the answer is: you don't write comprehensible code in order to better communicate with your fellow programmers, you write comprehensible code because you write the simplest possible code. It is comprehensible because it is simple, not because of the additional requirement that it has to be understood by someone else.
- jasonkostempski 10y agoIs there really 2 roles there? Who wants to design but not code or code but not design? I can't really imagine how you could even do either well without doing the other.
- douche 10y agoYou apparently have not encountered the "architecture astronaut" archetype[1]. Your final sentence stands; usually they can't. [1] http://www.joelonsoftware.com/articles/fog0000000018.html http://www.joelonsoftware.com/articles/fog0000000018.html
- vonmoltke 10y agoThe issue with "architecture astronauts" is that most problems in software just aren't complex enough to warrant formal design. The core failing of these people is that they impose unnecessary design complexity in order to force the design to be complex enough to warrant formal design. If the problem is inherently complex enough, particularly if it is multidisciplined, than it is the correct approach.
- auxym 10y agoIt sort of reminds of mechanical engineering, where engineers sketch out the problem solution, do the calculations, and make sure the solution works. Then, they supervise drafters or technologists to produce the actual final product of engineering, drawings (2D/3D, paper/CAD, whatever). Of course, that's in larger orgs. Smaller places will typically have an engineer doing everything.
- vonmoltke 10y agoOf course, there is overlap there. Technician->engineer used to be a fairly common career path.
- vonmoltke 10y agoSee proper engineering and the distinction between an engineer, a technician, and an assembler. There is overlap, of course, but designing and producing the product is a collaboration between all three. The engineer is primarily responsible for designing the system, the technician for helping the engineer translate the design into a realized system, and the assembler for actually realizing the system.
- Jtsummers 10y ago> To me the answer is: you don't write comprehensible code in order to better communicate with your fellow programmers, you write comprehensible code because you write the simplest possible code. This is covered in the essay. > It would appear all good programmers attempt to do this, whether they recognize it or not. By writing the simplest code possible you are working on communicating with other programmers (including your future self).
- wtetzner 10y ago> By writing the simplest code possible you are working on communicating with other programmers (including your future self). Yes, the computer really doesn't care if your code is simple.
- autokad 10y ago"Now the question is: if comments solves the human to human communication problem, why would one has to write more comprehensible/readable code? To me the answer is: you don't write comprehensible code in order to better communicate with your fellow programmers" I strongly disagree with that statement. coders spend more time reading code than coding it. being fast & bug free is important, but its not the only reason to write readable code, and simple is only one proxy for readable code. also important is following standards, easy to follow flow, choosing good variable names, etc. sometimes a day for me is spending 6 hours reading code, and then maybe adding or changing one line.
- astrobe_ 10y ago> simple is only one proxy for readable code No, simple isn't a proxy for readable code. One can write in a readable manner a complex solution to a problem, but it isn't always right (using other "proxies" isn't, either). It isn't always right because it's "a complex solution to a problem", not "a complex solution to a complex problem". What you made readable might even be "an overly complex solution to an actually simple problem"; meaning - to put it bluntly - that you have inadvertently spent your precious time on putting lipstick on a pig.
- autokad 10y agoI didnt say simple was the only proxy, just that it is one. if you are at odds with that, then take it up with pretty much all the greatest minds in computer science.