TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

How I Became a Better Programmer

439 pointsby Flollopabout 8 years ago

24 comments

couchandabout 8 years ago
There&#x27;s a lot of value here, but I have to raise concerns about a few things.<p>First, the title: written in the past tense makes it seem like he believes the journey is complete. The article itself doesn&#x27;t convey that message, fortunately. But I think it&#x27;s worth noting that a critical skill for a professional is constant education - don&#x27;t be satisfied that you&#x27;re already &quot;better&quot;, get better every day.<p>I also strongly disagree with the suggestion that you should ignore the form of your code. Code is read many, many times more than it is written, so improvements to your own and your teammates&#x27; understanding can pay huge dividends.<p>In particular, the advice to &quot;not worry about&quot; DRY and duplicate freely reveals a common misunderstanding. DRY shouldn&#x27;t be taken literally, it is a recognition that repetition is evidence of some greater underlying truth. By duplicating freely rather than thoughtfully avoiding duplication, you&#x27;re just creating opportunities for bugs.
评论 #13920479 未加载
评论 #13919536 未加载
评论 #13919523 未加载
评论 #13920497 未加载
评论 #13920980 未加载
评论 #13919884 未加载
评论 #13920227 未加载
markwaldronabout 8 years ago
Those that are complaining about this article: Care to share the experiences that made you a better programmer? Can you link to blog posts yourself or others made that we may find useful?
评论 #13920665 未加载
评论 #13920733 未加载
评论 #13919832 未加载
评论 #13919985 未加载
SnowingXIVabout 8 years ago
<i></i><i>Learn C - Just the basics, if you don&#x27;t already. I think it&#x27;s valuable to understand why everyone complains about it.</i><i></i><p>When you say just the basics, what are you referring to? Syntax? Pointers? Dealing with garbage? I&#x27;ve got a vague idea about it, but never had to really do anything with it so I feel now is a good time to mess around with it.<p>Great read though, always a pleasure seeing James mentioned (someone that definitely inspires me).
评论 #13922252 未加载
评论 #13923073 未加载
评论 #13922672 未加载
评论 #13922101 未加载
jonduboisabout 8 years ago
My advice is that whenever you become confident&#x2F;comfortable in your current work, that&#x27;s when you have to change team or company. Whenever it gets easy, it means you have stopped learning. I agree with what was said about tools; it doesn&#x27;t make you a better programmer to know all the latest ES6 features and frameworks. What makes you a better programmer is your ability to adapt and customize your approach to different situations and environments (with different scalability, stability, interactivity, security, time and regulatory constraints). I&#x27;ve been through a lot of different companies (I usually stay 6 months to 1.5 years each on average) and the environments&#x2F;workflows are usually VERY different each time. After changing a few times, it gets easier to move between different companies - You learn how to produce code that is universally acceptable and not just acceptable within the confines of a single company.
评论 #13920924 未加载
评论 #13920971 未加载
评论 #13921093 未加载
评论 #13931435 未加载
Bahamutabout 8 years ago
Not sure I agree with a lot of those recommendations - the number one recommendation I have is to challenge yourself as much as possible, whether it is with picking up algorithms, or learning new things such as the workings of a compiler. Other aspects include challenging yourself to be more efficient in your workflow, such as running through your thought process faster, decrease iteration time due to absorbing prior lessons, etc. This also includes the humility of being willing to learn from anyone, including developers who haven&#x27;t been in the profession as long or haven&#x27;t accomplished as much as you - ego can get in the way of challenging yourself to better yourself, and maybe that more junior person will indeed become better than you&#x2F;has better intuition.<p>Make sure you get good rest too - all the learning in the world won&#x27;t help you if you cannot retain what you learn. If you&#x27;re in a pressure cooker of a job, consider transitioning to a less stressful job to give yourself space to work on yourself so you&#x27;re better prepared for the long haul&#x2F;set yourself better up for success.<p>Lastly, focus on being a problem solver - this means if you see a point of friction&#x2F;inefficiency&#x2F;tricky situation, that is something to be solved. Your success rate in solving these problems is ultimately what drives stable success. This means practice as much as possible applying your mind to these problems, and if you fail, be ruthless about figuring out what you did wrong and iterate. Very few people can get away with being excellent there with minimal effort.
hinkleyabout 8 years ago
&gt; Even now, though, I continually doubt myself. The point is that this feeling doesn&#x27;t go away so just try to ignore it,<p>No. This is the advice you&#x27;d expect from someone in their early thirties who has been coding and doing nothing else their whole adult life.<p>Your doubts should fuel your learning and temper your decisions. They are the voice in the back of your head and you can make it work for you instead of against.<p>Mastery isn&#x27;t working harder, it&#x27;s working smarter. It involves retraining your instincts to match your rational understanding of the domain. You get the shape of a problem and you naturally gravitate toward a reasonable solution without having to intellectualize the whole process first. If challenged, you of course have to walk back your intuition and build a step by step case, not just a rationalization, but that&#x27;s fine because you&#x27;ve trained for that.<p>Study something else, anything else. Preferably with a teacher. What you&#x27;re going to learn about the process of learning (and teaching) will be profound. It will make picking up and putting down new things easier, which will keep you from getting in a rut later.<p>Source: 40-something who spent his precocious twenties only coding. I learned a hell of a lot but I didn&#x27;t know everything.
评论 #13923434 未加载
coding123about 8 years ago
Ok I came in thinking this was going to be another &quot;don&#x27;t do this, don&#x27;t do that&quot; type of deal, but was pleasantly surprised about it being upbeat and closer to e-prime. Nice job.
评论 #13919842 未加载
JCDenton2052about 8 years ago
&quot; (This also applies to the DRY principle. Don&#x27;t worry about it so much. Feel free to duplicate.)&quot;<p>The sort of advice followed by programmers when building systems that will accumulate heavy technical debt that someone else will eventually have to sort out.<p>You will not become a better programmer this way.
评论 #13931437 未加载
philippebackabout 8 years ago
We&#x27;ve got pretty good continuations, call&#x2F;cc, generators etc in here too. <a href="http:&#x2F;&#x2F;pharo.org" rel="nofollow">http:&#x2F;&#x2F;pharo.org</a><p>If you do want to leave the comfort zone, this is a must.<p>And we really do not care for the framework du jour, even if we use some.
_pmf_about 8 years ago
I think that a lot of the cognitive dissonance between what we think very good programmers do and what we ourselves do stems from the fact that the people whom we perceive to be very good programmers do greenfield projects and we non-rockstars are stuck having to maintain legacy applications, where there&#x27;s a lot less room to be &quot;very good&quot;; mostly, it&#x27;s a success to do this work for 2 weeks before giving up.
snackaiabout 8 years ago
He mentions SICP, which is trending on HN right now: <a href="http:&#x2F;&#x2F;sarabander.github.io&#x2F;sicp&#x2F;" rel="nofollow">http:&#x2F;&#x2F;sarabander.github.io&#x2F;sicp&#x2F;</a>
partycoderabout 8 years ago
I would shorten it to:<p>- develop critical thinking<p>- take time to learn<p>- force yourself to understand (avoid cargo cult)<p>- accumulate non-redundant experience
评论 #13919116 未加载
jaequeryabout 8 years ago
all of these suggestions are tbh ok. but id like to say one of the things that helped me most to get better was when i wrote my own framework. doing so helps you understand not just to code, but how to architect for many many different scenarios.<p>this allows you to write simpler and cleaner code, which is a high quality code.<p>and lots of coders think clean code means isolating code into many different pieces but that is so far from the truth. clean codes to me are generally less lines of code, files, and places to look for your stuff. its elegant and efficient. should put effort to separate less and group more. i cringe everytime some dev breaks up a simple methid into dozen pieces when there arent much justification to begin with.<p>so pls try write your own framework as an exercise. even in a crowded seas of framework, coming up with your own will be the best learning excercise you can do imho. it doesnt even have to be framework but something along the lines that will lead you to think outside the box.
sriram_iyengarabout 8 years ago
Excellent practical comments. Have not attempted the compiler piece yet. Will try Also, taking pet projects and tech to completion has helped me learn tech deeper. Plus doing office-Wide sessions in sharing them.
Fifer82about 8 years ago
I also have 10 years experience but I am in the same job because I can&#x27;t defeat recruitment agencies. If today a new Framework, let&#x27;s call it &quot;Framework9&quot; is announced, all jobs will instantly want 3 years experience, and 4-5 years experience of all other known frameworks, preferably in all languages, and preferably a designer who is a master of photoshop and CSS, with a long history of blah blah blah blah<p>I am really starting to wonder what other careers are possible as this kind of sucks. I am especially bad at bullshitting so I don&#x27;t really get anywhere.
评论 #13920551 未加载
评论 #13920569 未加载
评论 #13920548 未加载
评论 #13920821 未加载
antoaravinthabout 8 years ago
&gt;&gt; Take on big projects. Get uncomfortable.<p>To add few more points on this, work on side projects. I have to tell, how a side project can help you. For example, I was very comfortable using React in my project. I thought of building a simple preview container (for different sizes from desktop, mobile, tablets), where user can drag and drop few components, position them etc.<p>I&#x27;m in the initial phase of this and guess what, its really helpful. Making you uncomfortable at times (as in this case for using React to position components on the fly, which I had never done before) helps a lot.
keithnzabout 8 years ago
I agree with the author, I think people are getting too hung up on the &quot;fluff&quot; statement. His point is that their are deeper issues in programming that will make you a better programmer. Still useful to write clear concise code, just don&#x27;t get hung up on it, and certainly don&#x27;t mistake it for being a good programmer.<p>My other piece of advice would be to code with other people as much as you can, ideally from very different programming backgrounds.
latenightcodingabout 8 years ago
I&#x27;m glad the author mentioned learning new languages. I have been coding Go recently and even tho it&#x27;s not my main language, it has helped me to think about simpler designs when I&#x27;m using other languages.<p>Other than that becoming proficient in C and systems programming (Thanks xv6 book) was a major game changer for me.
darkersideabout 8 years ago
Regarding the claim that only Scheme implements continuations, aren&#x27;t coroutines&#x2F;generators in Python a type of continuation as well?
评论 #13922983 未加载
j_sabout 8 years ago
Step 1: Document all the things.<p>Step 2: Update the documentation the next time through.<p>There is no step 3! ;)
k__about 8 years ago
&gt; Find people who inspire you, but don&#x27;t idolize them.<p>Luckily this is rather easy in the JavaScript world, haha.<p>Many good devs have bad attitudes, which makes it a bit harder for junior devs to value their skills, but it prevents them from being idolized too much.<p>Also, I always think it&#x27;s a good sign if devs I look up to said stuff I found bad, so I know I still see them as humans and not as infailable idols.<p>&gt; Don&#x27;t devalue your work<p>This is a hard one.<p>On the one hand, if you work with too much non-technical people, they tend to overvalue your work. I met rather much mediocre devs who got sold to me by managers as the best devs ever. They simply always &quot;delivered&quot;, which some devs don&#x27;t. But finishing your work is a minimum in my eyes and not the &quot;best thing ever&quot;.<p>On the other hand, if you only work with highly skilled devs, you could start to think you can&#x27;t do anything right. In the end you got skills worth mad money to non-technical people, but you think you wouldn&#x27;t get a job ever again if you lose your current one.<p>&gt; Don&#x27;t feel pressured to work all the time.<p>This is hard, especially for us devs who think of programming as their hobby.<p>I started freelancing 2 years ago and got about 4 weeks holidays in this time. I worked on many weekends. Not because of &quot;crunch time&quot; but because I liked what I was doing, but I found out it really takes its toll :\<p>Now I try to do 3-6 month long projects and 1 month holiday after every project. Also, only weekend work on &quot;crunch time&quot;.<p>&gt; Ignore fluff.<p>This is really hard, because fluff is fun.<p>I started with JavaScript by reading &quot;JavaScript: The Good Parts&quot; and &quot;Pro JavaScript Techniques&quot; and I learned a lot of pit-falls before I went in my first big JavaScript project.<p>But I came at the price of fluff everywhere.<p>It gives me a nice feeling reading about other devs who just don&#x27;t get async&#x2F;await, observables or destructuring. Not because I think they are idiots, but because I think &quot;This seems to be hard and I already know about it!&quot;<p>But yes, I probably poured days into learning observables and probably can&#x27;t use them in my next projects.<p>&gt; Dig into past research.<p>This is a nice thing, because most people don&#x27;t do this.<p>I got a big book on HCI research of the last 50 years or so and I always find nice solutions for my problems there. Since many of the web and mobile problems have already been solved with experiments on research devices that never went mainstream.<p>&gt; Take on big projects. Get uncomfortable.<p>Also: Let your life depend on it ;)<p>If you need to pay the rent with a project, you&#x27;re much more inclined to &quot;really&quot; finish the thing and &quot;really&quot; learn the hard parts you need to understand before you can implement the solutions, which you need to &quot;ship&quot;.<p>(Okay, letting your life depend on it isn&#x27;t that good of an idea, but if money is involved it&#x27;s often easier for me to walk to the end. You always should have enough money backed up to survive a failed project or two, so you can also logically justify to leave your comfort zone)
评论 #13922583 未加载
评论 #13922584 未加载
omgnoabout 8 years ago
&gt; Learn C - Just the basics, if you don&#x27;t already. I think it&#x27;s valuable to understand why everyone complains about it.<p>WHAT? C is beauty, C is art, C is clean and concise. What is this guy talking about? Nobody complains about C, it&#x27;s about C++ they complain, you idiot.
arkadiytehgraetabout 8 years ago
Apparently the author still has a long way to go to become somewhat good, given how this link returns 502 on moderate load for a something like a simple blog. I also wonder if this discredits the article itself.
评论 #13923198 未加载
fiatjafabout 8 years ago
He writes &quot;find people who inspire you, but don&#x27;t idolize them&quot;.<p>And yet, his blog repository[1] which is, in his words, &quot;This is just a stupid simple server that indexes posts off the filesystem&quot;, has 1193 stars. Why would anyone star anything like that if not because they idolize jlongster?<p>[1]: <a href="https:&#x2F;&#x2F;github.com&#x2F;jlongster&#x2F;blog" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;jlongster&#x2F;blog</a>
评论 #13919220 未加载
评论 #13919656 未加载
评论 #13919346 未加载
评论 #13920096 未加载