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

科技回声

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

GitHubTwitter

首页

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

资源链接

HackerNews API原版 HackerNewsNext.js

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

How to improve your programming skills

232 点作者 antoarts将近 14 年前

28 条评论

edw519将近 14 年前
11. Rewrite something that desperately needs to be rewritten.<p>So many times I've encountered something and thought, "I can't believe that people are actually expected to use this software."<p>It was bad from a user perspective: difficult to use, slow, tedious to do what you actually needed to do, unable to "get there from here".<p>Then once I looked under the hood, it was often worse: built upon a horribly designed data structure, inflexible with constants where there should have been parameters, no apparent thought put into its use, too many violations of acceptable practice to mention, looking as if it evolved haphazardly (which it probably did).<p>It's easy to bitch about stuff like this, but you often have to go to the next level to <i>do something about it</i>. It's amazing how much rethinking you have to do and how many tools you have to build to turn horrible software into what should have "obviously" been done in the first place.<p>Easier said than done. And often, some of my best learning experiences.
评论 #2714574 未加载
评论 #2717315 未加载
DavidMcLaughlin将近 14 年前
"Learn a new programming language"<p>I would rephrase this to learn a new programming <i>paradigm</i>. There are fundamental differences between static typing and dynamic typing, object orientation and functional, manual memory management and garbage collection. There are also "pure" single-paradigm languages and multi-paradigm languages. If you learn the same type of language multiple times, you're really just learning new syntax and probably a couple of extra idiosyncrasies, so it's important that you pick languages with fundamental differences.<p>Compare going through this learning path:<p>Perl -&#62; PHP -&#62; JavaScript -&#62; Python -&#62; Ruby -&#62; Node.js<p>To going through this:<p>Java -&#62; C -&#62; Scheme -&#62; JavaScript -&#62; Erlang<p>For example.
评论 #2714600 未加载
评论 #2714145 未加载
评论 #2714135 未加载
peteretep将近 14 年前
Learning Javascript changed my Perl for the ... more fun to write. Possibly better, too. I've started passing around coderefs as arguments to functions a lot more recently, and allowing people who use my APIs to do just that...<p>I've been writing code that allows you to describe a website in data and at a high level recently, and builds you up all the methods you need to interact with it. In general, when people need to provide parameters, I also let them pass in coderefs that can be executed to provide those eg:<p><pre><code> my $name = ref($args{'form_name'}) eq 'CODE' ? $args{'form_name'}-&#62;( $self, @user_options ) : $args{'form_name'}; my $form = $self-&#62;mech-&#62;form_name( $name );</code></pre>
评论 #2713954 未加载
评论 #2714053 未加载
评论 #2715407 未加载
评论 #2729222 未加载
peteretep将近 14 年前
Also, randomly: I started putting bug bounties on my code on CPAN:<p><a href="http://search.cpan.org/~sargie/Data-Google-Visualization-DataTable-0.08/lib/Data/Google/Visualization/DataTable.pm#BUG_BOUNTY" rel="nofollow">http://search.cpan.org/~sargie/Data-Google-Visualization-Dat...</a><p>This made me more conscientious about what I release ;-)
评论 #2713948 未加载
JesseAldridge将近 14 年前
&#62; 10. Don’t rush to StackOverflow. Think!<p>Disagree with this one. My rule is, "If you get stuck for more than 10 minutes, post to StackOverflow." I'll post my question then continue trying to solve it myself. Sometimes someone will post a good answer right away, saving me lots of time. Other times I'll end up solving my problem on my own, but I'll still learn something valuable from a comment or answer somebody posts to my question. Here's a good example of what I'm talking about:<p><a href="http://stackoverflow.com/questions/6327396/set-time-part-of-datetime-in-ruby" rel="nofollow">http://stackoverflow.com/questions/6327396/set-time-part-of-...</a>
评论 #2719064 未加载
评论 #2716739 未加载
评论 #2717211 未加载
评论 #2715932 未加载
synnik将近 14 年前
11. Learn how the entire stack works. I see way too many people coding around problems that could be solved at the server level, the network layer, etc.
stephen_dryden将近 14 年前
Really good article, I agree with every point.<p>If I were to add to it I stress the importance of reading books by different authors and publishers, even if they're about the same subject. This helps you get a much wider, well-rounded view and it often improves the learning experience.
评论 #2714690 未加载
评论 #2713770 未加载
Androsynth将近 14 年前
-Build something that is bigger/more complex than your current skill level.<p>This will not only improve your skills in general, but learning from the mistakes you make is probably the best way to grow as a programmer.
评论 #2714904 未加载
highace将近 14 年前
+1 for don't rush to StackOverflow!<p>You don't get better if you don't tax your brain a little, much like how you don't get stronger if you use a winch or wheelbarrow to carry a load instead of carrying it yourself.
评论 #2713893 未加载
kenjackson将近 14 年前
While people recommend reading code, like the Linux sources, I also find more code focused sites like Code Project (www.codeproject.com) very useful. These aren't blogs like Coding Horror, which are more "philosophy". These articles on Code Project typically are explaining code in detail.
zwentz将近 14 年前
I find that trying to ask my question at StackOverflow is the best way to improve. Because I have to think about how best to word my problem, and really make it clear and concise. And usually when I do that, I end up just solving the problem on my own.<p>Of course, I see a lot of give me teh codez there, so I can see where the author is coming from. Nevertheless, I find it to be a useful tool in helping me become a better programmer.
评论 #2714249 未加载
评论 #2714227 未加载
phereford将近 14 年前
I got a "Database Connection Error" (I am sure your server got hit hard with being top 5 on HN). :) The irony makes me giddy.
评论 #2714043 未加载
评论 #2713980 未加载
joecasper将近 14 年前
Really good article. Another way to improve your programming skills would be to teach someone else. I find this to be one of the best ways to solidify your understanding of something.
bajsejohannes将近 14 年前
The article suggest reading code, which I agree is a good way to improve programming skills. But I'm a bit unsure what to do with the advice to read the linux source code. Where would you start? I find the only way to actually get to reading code, is if you have a need to understand some part of it (e.g. to fix a bug or add a feature).<p>So perhaps a more actionable proposal is to try to fix a bug, preferably one you care about, in some open source project.
评论 #2713937 未加载
antoarts将近 14 年前
For those of you who get a database error, I think it is the huge amount of traffic I'm getting at the moment which causes this (&#62;1000 visits last hour). I'm using shared hosting, which might have problems with this, so in one way, you are DDOSing my site ;-). I don't know if it is safe to tell you to just wait and reload the page, but do that, BUT NOT TOO FAST!
评论 #2714501 未加载
nu2ycombinator将近 14 年前
What I observe so far is people who learn all kind of programming languages will become very good programmers. And one who see language as a tool to solve problem and applies it smartly will become millionaire providing food for remaining good programmers.
blaaah将近 14 年前
But how does one get ideas for a project? I started learning programming using C++ about 5 months ago. I've been making good progress on learning the concepts but I just can't think of anything useful to create.
评论 #2715601 未加载
isomorph将近 14 年前
I like how "Program" is all the way down at number 5
lhnz将近 14 年前
1. Learn paradigms, kinds of problems and computer science fundamentals.<p>2. Work on poorly-run large projects with (a) performance problems or (b) code organisation problems.<p>3. Work on other projects with developers that use (1) to solve the problems of (2). You'll be surprised how quickly you learn when you've seen the benefits to be had by doing things better... ;)
shii将近 14 年前
Reading and trying to work with the Linux kernel source is hardly a good way to get better programming skills. It's really large and hard to understand. Something like Minix, MenuetOS, or LoseThos is a much better alternative to hack on. LoseThos particularly reminds me of old school hackable boxes like the Commodore64.
pmr_将近 14 年前
All of the advice given here is good and none of the tips here are going to hurt you.<p>It's just another less abstract reiteration of a few truths that encompass much more than programming.<p>Work with different tools. Think. Talk about what you do with other people. Do all of it a lot.
评论 #2733559 未加载
antoarts将近 14 年前
I hope that I fixed the problem now by installing a plugin (QuickCache) which caches pages and serves a normal, static HTML page when possible instead of generating a new dynamically from the PHP scripts each time. I <i>hope</i>.
kvgr将近 14 年前
8. is very important. Once you decide to write article, you got to have solid knowledge about the topic. You just can't write the code and see if it works :) you got to know why and how!
Morendil将近 14 年前
This is severely biased toward things that require no in-person interaction.<p>So I'll add two:<p>0. talk to other programmers 11. attend a Coding Dojo
jrockway将近 14 年前
One way to improve your programming skills: stop reading programming blogs and start programming.
评论 #2733547 未加载
coreyhaines将近 14 年前
Also, spend time doing focused practices. Attend a coderetreat (www.coderetreat.com)
ataranto将近 14 年前
1. Find something that you can't do. 2. Do it. 3. Repeat.
known将近 14 年前
Debug other people's code.