11 ms·
> I write an average of five new programs every week. Poets have to write poems. I have to write computer programs. It seems more obvious now that I read it. A
by markarranz 7y ago
> I write an average of five new programs every week. Poets have to write poems. I have to write computer programs.
It seems more obvious now that I read it. A lot of programmers out there, including myself, are looking for ways to improve their skills and I never thought to myself to write more programs. And not just programs for the sake of programs, but programs that force you to explain to the computer that you understand certain concepts. This man is and will continue to be a huge inspiration.
- Kenji 7y agoIsn't it obvious that practicing your art is a prerequisite for improving your skills?
- deleted 7y ago[deleted]
- snazz 7y agoAs obvious as it seems, the advice really does apply to everything. I'm okay starting a bunch of projects and never finishing them, because I'm always learning something. When I do start a new project, I usually try ten or so different programming languages and environments to see which one is a good fit for the project. That said, there's certainly something to be said for finishing projects that you're proud of and getting to know one toolchain very well. A mix of both is good.
- 2OEH8eoCRo0 7y ago>The ceramics teacher announced on opening day that he was dividing the class into two groups. All those on the left side of the studio, he said, would be graded solely on the quantity of work they produced, all those on the right solely on its quality. His procedure was simple: on the final day of class he would bring in his bathroom scales and weigh the work of the "quantity" group: fifty pound of pots rated an "A", forty pounds a "B", and so on. Those being graded on "quality", however, needed to produce only one pot - albeit a perfect one - to get an "A". Well, came grading time and a curious fact emerged: the works of highest quality were all produced by the group being graded for quantity. It seems that while the "quantity" group was busily churning out piles of work - and learning from their mistakes - the "quality" group had sat theorizing about perfection, and in the end had little more to show for their efforts than grandiose theories and a pile of dead clay.
- taeric 7y agoWhat is this from. Love the general idea.
- tedkalaw 7y agoWar of Art. Solid book; picked it up after seeing this passage on HN hehe
- snazz 7y agoArt & Fear? It's also the third-highest-score comment on HN: https://hn.algolia.com/?dateRange=all&page=0&prefix=false&query=&sort=byPopularity&type=comment https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
- 411111111111111 7y agoyes, its from Art & Fear. The Art of War is unrelated but also form an insightful fella. more focused on adversarial confrontations than Art & Fear though
- taeric 7y agoSo, I have now put /War of Art/ and /Art and Fear/ in my queue. I also have a physical of /Art of War/ somewhere. I'm assuming that is a different thing, though.
- 411111111111111 7y agoyes, it is. no idea why i read Art of War before :-)
- taeric 7y agoI don't think you were alone in that. I stared at it for a while making sure I had it right. :D
- sherr 7y agoIt's the same with almost every creative endeavour. Painting as well as poetry and programming. Practice makes you better, even if the result is sometimes poor in isolation.
- lhorie 7y agoSomething that I found useful is taking the concept of katas from martial arts. Writing the "same" program multiple times, but trying to refine the parts I didn't like in the previous iteration (e.g. try writing in less code, with smaller functions, with less libraries, in a more testable way, etc). It's specially rewarding to do this exercise with utility libraries, as it teaches you about the nuances one abstraction level below (both in terms of learning what is possible but not exposed by the abstraction and in terms of learning what pitfalls exist). Many times I find that it's more elegant to drop down one abstraction level to accomplish something than to add more abstractions on top due to lack of understanding outside my primary abstraction level.
- runeb 7y agoThis concept of Code katas are well established. I learned it from the pragmatic programmer book [1] [1] https://en.wikipedia.org/wiki/Kata_(programming) https://en.wikipedia.org/wiki/Kata_(programming)
- Enginerrrd 7y agoI think this is a really high value endeavor and efficient use of time. It's the same way great writers learn how to write and produce great works.
- bbbobbb 7y agoWhat does it mean though? What programs? I can't write new programs at work where I maintain existing applications for the most part. What kind of programs, not for the sake of programs, can you actually write almost daily?
- gowld 7y agoWe're business application/infastructure maintainers, not programmers. It's a different world from Knuth's expressions of mathematical ideas. Outside of work, it's easy to write whole programs. Project Euler, LeetCode, etc. These are the kinds of programs Knuth is talking about -- example programs to illustrate algorithms from TAOCP.
- bbbobbb 7y agoI understand that but those don't fall into the "not for sake of programs" category. Under that category, I imagine something where the resulting program itself is of any, however minuscule, use to me.
- nickdrozd 7y agoI think what he has in mind are small programs that do some kind of nontrivial computation without much in the way of IO or UI. For example, [1] is a program from December 2019 that "finds n-bit binary squares that are palindromic". A great way to get into this kind of thing if you're stuck for ideas is to go through the Online Encyclopedia of Integer Sequences [2] and just write little programs to print out the first n entries or whatever for a particular sequence. As other comments have suggested, don't worry about making them perfect, just get the numbers right and then move on to the next one. [1] https://www-cs-faculty.stanford.edu/~knuth/programs/squarepal.w https://www-cs-faculty.stanford.edu/~knuth/programs/squarepa... [2] https://oeis.org/ https://oeis.org/
- Ragib_Zaman 7y agoAlong these lines, Project Euler is great.
- jasim 7y agoAfter Michelangelo died, someone found in his studio a piece of paper on which he had written a note to his apprentice, in the handwriting of his old age: “Draw, Antonio, draw, Antonio, draw and do not waste time.” (The Writing Life by Annie Dillard)
- danielscrubs 7y agoRemember that Knuth is/was a professor in mathematics and computer science, so he didn't spend his day coding, so for him it was beneficial to do something that complement the teaching and keep him grounded. What would complement yours? Maybe more of mathematics instead? Or design? Or economics?
- swiley 7y agoI misunderstood how to use git before college and used to commit everything to master, on GitHub you get this fancy flame graph when you do this and so it acted as a kind of “gamification” for me. I don’t think anything else has so dramatically improved my abilities as a programmer.
- david_w 7y agoI have a folder named "proofs" on my machine which is just this. About 1500 and counting little programs that demonstrate or prove that something works some way or another. The class name expresses the proven fact. When I find out I am wrong, I change the name of the class to reflect the correct understanding. I read through the names in my IDE when I need to know some detail about something I've forgotten.