The most important advice that comes to mind is a bit proverbial, and from a board game so appropriately titled; "Go." Lose your first 50 games of Go as FAST as possible! Don't worry about winning or losing or finding the "right" move, just put some stones down, get used to looking at the shapes that come up, and get a good feeling for how the rules work. Of course, a consequence of that attitude is that you will los…
Any idea where that advice comes from, I've given similar advice in the realms of learning to throw pots (on the potters wheel); would be nice to ground that advice in a source as ancient wisdom if it is indeed that.
Ask HN: I feel like an 'expert beginner' and I don't know how to get better
21–30 of 57 posts
Re: Ask HN: I feel like an 'expert beginner' and I don't know how to get better
#22A couple books that are worthwhile: "Refactoring" and "Rapid Development". That will teach you a lot of basic skills in terms of development process and how to improve the design of real systems (warts and all). Also, take a look at the Architecture of Open Source Systems, it'll acquaint you with how applications fit together.
Also, take on some projects. Pick something interesting and work on it. Pick some small stuff then move up from there. I'd suggest in your case eventually building a compiler. If you're interested in AI, build some simple games and work on building AI for them. There is nothing more important than actually writing code.
Re: Ask HN: I feel like an 'expert beginner' and I don't know how to get better
#23Re: Ask HN: I feel like an 'expert beginner' and I don't know how to get better
#24Re: Ask HN: I feel like an 'expert beginner' and I don't know how to get better
#25To become a better programmer and not a better computer scientist: Do your own thing. Build something you want to see built and you will learn oh so much. Programming isn't about how you implement something so much as it is for what reason. Think of something you want to see built and figure it out from there. For example, I learned Python by trying to write an app that would take my Shazam tags and convert them to a…
Don't go straight for an open source project unless you're really into it. Honestly - debugging other people's code is hell, I hate doing it (but frequently have to). By all means dig through other people's code to work out how something is achieved, but for people starting out, bug-fixing is a bore.
Make your own damn open source project! Pick something you love that has a problem and have a bash at fixing it. An here's the best bit: you'll still get to solve bugs, lots and lots and lots of them. Some of them will be easy to solve, some will take you a week before you realise you missed out a bracket.
You have to enjoy what you do or it won't stick. And don't be fooled into thinking you like something until you actually try to build something with it.
Re: Ask HN: I feel like an 'expert beginner' and I don't know how to get better
#26Also, there's a disconnect between academia and the workforce. You might invent a fancy new data structure that blows up in real use because it ignores caches. Or you might invent something that's cache-aware, but everybody's using scripting languages or the JVM and doesn't have that level of access to the hardware. And so on. If you're strictly speaking about becoming better at the work of programming (rather than CS), that stuff isn't that important. You will spend way more time, especially as you move up in seniority, interacting with people - whether it's designing your system to be understandable by humans, persuading others of your ideas, getting funding, etc.
Re: Ask HN: I feel like an 'expert beginner' and I don't know how to get better
#27Simply put you have to start practicing. Try to solve problems with the techniques you've learned, and you will get a better understanding of their strengths and their weaknesses. That will help you internalize the theory you have absorbed. It does take time (this annoys most people) but it serves the exact same purpose as homework does in school, moves the understanding from the hippocampus out through the rest of y…
When you build stuff for the purpose of practice also make sure you build it incrementally. For example, design a file format, build a parser/generator for it. After that, add networking, so two apps can communicate the contents of the file. After that add encryption (nothing fancy, just use a library), then add some TLS, and then, and then, and then.
I found this approach best because:
1) You learn new things (because you research best way to do stuff, experiment with code, etc), and 2) you learn from your mistakes, because as you add you might notice that certain things don't play with your new features, and you will be forced to improve them.
P.S: I know my example might seem a bit lame, but I couldn't think of anything else at the moment.
Re: Ask HN: I feel like an 'expert beginner' and I don't know how to get better
#282 build, then rebuild, your own systems
After 10,000 hours of this, assuming you keep climbing rather than just doing the same thing over and over, you will be competent.
Re: Ask HN: I feel like an 'expert beginner' and I don't know how to get better
#29The most important advice that comes to mind is a bit proverbial, and from a board game so appropriately titled; "Go." Lose your first 50 games of Go as FAST as possible! Don't worry about winning or losing or finding the "right" move, just put some stones down, get used to looking at the shapes that come up, and get a good feeling for how the rules work. Of course, a consequence of that attitude is that you will los…
Any idea where that advice comes from, I've given similar advice in the realms of learning to throw pots (on the potters wheel); would be nice to ground that advice in a source as ancient wisdom if it is indeed that.
“I have not failed. I’ve just found 10,000 ways that won’t work.” - Thomas A. Edison