7 ms·
The weird part about programming is that it's possible to never attend a course, read a book (or especially an academic paper), and still be a very productive p
by okasaki 4y ago
The weird part about programming is that it's possible to never attend a course, read a book (or especially an academic paper), and still be a very productive programmer.
- deleted 4y ago[deleted]
- jll29 4y agoThe same is true for music. You don't have to study theory or composition to be a performing genius.
- tgv 4y agoIt does require an enormous amount of practice, though. And knowing some theory and having a good teacher helps.
- isitmadeofglass 4y agoYes, and the same is true with music.
- bakuninsbart 4y agoI think this is the case for most fields, self-learning as compared to university is always an option, but much harder and prone to error. One advantage of programming is that buggy code tends to be less consequential than a buggy bridge or a buggy surgery, and the cost of producing is incredibly low. You can test and play around as much as you like.
- affgrff2 4y agoAnd by that missing pieces that you seldom need and being far less productive as you could. All the while being considered very productive since everybody else does the same...
- blowski 4y agoFast and safe feedback loops supported by lots of freely available information.
- bawolff 4y agoThis is true of almost every field. Keep in mind that these papers are about studying programming languages themselves in a meta sense, not how to be the programmer. Like the difference between a literature degree and a creative writing degree. You can be a writer without a literature degree. You can be a painter without an art history degree. You can be a scientist without a degree in the philosophy of science
- credit_guy 4y ago> You can be a scientist without a degree in the philosophy of science Scientists generally have a Ph.D. degree in science. Although the Ph. in Ph.D. stands for philosophy, 99% of scientists don't learn philosophy, or even philosophy of science. That said, a scientist without a Ph.D. is a rare bird.
- smitty1e 4y ago"Philosophy" more in the literal "love of wisdom" for the topic sense than the ontology/epistemology sense.
- bawolff 4y agoI dont mean PhD's in science or degrees in "natural philosophy", but actual philosophy lf science. Philosophy of science studies what it means to do science in a meta sense. A PhD in science is how to actually be a scientist. This is a critical difference. The papers in the linked article are akin to the former not the latter.
- thesz 4y agoDefine productivity first. Also, even if one does not read books (or especially papers), he still will ask friends and colleagues about programming-related things. And those friends and colleagues may be avid readers of books (or especially academic papers). Even other's code can be considered derived from books (or especially academic papers). So this uneducated yet productive programmer is unable to escape reading literature by proxy.
- vario 4y agoAre you the famous Okasaki who wrote that great book on functional programming!
- deleted 4y ago[deleted]
- rTX5CMRXIfFG 4y agoProgrammers who don’t have the curiosity to go beyond scratching the surface write the worst codebases and make for terribly stressful coworkers, to be honest.
- d0mine 4y agoIt is not true. I worked with many programmers that were productive and never read any scientific papers. It is enough that somebody on the team (me) reads them and provides the corresponding perspective.
- rTX5CMRXIfFG 4y agoWell, what can we do? It's your experience versus mine, and you're in no position to tell me that my experience isn't true. Also the comment I responded to only mentioned books and courses, so I'm not sure that your reply is relevant. I certainly do not read white papers myself--don't feel smart nor motivated enough to do that--but I do read plenty of reference books and take courses on CS theory, which derive their content from white papers anyway, except that the information is presented in a more readable and pedagogical manner.
- d0mine 4y ago> your experience versus mine It is not how it works. A single counter-example is enough to refute your point. For simplicity (just the essence), imagine, you said: "I've never saw a white crow" (your experience) and I said: "I saw a white crow" (my experience). The conclusion that combines both: there are white crows.
- rTX5CMRXIfFG 4y agoYou’re conflating generalizations with universal statements.
- wittycardio 4y agoPeople who lack curiosity tend to be terrible programmers. Generally very confident though
- rramadass 4y agoThis is patently untrue. In as much as Programming is a means of expressing your thought forms to solve a problem precisely, your "productive programmer" would be quite limited in what he can actually do due to a lack of knowledge of what has already been systematized before. If you don't know something already exists you quite obviously cannot use it where it is most needed.
- julienchastang 4y agoYeah, I think some apriori knowledge on data structures, algorithms, big O, pass by reference, pass by value, etc. is going to be of strong benefit. I was once working on a legacy Java code base where the prior programmer employed an ArrayList for all of his data structure needs when other data structures would have been much more suitable. That was painful. That said, the long list of academic references originally posted may be of little practical value for most software developers.
- Jtsummers 4y ago> That said, the long list of academic references originally posted may be of little practical value for most software developers. In many cases because what they contain has been integrated (in whole or in part) into the normal order of business. Some of the big threads: Structured programming. Even C and C++ constrain their goto statements to the same function. Most other languages have similar constraints or limit them to things like named loops/breaks. So you'll learn structured programming just by learning anything but assembly or old-school BASIC and FORTRAN (where there is some structured programming, but also a lot of unstructured programming). Concurrency, Milner and Hoare's works have influenced many modern languages. CSP influenced or formed the basis of many modern concurrency systems. Go and Erlang/Elixir (anything on BEAM) are fairly mainstream languages that draw on it at least in part.ure* understanding of it because implementations aren't pure implementations of it for whatever reasons). Even many of the type systems stuff. Type inference is used by many modern languages, generics/polymorphism is also used by most modern statically typed languages. Even Go finally got on the generics train. So yeah, you don't need to study these papers to benefit from them, many (most?) modern languages are directly or indirectly influenced by them.