Another thing is to disregard any statement that starts with "it's simple" or "all you gotta do is" unless that statement is followed by a "here, let me show you...". My main point is that the learning never stops, and you'll benefit from accepting that you are responsible for teaching yourself. Being fully dependent on a TA or professor to shove knowledge into your head is a good formula for hating a class when you start to understand the teacher isn't as good as teaching as you hoped they would be.
Lastly, learning is a lot harder if you aren't working on something fun, too. For example, if you're taking a class on databases and it's about as interesting as watching paint dry, maybe doing something more hands on involving databases would be fun. For example, I enjoy doing things like shaving microseconds of the amount of time it takes to query a table, and pushing the boundaries of what is possible helps me understand a whole lot about why that database was designed that way in the first place, which compliments the course material very nicely.
1. Hang out online where people talk about new technologies. For me, that's HN, dev.to, and twitter (only works if you follow people doing cool things in tech)
2. Try out new technology by doing _small_, mostly pointless, but FUN little projects. That way, you don't have time to "get bored", because they're just little fun side projects! Also, you don't have to worry about them "scaling", etc - because you can just tell yourself that it's just a silly little project. But after several of these silly little projects - you'll be surprised at how much you've learned, and actually accomplished!
- small enough that you don't lose interest on the last mile
- big enough that it gives you something at least mildly valueable
- easy to entry and easy to work on occasionally. That last point kept me away from some hardware projects because I felt I need to carry the hardware wherever I go, just to do some experiments on the go.
All at the same time.
Any strategies in finding ideas?
1. Find something you want to play around with; for me recently, that was React Hooks
2. Start a codesandbox (I guess that only works if you're doing web dev stuff though), and just start messing with the examples from the tutorials
3. I almost always find something I want to explore further during that step, so then I take it offline and start a larger project
So I guess my advice would be: start small; even smaller than you think you should start (i.e., don't come up with a whole project to do - just "mess around" with the tech/idea in some small way first).
Then eventually, you'll get ideas about what you can try out, and what you should break off into a bigger chunk and try as a larger (but still small!) side project
1. Reading academic papers.
2. Being very hands-on; always implementing something, even it means trial and error. (Re #1: A lot of times, I end up implementing ideas from interesting papers that I’ve read.)
3. Doing my best to be around smart folks and learn from them (i.e., going to technical events, developing mentors, etc.).
4. Never giving up! This seems cliché to say, but forcing that mindset on myself has helped me tremendously for especially hard topics/domains (e.g., distributed systems). (Even if I have to reread a paper 10x before I fully understand it, I’m willing to do that.)
It's run by a guy called Adrian Colyer, he picks up a good research paper every weekday and summarises it on the blog. He's very regular and covers about 200 papers per year. Topics covered mainly revolve around data science (ML, AI, etc) and data engineering (DBMS, distributed systems, etc), and to a lesser extent general software engineering and systems stuff.
You'll have a clear idea of the requirements and can even open source it at the end :)
Pick anything that would benefit frkm being self-hosted or something that you currently pay for. E.g. dropbox, etc.
Learn a language by making something interesting, i.e. web app, GUI, raspberry pi project....there are millions of ideas and things to do out there, so pick the most doable and exciting one to you so you can complete it, or at least make usable!
There are a lot of tricks people might recommend, but learning to stick with something that is boring is important. Track your progress visually in some personally meaningful way