2 deleted 399 characters in body
source | link

Most programmers I have met have some kind of ADD and I'm not saying I'm not one of those programmers. I'll get excited about machine learning and do some machine learning stuff for about a week. Then I'll get distracted and move on to the next shiny toy, e.g. parsing and compiler design, graph algorithms, network protocols, etc. This is not the right way to do things because you only get surface level understanding of whatever it is you are looking at this week.

The right way to approach things and to levelleveling up is toknow by another name, deliberate practice. To do deliberate practice you pick a topic and stick with it for at least 2 months. So if you pick sockets and network protocols then you should stick with it for at least 2 months and write some non-trivial code that makes use of sockets and network protocols. The great thing about this approach is that not only do you gain a deeper understanding of whatever topic you're exploring but you also get to explore some other topics along the way. You can't really do sockets and network protocols without learning about threads and parsing techniques so you end up killing several birds with one stone. This is true of any topic in CS. You can't really learn it well without exploring some nearby concepts and topics as well. So even though it feels like there is all sorts of stuff you could be learning at this instant the slow and, steady, and deliberate approach always wins in the end.

In summary, pick a topic and stick with it for at least 2 months. Spend at least 1 hour a day learning and implementing something that makes use of whatever topic you're exploring and you'll be an expert in several domains in no time.

Most programmers I have met have some kind of ADD and I'm not saying I'm not one of those programmers. I'll get excited about machine learning and do some machine learning stuff for about a week. Then I'll get distracted and move on to the next shiny toy, e.g. parsing and compiler design, graph algorithms, network protocols, etc. This is not the right way to do things because you only get surface level understanding of whatever it is you are looking at this week.

The right way to approach things and to level up is to pick a topic and stick with it for at least 2 months. So if you pick sockets and network protocols then you should stick with it for at least 2 months and write some non-trivial code that makes use of sockets and network protocols. The great thing about this approach is that not only do you gain a deeper understanding of whatever topic you're exploring but you also get to explore some other topics along the way. You can't really do sockets and network protocols without learning about threads and parsing techniques so you end up killing several birds with one stone. This is true of any topic in CS. You can't really learn it well without exploring some nearby concepts and topics as well. So even though it feels like there is all sorts of stuff you could be learning at this instant the slow and steady approach always wins in the end.

In summary, pick a topic and stick with it for at least 2 months. Spend at least 1 hour a day learning and implementing something that makes use of whatever topic you're exploring and you'll be an expert in several domains in no time.

The right way to approach leveling up is know by another name, deliberate practice. To do deliberate practice you pick a topic and stick with it for at least 2 months. So if you pick sockets and network protocols then you should stick with it for at least 2 months and write some non-trivial code that makes use of sockets and network protocols. The great thing about this approach is that not only do you gain a deeper understanding of whatever topic you're exploring but you also get to explore some other topics along the way. You can't really do sockets and network protocols without learning about threads and parsing techniques so you end up killing several birds with one stone. This is true of any topic in CS. You can't really learn it well without exploring some nearby concepts and topics as well. So even though it feels like there is all sorts of stuff you could be learning at this instant the slow, steady, and deliberate approach always wins in the end.

In summary, pick a topic and stick with it for at least 2 months. Spend at least 1 hour a day learning and implementing something that makes use of whatever topic you're exploring and you'll be an expert in several domains in no time.

1
source | link

Most programmers I have met have some kind of ADD and I'm not saying I'm not one of those programmers. I'll get excited about machine learning and do some machine learning stuff for about a week. Then I'll get distracted and move on to the next shiny toy, e.g. parsing and compiler design, graph algorithms, network protocols, etc. This is not the right way to do things because you only get surface level understanding of whatever it is you are looking at this week.

The right way to approach things and to level up is to pick a topic and stick with it for at least 2 months. So if you pick sockets and network protocols then you should stick with it for at least 2 months and write some non-trivial code that makes use of sockets and network protocols. The great thing about this approach is that not only do you gain a deeper understanding of whatever topic you're exploring but you also get to explore some other topics along the way. You can't really do sockets and network protocols without learning about threads and parsing techniques so you end up killing several birds with one stone. This is true of any topic in CS. You can't really learn it well without exploring some nearby concepts and topics as well. So even though it feels like there is all sorts of stuff you could be learning at this instant the slow and steady approach always wins in the end.

In summary, pick a topic and stick with it for at least 2 months. Spend at least 1 hour a day learning and implementing something that makes use of whatever topic you're exploring and you'll be an expert in several domains in no time.