Earlier quoted context omitted.
I had the same thought as I read that line. I think he's actually describing Linus Torvalds there, who, legend has it, thought about Git for a month or so and when he was done thinking, he got to work coding and in six days delivered the finished product. And then, on the seventh day he rested. But for the rest of us (especially myself), it seems to be more like an interplay between thinking of what to write, writing…
Well that explains why Git has such a god awful API. Maybe he should've done some prototyping too.
Programming Is Mostly Thinking (2014)
231–240 of 339 posts
Re: Programming Is Mostly Thinking (2014)
#232Earlier quoted context omitted.
Well that explains why Git has such a god awful API. Maybe he should've done some prototyping too.
I'm going to take a stab here: you've never used cvs or svn. git, for all its warts, is quite literally a 10x improvement on those, which is what it was (mostly) competing with.
It's very rare that a new piece of software just completely supplants existing solutions as widely and quickly as git did in the version control space.
Re: Programming Is Mostly Thinking (2014)
#233Great article. I just want to comment on this quote from the article: "Really good developers do 90% or more of the work before they ever touch the keyboard;" While that may be true sometimes, I think that ignores the fact that most people can't keep a whole lot of constraints and concepts in their head at the same time. So the amount of pure thinking you can do without writing anything at all is extremely limited. M…
Whether you plan before pen meets paper or plan while noodling is a matter of taste.
Re: Programming Is Mostly Thinking (2014)
#234Earlier quoted context omitted.
I do the same, iterate. When I am happy with the code I imagine I've probably rewritten it roughly three times. Now I could have spent that time "whiteboarding" and it's possible I would have come close to the same solution. But whiteboarding in my mind is still guessing, anticipating - coding is of course real. I think that as you gain experience as a programmer you are able to intuit the right way to begin to code…
I think once you are an experienced programmer, beyond being able to break down the target state into chunks of task, you are able to intuit pitfalls/blockers within those chunks better than less experienced programmers. An experienced programmer is also more cognizant of the importance of architectural decisions, hitting the balance between keeping things simple vs abstractions and the balance between making things…
I never hold all the code designed in my head at once, but it's more like multiple linked thoughts. One idea for the overall structure composed of multiple smaller pieces, then the smaller pieces each have their own design that I can individually hold in my head. Often recursively down, depending on how big the given project is and how much it naturally breaks down. There's certainly unknowns or bugs as I go, but it's usually more like handling an edge case than anything wrong with the design that ends in a rewrite.
Re: Programming Is Mostly Thinking (2014)
#235Re: Programming Is Mostly Thinking (2014)
#236Earlier quoted context omitted.
I do the same, iterate. When I am happy with the code I imagine I've probably rewritten it roughly three times. Now I could have spent that time "whiteboarding" and it's possible I would have come close to the same solution. But whiteboarding in my mind is still guessing, anticipating - coding is of course real. I think that as you gain experience as a programmer you are able to intuit the right way to begin to code…
I don’t think this methodology works, unless we are very experienced. I wanted to work that way, when I was younger, but the results were seldom good. Good judgment comes from experience. Experience comes from bad judgment. -Attributed to Nasrudin
Apparently this quote has been attributed to an Uncle Zeke :) [0]
Re: Programming Is Mostly Thinking (2014)
#237Earlier quoted context omitted.
I don’t think this methodology works, unless we are very experienced. I wanted to work that way, when I was younger, but the results were seldom good. Good judgment comes from experience. Experience comes from bad judgment. -Attributed to Nasrudin
Who's Nasrudin? Apparently this quote has been attributed to an Uncle Zeke :) [0] [0]: https://quoteinvestigator.com/2017/02/23/judgment/
One of my "go-tos" from him, is the Smoke Seller[1]. I think that story applies to the Tech Scene.
I first heard the GC quote as attributed to Will Rogers, then, to Rita Mae Brown.
[0] https://en.wikipedia.org/wiki/Nasreddin
[1] https://www.tell-a-tale.com/nasreddin-hodja-story-smoke-sell...
Re: Programming Is Mostly Thinking (2014)
#238Re: Programming Is Mostly Thinking (2014)
#239Earlier quoted context omitted.
I had the same thought as I read that line. I think he's actually describing Linus Torvalds there, who, legend has it, thought about Git for a month or so and when he was done thinking, he got to work coding and in six days delivered the finished product. And then, on the seventh day he rested. But for the rest of us (especially myself), it seems to be more like an interplay between thinking of what to write, writing…
I tend to see this as a sign that a design is still too complicated. Keep simplifying, which may include splitting into components that are separately easy to keep in your head. This is really important for maintenance later on. If it's too complicated now to keep in your head, how will you ever have a chance to maintain it 3 years down the line? Or explain it to somebody else?
In the end, I find my mental picture is still the most important. And when that fades after a while, or for code written by someone else, then I just have to go read the code. Though it may exist, so far I haven't found a way that's obviously better.
Some thing I've tried (besides commenting code) are doing diagrams (they lose sync over time) and using AI assistants to explain code (not very useful yet). I didn't feel they made the difference, but we have to keep learning in this job.
Re: Programming Is Mostly Thinking (2014)
#240Earlier quoted context omitted.
Well that explains why Git has such a god awful API. Maybe he should've done some prototyping too.
I'm going to take a stab here: you've never used cvs or svn. git, for all its warts, is quite literally a 10x improvement on those, which is what it was (mostly) competing with.
But the point of the parent of your post is correct, in my opinion. The Git interface sucks. Subversion's was much more consistent, and therefore better. Imagine how much better Git could be if it had had a little more thought and consistency put into the interface.
I thought it was pretty universally agreed that the Git interface sucks. I'm surprised to see someone arguing otherwise.