
Ask HN: How to you learn anything new in Computer Science? - thehog
I am a undergraduate student and my courses don&#x27;t include much of the modern technologies. I consider myself to have a solid base in CS and have tried many times to learn new things but I always get bored with the courses and start another topic leaving the previous incomplete. Please share your ways of learning.
======
PopeDotNinja
There's no replacement for having a good network of friends and mentors to
bounce questions and ideas off of. That makes all the difference for me.

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.

------
chrisa
Two things I find very helpful:

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!

~~~
sebst
This. I sometimes find it hard to find suitable side projects that are

\- 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?

~~~
username90
Have you tried making games? Can be as big or small as you want, can be as
simple or complicated as you want, in the end you made something which didn't
exist before and that is a satisfying feeling. It might not be a great career
choice, but games have many of the most interesting problems in computer
science.

------
readme
Is it really computer science you want to learn more of, or software
development? If it's the latter, you just learn by doing. Keep coding and do
research when you get stuck. Don't believe someone who says that something
cannot be done.

~~~
squirrelicus
So this. Go down rabbit holes when you get stuck. Understand your tools deeper
as time goes on. Learn by doing. You can't learn programming by reading.
Learning programming has more in common with plumbing and carpentry than
medicine and law in this regard.

------
19ylram49
For the most part, four things have done it for me:

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.)

~~~
throw7
How does one find out about academic papers? Is there some source that lists:
here are the academic papers this week?

~~~
deepakkarki
You can check out [https://blog.acolyer.org/](https://blog.acolyer.org/)

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.

------
wheresvic3
This is what has helped me immensely: pick a service that you use and just
reimplement it for your personal use.

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.

------
elamje
Hanging out on HN is a good start. If you spend time doing a lot of OOP at
school, try learning a Functional language. It’s a great paradigm that will
improve your general programming style.

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!

------
Areading314
I highly recommend subscribing to ACM, it has great articles about cutting
edge tech, best practices, and industry trends.

------
jammygit
> tried many times to learn new things but I always get bored with the courses
> and start another topic leaving the previous incomplete.

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

------
hnruss
I like to learn by doing. Either I’ll create something new or contribute to
open source. Creating something new is usually easier for me and leads to a
deeper understanding. The hard part is thinking of something that I want to
spend my time on.

------
p1esk
Can you give an example of which parts of CS are boring, and what kind of new
things you’re looking for?

------
peterprescott
Find a real person with a real problem and use algorithms to help them solve
it. [https://xkcd.com/1831/](https://xkcd.com/1831/)

