TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: Thoughts on idea to help novice developers bridge the learning chasm?

18 点作者 sga超过 14 年前
Background: In learning to program well and step beyond a beginner or novice level I think there exists a chasm. The web is filled with great resources for learning new languages but moving past the initial level that these resources help you achieve is tough. I see two current methods for self improvement:<p>(1) work with others who are more experienced and through osmosis you begin to pick up aspects of their developmental style and process i.e. how to approach a project and ultimately implement a solution (this is not possible for those that don't program for a living);<p>(2) hack on your own and through trial and error eventually find your way (good but perhaps not the best or only alternative).<p>Concept: I'm proposing a third option or hoping if it already exists. I would find it incredibly helpful if there were a resource that detailed the thought process and implementation steps that an experienced developer took in approaching a set of problems or projects. Even better I'd love to see two developers independently approach a set of small to medium sized projects, detail their thoughts along the way, and see how their development process and their implementations differ.<p>What do you think? Valuable? Does it exist? Worth creating?

8 条评论

camperman超过 14 年前
This is one of the most extraordinary things in Norvig's Paradigms of Artificial Intelligence Programming (commonly abbreviated to PAIP on the Web) and it's a book full of extraordinary things. When he develops something, like his Othello-playing program in chapter 18 for instance, he starts off simple, develops as he goes along (with an eye for the overall design), makes mistakes and then fixes them - all the while telling you what he was thinking.<p>I found it really encouraging. Here's this godlike coder who works at Google just doing incremental development until he has a really good finished product. At the end of it, you can't help thinking "but I could have done that!" In fact that was his overall purpose. In <a href="http://norvig.com/Lisp-retro.html" rel="nofollow">http://norvig.com/Lisp-retro.html</a> he says 'The main object of this book is to cause the reader to say to him or herself "I could have written that"'<p>So yes, your option 3 is a great idea.
japherwocky超过 14 年前
So I have actually been teaching a class to a dozen beginners, taking them from HTML/CSS -&#62; python/javascript and deploying apps on the web.<p>What seems to work best, is to get them building <i>anything</i>, and then critiquing as we go. So, they're all hacking on personal projects, and all kind of making the same mistakes, and we go over what they've written and then move on to the next step.<p>As they run into various hurdles, it opens up lots of discussions on some of the finer parts of things, which would have made no freaking sense to them earlier.<p>I know you're talking about a slightly more advanced level, but I'd say the technique still stands: Keep hacking on your own (as this is kind of the most important), but put your code out where someone can make fun of it, get it reviewed and critiqued, learn to anticipate criticisms, and you'll be a great developer in no time!
daviding超过 14 年前
Many of the more modern programming books deal with the process of creating the software rather than the abstract bits that make up the individual steps.<p>Have you seen books like <a href="http://railstutorial.org/book" rel="nofollow">http://railstutorial.org/book</a> and similar? Is this sort of what you mean?
评论 #1850620 未加载
grandalf超过 14 年前
I suggest implementing the same system using a variety of languages. Each language and system of libraries has some abstractions that can result in the novice having a very incomplete or incorrect mental model of what is actually happening.<p>In using a variety of frameworks/languages, the learner gets more adept each time since lots of the abstractions are the same, but really jumps forward in the areas where the abstractions are different enough to create some food for thought.<p>It is that sort of thinking that helps differentiate the designed aspects of a program from the ones that are implementation specific consequences of the design.
MarinaMartin超过 14 年前
Reading The Pragmatic Programmer helped me a lot with the problem-approaching aspect of things, but then I didn't pick it up until I was moderately comfortable with PHP. (I'm not a FT programmer so my learning process tends to be s-l-o-w w/o many opportunities for practice.)<p>I'd definitely be interested to see two different programmers write up their approach to a given problem. Something like this would be an excellent monthly blog post.
zugumzug超过 14 年前
I'm in a very similar position working with Ruby/Rails, and I struggled for a while trying to figure out what to do. The approach I settled on was to work through another tutorial, but try to add features and much better design. In other (more Halloween appropriate) words, to really flesh out the skeleton that the tutorial gives you.
tjpick超过 14 年前
&#62; I'm proposing a third option or hoping if it already exists. I would find it incredibly helpful if there were a resource that detailed the thought process and implementation steps that an experienced developer took in approaching a set of problems or projects<p>tertiary education?
catlike超过 14 年前
<i>Design Patterns: Elements of Reusable Object-Oriented Software</i><p>What do you think?: Good Idea<p>Valuable?: Yes, worth $34.59 according to Amazon<p>Does it exist?: Yes, see above<p>Worth creating?: Yes, if you can do it better than GoF
评论 #1849742 未加载