|
|
|
|
|
by strlen
5756 days ago
|
|
1) Learn some languages that force you to think differently, even if they aren't of an immediate use in the industry. I'd suggest starting with Scheme (Little Schemer + SICP) and then learning an ML family language (Haskell or OCaml). A language that incorporates elements of logic programming (Erlang or Prolog) would be useful too. You may not be lucky enough to use these languages in your day-to-day work, but there are lessons you can take home with you e.g., minimizing mutable state. 2) Remember to work on projects that are something more than algorithmic puzzles. Algorithmic puzzles are fun, great and are brain gymnastics, but you should also learn how to write low-level socket code (Richard Steven's "UNIX Network Programming" books are excellent in that respect), deal with concurrency (switching languages again, Java Concurrency in Practice is a great introduction). 3) Participate in open source projects. Dan Kegel has an excellent guide on how to contribute: http://kegel.com/academy/opensource.html Even if your contribution to an open source project is small, it will require reading and understanding a great deal of non-trivial code. Finally, as moonpolysoft said, don't call yourself a ninja or a rockstar. |
|