4 ms·
I'm going to suggest that you don't learn a new language, but that you learn how to deal with broader issues and to think about problems. Go deeper, not broade
by lsiebert 13y ago
I'm going to suggest that you don't learn a new language, but that you learn how to deal with broader issues and to think about problems.
Go deeper, not broader. Another language can help you learn about stuff, but knowing languages is less important than understanding how they are used.
Learn about event handling. If you have toyed around with C, get an arduino and learn about hardware interrupts. Learn about concurrency and distributed systems. learn about semaphors and locks and other ways to deal with resource contention.
Understand memory. Know how a hash/dictionary works. Look at implementations of variable length arrays.
Write a toy database and driver. Now make it work when two programs are accessing it at the same time.
Write a server.
Take old horrible code in some language you know well, and update it to current standards with unit tests.
Read the code libraries you use often. Or try to implement your own version of the base case of a POSIX like tail.
Write a function to convert a string to a floating point number without taking advantage of the built in float or atof functions.
Learn about how compression algorithms work and implement a simple one.
These are not easy things. And you don't have to finish them or do well or do all of them. But you will get experience you can't get sticking with the basic features of a language that will serve you well.
- gamegoblin 13y agoHighly agree. I've got my main languages fleshed out (Python, C(++), Java, and Haskell), and have found it incredibly rewarding to implement web servers, regex engines, databases, interpreters, etc.
- kotakota 13y agoI think this is the best advice. A lot of these projects will force you to learn new concepts, algorithms, and they will give you a new way of thinking about problems. Learning a new language won't necessarily do any of those things.