Ask HN: How do you get to be really good?
But these things have limited usefulness to me. I know how to get really good at certain things. I've had along habit of being very good at things. I did not go to school for comp sci. I studied violin, music theory, philosophy, and statistics.
But how do you get to be really good at software development?
I've studied Python as a language extensively. I feel like I know it extremely well. I know the idioms and patterns. But I don't know what to use them for.
I've read all the normal books. I've read about design patterns. I feel like I've read all the things, but something just isn't clicking.
I just have no real clue about building software. I feel like I have all the tools and no idea what to do with them. Give me a specific task, great! I can do that. Tell me about a feature you want! Great, I can do that.
But I just don't really know how to get to the next level. I don't know how to get to that place where you can say, "Yeah, I want our api to look like this!" I can make the api look like that. But I don't know how to make that decision.
Not sure if this makes any sense. But there have got to be some HN readers that either currently feel the same way, or have in the past and have some thoughts.
So? How do you get to the next level?
15 comments
[ 0.20 ms ] story [ 38.8 ms ] threadMaybe I could've simplified and said just practice.
You don't know what you don't know. Someone could say something with shocking clarity, that not only answers a question, but answers it in such a way that you understand a seemingly complex problem right away. The person that answers that question could be perceived as having an expert level of knowledge on said subject, but in reality they might have been in your position mere months ago and just happened to come across the answer. They might only know a fraction more than you do on a subject, but knowing that one thing makes it all fall into place.
Ultimately, it comes down to having the right experience. Someone could design a fantastic API and be lauded as a great architect, but this could be the first success from a long line of failures. The best thing I can suggest, from my own experience, is to decide what you want to learn, and to work towards getting experience in said subject. Reaching "that" level is hard, because the goal-posts always change. As I said at the start, "you don't know what you don't know".
I know that you have to use things to understand them. But on the other hand, you don't just go out and take a chainsaw for a spin without trying to figure out how it works first.
Well, I feel like I know how it works. I just don't know what to do with it. Hmmm, should I cut down a tree? Or should I cut down a house? And what's the real difference?
Are you suggesting that I should just go around willy-nilly and cut things down with my new technology chainsaw? Then I'll know shit about how it works because I've used it?
I'm asking a real question here because it's not one that is easily google-able. Perhaps it's not easy to answer. I feel like there's a dearth of material available that addresses the question.
If you have a job that exposes you to these people, that's great. This often gets confused with "having a job is the best way to get better," but it won't help you one bit if you're the best at what you do for your company.
I guess I'm just impatient to get better faster.
Good luck on your path !
It seems that the answer is to keep doing what I'm doing.
And try to do it all by yourself, so you will be pushed out of your comfort zone faster, and have to deal with things you don't deal with at your work place.
You want to get better at designing API's? Then start writing down comprehensive critique for as many API's as you can. List good and bad traits and explain your reasoning. This will build understanding about the parts needed for an API to be good.
When you are done then you should apply your newfound judgement on projects over and over again since good judgement is nothing without practice.