Become a polyglot
Try to gain experience in as many programming paradigms that you can.
In my opinion you should at least understand the following paradigms:
- Imperative paradigm, most common languages
- Logic paradigm, such as prolog/datalog
- Functional paradigm, think haskell/f#/clojure
- Object-oriented paradigm, think c++/c#/java etc
- Metaprogramming, think c++ templates, c macros etc
If you have dabbled in all those paradigms I think you have the best toolkit for solving problems in your mind - and for making the computer solve it for you.
Written by Alexander Brevig
Related protips
4 Responses

Metaprogramming: think c macros
OH PLEASE! :)

For functional programming I would say "haskell/f#/clojure", not "lisp/f#/clojure", because clojure is already lisp. You won't gain much learning different flavours of lisp (at least, comparing to some really different functional language, like o-caml or, as I said haskell, which enforce you to think in pure and lazy manner).

@om-nom-nom although I selected the examples I did because I thought they might reach the most people with a feeling of "I've head about that" you make an embarrassingly good point. I updated the protip to reflect your comment. Thank you!

Metaprogramming, think c++ templates, M4, Ruby monkey patching etc
Fixed you.
Have a fresh tip? Share with Coderwall community!
