8 ms·
How is something as frivolous as taking notes while programming, which many people do, worth a blog post and a mention here on HN? Let alone turning it into som
by mosselman 8y ago
How is something as frivolous as taking notes while programming, which many people do, worth a blog post and a mention here on HN? Let alone turning it into some dogmatic principle to work by, by calling it 'log driven' programming. What is next? Keyboard driven programming? 3-monitor-driven programming?
I do this:
While programming it pays off to stop and think about the code. I call this, thought driven programming.
- jacobush 8y ago"Common sense is not so common." - Voltaire
- DanielBMarkham 8y agoYep. One of the (painful) things I learned and continue to learn once I got into tech coaching is how much stuff we do without thinking about it. It gets into muscle memory and it's gone, as it should be. This is one of the reasons mobbing is so successful -- and why it doesn't make a lick of sense to anybody who codes for a living. So no, there's no level of detail here that I think would be too much. (It may or may not belong on HN, and there's a question around how to organize this detail so that it's useful for folks, but those are different questions from whether or not it has value)
- swah 8y agoYep. I like books like this https://www.amazon.com/Effective-Engineer-Engineering-Disproportionate-Meaningful/dp/B01N4HXVWH https://www.amazon.com/Effective-Engineer-Engineering-Dispro... for this reason. 1-star commenters will say they learned nothing new, while 5-star commenters will be happy they found knowledge from experience enginners in (kinda compact) book form...
- DanielBMarkham 8y ago(I swear I'm not trying to plug anything) It's weird. I did a blog series "Program F# like a stupid person". My point was 1) everybody makes mistakes, and 2) with the right attitude, you can plow through and make really cool complex solutions for folks. You just have to stick with it. I don't think it was very popular. For the internet crowd, who only only have ten seconds to skim the material, "Program F# like a stupid person" became "Stupid person programming F#". It was just far, far too easy not to grok it. There are those 1-star folks. A few did. Maybe 10%? Out of maybe 300 readers I got 6 or 7 people who absolutely loved it. 50 or 60 got it but didn't need it, and the vast majority didn't like it. They thought it was a Bad. Thing. They wanted tech porn. "New cloud-based logging app processes 14 Trillion records per nanosecond! Now with graphs!". That's their kind of story, whether or not they're processing one record per hour or not. It just feels cool. I get it. I would love to find a way to cut through that noise and help people. I've thought about twitch, but that almost seems too unstructured. There's a way of organizing and presenting this material that I haven't mastered yet. It'll be fun to figure out.
- Uberphallus 8y agoI type while programming, I call it typing driven programming, it's part of the Voltaire family of programming methods.
- onion2k 8y agoOver the past 20something years of being a developer I've found there are a lot of things that seem obvious to me now that junior developers don't do by default. Looking back I wonder when I started doing all these obvious things. Presumably, if I didn't discover them myself, it was when I was told about them or I read about them. If no one is writing these "frivolous" things down then how will juniors learn? If this helps a few new devs who don't have access to a good mentor (because, say, their mentor makes assumptions about what's obvious..) to tell them about this idea then it's automatically a useful post.
- chatmasta 8y agoThe best habit that any developer can have is reading code. It’s shocking how few devs spend time reading code; whether the code is from library dependencies or entirely unrelated third party projects, I always learn something new just by reading it. Not every developer is blogging their best practices. If you want to see them and learn from them, the best place to look is in the code. Honestly I think we should be reading at least 10x the amount of code we write. For every novel an author writes, how many novels do you think they read? Certainly more than ten. Why shouldn’t we do the same? In a world awash with open source code, there is really no excuse not to be reading as much of it as possible.
- Ntrails 8y agoThere are two interesting parts to reading code. - Working out what it actually does, and why - Working out why somebody *wrote it in that way* The former is usually not too bad. Occasionally there will be a comment to help with the latter (although rarely ime). The latter is basically impossible. I can ask 3 other devs, they'll all disagree. Some like the style, some hate it. Each will complain about different aspects, and none of them would write it quite the same for ~reasons~ Maybe it's just me vOv
- henrik_w 8y agoNot sure if this is "obvious" or not, but a very simple thing I've been doing for the past 15 years is to write a short log entry every time I encounter an especially tricky bug. I've found this to be a really good way to learn from bugs. There is something in the act of writing it down that makes the lessons of it stick better in my mind. More details here: https://henrikwarne.com/2016/06/16/18-lessons-from-13-years-of-tricky-bugs/ https://henrikwarne.com/2016/06/16/18-lessons-from-13-years-...
- cyborgx7 8y agoYes you are a very clever person, who doesn't need this blogpost. Good for you.
- mosselman 8y agoOk, so there is no room for criticism and there is no lower bound for usefulness? We might as well start posting 'Hello world' articles then: # after running 'irb' puts "Hello, World" "Why is this on HN?" would be a valid question, but you defence would be "Some people might not know how to puts things in Ruby".
- detaro 8y agoEven if the parent post is needlessly condescending, please don't make it worse by responding in kind.
- iainmerrick 8y agoYou’re oversimplifying. The key point isn’t the note-taking, it’s about putting newly discovered sub-tasks on a backlog rather than tackling them immediately. It’s good advice, and not something that comes naturally to everyone. “Thought-driven programming” is a good idea, of course, but are you thinking in an effective and productive way? Are there approaches you can use to be more effective? I hope you agree that there might be some value in identifying and teaching such approaches.
- zabana 8y agoHe's also overreacting.
- TickleSteve 8y ago"over-reaction driven commenting"
- thachmai 8y agoIn my experience, not a lot of developers manage to organize their thoughts well enough to write them down. Maybe you manage to work with only people who can write down their thoughts coherently. But that's the rare exception and not the norm.
- mosselman 8y ago"Maybe you manage to work with only people who can write down their thoughts coherently." This is exactly what I mean with something becoming a dogma when you call it 'xyz driven' programming. You are painting a picture where taking notes while programming is a requirement of being a good programming. I am saying that it doesn't have to be. Peter Buwalda is a Dutch writer who takes multiple showers a day. He says it helps him overcome his writers block. There is also some science behind this; it turns out your senses will be so busy with the steady flow of sound, the feeling of the water and the fact that there is no visual distraction that you can focus on your thoughts better. He isn't the first to realise this, hence the term 'shower-thoughts'. So, one could argue, 'shower driven programming' is something we should all do. Installing showers in offices for this purpose or expecting people who work at home to take multiple showers a day in order to focus would be nonsense, but then I could also counter by saying "Well maybe you manage to work with people who can focus without taking constant showers, but that is not the norm." Ridiculous right? So why isn't it ridiculous to demand that people take notes when programming? Some of the replies on my comment have been along the lines of 'will someone please think of the children!' with reference to junior programmers. What junior programmers don't need is yet another dogma by which they should 'drive' their development. It would have been completely different if the 'post' would have been 'Taking notes while programming can be helpful'. That strikes a completely different chord, namely, a helpful one. The word 'driven' does what you demonstrate: it makes people feel inferior when they don't do whatever the given driver is.
- icebraining 8y agodemand Who, exactly, is demanding anything? You're way overblowing what is just a useful suggestion from someone who probably realized that would have been useful earlier in their career, and hence is trying to help others. It's "log driven" because the logs, when read back, direct what you work on. Making that title to be some sort of mandate is inferring something that, frankly, simply isn't there.
- rick22 8y agoIts not just taking notes. Its a common pattern while fixing bug, you encounter a code path that with a 3 minute time you can make it so much better, but should you continue on your original plan or take 3 minutes to make the code better is the question. The blog says don't spend time on diverging the original plan instead mark it for later. Another good name would be "breath first traversal development"
- mosselman 8y agoSure, or, the name can be left out and the title could have been 'How I use notes while programming'. It doesn't need to be turned into a named concept, because it isn't a concept, it is just some advice that is so shallow that I question its relevance to HN. It is the equivalent of articles and videos on bullet journaling that you find everywhere, portraying it as the silver bullet to becoming organised. "12 ways to organise your life". It might work for some, it might not for others.
- Dowwie 8y agoHave you considered publishing a manifesto about this.. "thought driven programming"? :) antirez shared a successful methodology for programming. He gave that methodology a name. It is helpful to name something when communicating the idea to others.
- zabana 8y agoI've personally found great benefit reading this and I am sure a lot of people will. As obvious as it may sound, it's always nice to be reminded every once in a while.
- deleted 8y ago[deleted]
- rightbyte 8y agoDon't give them ideas. Thought driven programming is now a thing.
- PinkMilkshake 8y agoI think a lot of writers like the idea of coining a term that's in mass usage. It's like a personal brand marketing thing maybe. It's often injected into all of their writing in out of place ways and comes across as forceful and unnatural. Examples include Cory Doctorow and Ted Nelson.
- dang 8y agoThis comment breaks a number of the site guidelines: the one that asks you to respond to the strongest plausible interpretation of a thing, the one that asks you not to post shallow dismissals of others' work, and the implicit one about not being a jerk on HN. If you'd please review https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html and follow them in the future, we'd appreciate it.