3 ms·
What makes programming so unique? Why cannot we generalize? I think most of the same conclusions apply to teachers, lawyers, salesmen, marketers, architects,
by dimitar 16y ago
What makes programming so unique?
Why cannot we generalize?
I think most of the same conclusions apply to teachers, lawyers, salesmen, marketers, architects, physicians, nurses, engineers and scientists, whatever.
Wherever knowledge is valued in a job and there are intricacies lots of research, smart planning and thoughtful execution with a great commitment is going to make the worker a lot more productive.
- j_baker 16y ago"What makes programming so unique?" Programming isn't necessarily unique any more than any of the fields you mention are unique. "Why cannot we generalize?" ... but here's where you're stretching it a bit. I agree with you that programming isn't as unique as a lot of these blog posts make it out to be. But there's no ignoring the fact that different fields have different requirements. For example, I don't think that a good programmer necessarily has the skills to be a good teacher (unless it's a computer science teacher, and even then it's debatable). Computer science involves translating logic into code. Teaching requires you to make logic suitable for people less educated than yourself to understand. That's not to say that a good programmer couldn't learn to teach or vice versa. It's just that they're orthogonal skill sets.
- jamesbritt 16y ago"That's not to say that a good programmer couldn't learn to teach or vice versa. It's just that they're orthogonal skill sets." In college (for my CS degree) I had to take a technical writing class. I loved it. I knew next to nothing about the field when I started, but soon found the idea of translating complex ideas and concepts into more easily understood formats quite intriguing. It was, in some ways, much like programming. I came to appreciate how hard it is for some people to understand some ideas (a point later reinforced when I started tutoring), and learned ways to improve descriptions and presentation. It seemed to me that if you are involved in some geeky tech field it behooves you to learn how to communicate with Earthlings. Bizarrely, when it came time to pick a minor, my counselor made a comment to the effect that with a CS major I should be looking at, oh, a EE or ME minor sort of thing. Not something out in left field, such as tech writing. I hadn't yet told him that in fact that was the minor I was going to pursue. :) Well worth the time and effort; if you have great ideas but cannot adequately express them, you're losing.
- powrtoch 16y agoPeople can say things like "lots of research, smart planning and thoughtful execution with a great commitment", and believe in it as a general principle, without applying it or even knowing how to apply it to themselves. A lot of these do translate in some way to more general rules, but I still think it's helpful to have targeted insights. "Planning is good. For you this means think before you code, make apps easy to maintain and scale, avoid hacks, etc." Without that a lot of people will fail to notice the connection to their specific activities.
- yummyfajitas 16y agoProgramming isn't unique in the set you list, but it is unusual. Engineer, scientist and programmers are probably in an unusual situation - they are exploring a primarily unknown solution space. Most jobs live in the well explored, primarily understood areas of solution space, and consist of simply applying already known solutions repeatedly. Teachers, doctors (mostly) and most nurses just perform a set of rote tasks of varying complexity. The best way to improve performance in these fields is to write a script/checklist/decision tree and order everyone to follow it. (In the case of doctors, I exclude a few at the very high end. Most doctors are not House.)
- jacquesm 16y agoI'm with you on the scientist and the programmer, but the whole purpose of engineering is to work explicitly within the known solution space to be able to guarantee the outcome of their work. Engineering is applying the lessons of science to achieve predictable results.
- yummyfajitas 16y agoYou are applying the term "solution space" in a manner I didn't intend. It's certainly true that an engineer isn't discovering new physics, just as most programmers are not discovering new complexity classes or doing fundamentally new CS. A good chunk of engineering consists of applying existing physical principles in new ways. Of course, there are engineers building yet another overpass/HVAC/etc just as there are programmers building yet another CRUD app, or scientists sequencing the DNA of yet another bacteria. And now that I think about it, they may make up the majority. In that case, most pf programming is not so special at all.
- rlpb 16y ago> Engineer, scientist and programmers are probably in an unusual situation - they are exploring a primarily unknown solution space. This depends on what you are doing. Some programmers are exploring a primarily unknown solution space, and the best programmers probably self-select as this is difficult. But the vast majority of programmers are busy applying the same well understood techniques to different problem domains.
- atlei 16y ago"What makes programming so unique?" E.W.Dijkstra, "The humble programmer", ACM Turing Lecture 1972 "Let me conclude. Automatic computers have now been with us for a quarter of a century. They have had a great impact on our society in their capacity of tools, but in that capacity their influence will be but a ripple on the surface of our culture, compared with the much more profound influence they will have in their capacity of intellectual challenge without precedent in the cultural history of mankind. Hierarchical systems seem to have the property that something considered as an undivided entity on one level, is considered as a composite object on the next lower level of greater detail; as a result the natural grain of space or time that is applicable at each level decreases by an order of magnitude when we shift our attention from one level to the next lower one. We understand walls in terms of bricks, bricks in terms of crystals, crystals in terms of molecules etc. As a result the number of levels that can be distinguished meaningfully in a hierarchical system is kind of proportional to the logarithm of the ratio between the largest and the smallest grain, and therefore, unless this ratio is very large, we cannot expect many levels. In computer programming our basic building block has an associated time grain of less than a microsecond, but our program may take hours of computation time. I do not know of any other technology covering a ratio of 1010 or more: the computer, by virtue of its fantastic speed, seems to be the first to provide us with an environment where highly hierarchical artefacts are both possible and necessary. This challenge, viz. the confrontation with the programming task, is so unique that this novel experience can teach us a lot about ourselves. It should deepen our understanding of the processes of design and creation, it should give us better control over the task of organizing our thoughts. If it did not do so, to my taste we should not deserve the computer at all!" Edit: http://userweb.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html http://userweb.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD...
- extension 16y agoProgramming is the first discipline that is not subject to certain fundamental limitations intrinsic to many other fields of work and, as a result, has revealed new fundamental limitations that nobody has ever encountered before.