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

科技回声

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

GitHubTwitter

首页

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

资源链接

HackerNews API原版 HackerNewsNext.js

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

Great Programmers (2004)

111 点作者 jenningsjason大约 11 年前

12 条评论

jliechti1大约 11 年前
Does anyone have any good resources for learning how to better architect systems? Other than, say, The Architecture of Open Source Applications: <a href="http://aosabook.org/en/index.html" rel="nofollow">http:&#x2F;&#x2F;aosabook.org&#x2F;en&#x2F;index.html</a><p>Reading source code of prominent projects is a good way to get better, but it&#x27;s hard to understand the architecture if you aren&#x27;t aware of the design constraints&#x2F;requirements that led it to be the way. Surely there must be a way to fast track this to some extent. Under the deliberate practice model by Anders Ericsson&#x27;s (i.e. the 10,000 hour rule), simply reading and understanding code is suboptimal because of the lack of immediate feedback on your understanding. I think it&#x27;d be interesting to see tutorials&#x2F;guides that showed how a system design has changed throughout its history as well as the reasons for those changes.
评论 #7641169 未加载
评论 #7640342 未加载
评论 #7641487 未加载
评论 #7641635 未加载
评论 #7642836 未加载
评论 #7641474 未加载
评论 #7643167 未加载
评论 #7643234 未加载
评论 #7641577 未加载
notacoward大约 11 年前
Bram hints at this, but doesn&#x27;t quite make it as explicit as I would: the thing that distinguishes great programmers is the ability to understand <i>how the pieces interact</i>. Anyone can understand how one piece of code works, even if it&#x27;s fairly complex. A good programmer can understand how one very complex piece of code works. However, any modern codebase of any significance is impossible for <i>anyone</i> to understand as a single monolithic whole. The key ability is to create a clean mental model of each piece, even if the actual implementation or interface of that piece is nowhere near so clean, and put those models together to understand all the &quot;between the cracks&quot; stuff. That&#x27;s the key bit of genius behind BitTorrent, for example. It&#x27;s not that the individual pieces are so special, but that the emergent behavior of those pieces interacting with one another is very beneficial.
AndrewDucker大约 11 年前
Fascinating discussion in the comments about version control. This, in retrospect, is particularly good:<p>&quot;If distributed operation is such a key feature, why is Subversion enjoying the amount of marketplace success it has?&quot;
qwerta大约 11 年前
Why everyone has to write new code to learn?<p>I find best way to learn is to read existing code. When I find interesting project, I download source code and read it from top to bottom. I may even fix a few bugs before hitting compiler.
评论 #7640763 未加载
评论 #7640649 未加载
hyp0大约 11 年前
Redefine the problem.<p><i>A change in perspective is worth 80 IQ points.</i> - Alan Kay
tieTYT大约 11 年前
&gt; My suggestion for learning software architecture is to practice. Obviously you can&#x27;t practice it by doing hundreds of projects, because each one of them takes too long, but you can easily design a hundred architectures for problems which only exist on paper, and where you strive to just get the solution to work on paper.<p>But, how do you get feedback to tell you if you&#x27;re making the right or wrong decisions?
krupan大约 11 年前
Thanks for adding the 2004. I wondered why he was still bashing poor subversion and talking about codeville. Interesting thoughts otherwise. When I interview potential co-workers I ask what makes good code and it&#x27;s interesting to hear the variety of answers. Definitely one of the best interview questions I have discovered. I think Mr. Cohen would pass my interview :-)
higherpurpose大约 11 年前
Changing things dramatically for the better always seems to involve &quot;forgetting what you know&quot;, ditching everything, and starting from scratch, doesn&#x27;t it?<p>In relation to the other post about the Core Infrastructure Initiative here, you could use that principle and realize that funding and improving OpenSSL, will still keep things more or less as &quot;secure&quot; as they&#x27;ve been until now. But to truly improve the security of the infrastructure of the Internet, we need to rethink things from scratch, and fund and adopt those, too (in browsers, operating systems, etc).
leorocky大约 11 年前
I&#x27;d also include knowing a lot about computers. Like how they work at a low level, how they represent numbers, low level networking protocol, how the operating system interfaces like interrupts, how processes and threads work. A computer science education really helps, but you&#x27;ll also have to be able to solve problems and think about how theory and real physics world collide.
mef大约 11 年前
Note this is from 2004.
webmaven大约 11 年前
Title should probably have [2004] added to it.
LeicaLatte大约 11 年前
TLDR; Try to find as many different approaches as they can, once they have found a working solution.