PDA

View Full Version : In programming, is it better to learn "a little of lots" or "lots of a little"?



BigTobster
February 20th, 2014, 05:55 PM
Question is open to everyone - regardless of where you are on the noob/veteran scale :)

I am an undergraduate and spend most of my time learning loads of stuff. I've been doing software-y stuff for a couple of years so still pretty noob-ish to some stuff but I have learned what the keyboard is, not to set fire to my laptop, etc :)Frequently, I am introduced to new languages or frameworks on my degree but generally the emphasis is on learning a new CONCEPT on that language - rather than learning a new language for the sake of it.

Examples include:
Java for OO
PHP for Server Side Management
Erlang for Concurrency/Functional languages
CSS to make shizzle pretty
etc

Personally, I have the view that this is the right way to go. Learn a single language in a particular domain as well as you can and then use that when possible. Modern translators/interpreters/witchcraft allows us to use a language which has historically been the realm of another. Using Python as a client side web language instead of HTML/Javascript is a good example here.
This gives rise to the idea of that, 95% of the time, it doesn't really matter WHICH language you choose as long as you are using a language relevant for that domain. Ruby, Python and Perl are all pretty darn similar - especially if you just want a simple general purpose language to do a bit of logic/maths/processing in. I'm not suggesting that they don't have their own pros and cons but as a rule, they all kinda balance. C and Erlang are NOT similar so one should know them both (or languages that do the same stuff they do well) to be able to don many hats.

My friend has the contrasting view that one should learn as wide a range of stuff as possible. Use every possible framework in every possible domain using every possible language. The advantage here is that you will always be prepared for any task. You will know what frameworks are suitable all of the time rather than being a bit ignorant and try to implement device drivers in Prolog or Haskell. A good software-y person should be able to don any hat at the drop of a... hat! You will always choose the right tool and you can catch up on the learning bit as you go along.

I will finally add that if you want to be/are a specialist in a certain domain, you should probably learn more than a single language for that domain. One would expect a good Database Admin to know the difference between SQLite and Oracle, for instance.

Any thoughts? Do you prefer one philosophy over the other?

Habitual
February 20th, 2014, 08:45 PM
I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times. - Bruce Lee
certainly holds true for self-defense, but in programming, I'd like to believe "learn a little about a lot". It helps to be flexible and
be able to transfer skills learned in one discipline to another.

The stuff I don't know could fill a warehouse.
The stuff I do know could fill an outhouse.

Peace.

lykwydchykyn
February 20th, 2014, 08:55 PM
I don't think it's possible for any one programmer to use even a fraction of the available frameworks for all possible languages. If you did, you'd leave in your wake a nightmare of code maintenance.

I would agree with you that concepts are more important that just quantity of languages or frameworks. Knowing 10 OOP languages won't make you better at functional programming.

At the same time, I wouldn't get stuck in the "$TASK mean $LANGUAGE" mentality. To some extent this is true (C is your choice for device drivers, e.g.), but in some fields there are a lot of options (e.g. server-side web) and the popular ones don't always deserve their popularity.

buzzingrobot
February 20th, 2014, 09:58 PM
Dabble until you know what you have an affinity for, and what seems unlikely to ever make sense. Then, focus on what you like and what you're good at.

In the long term, the language is just a tool to express your ideas. That's when it gets interesting.

Don_Stahl
February 21st, 2014, 06:06 PM
Yes, learn enough to know what is the right tool for a task. Don't immerse too deeply, but know where to find the knowledge you need for a task. If you end up in a position where you program in one or two languages for extended projects, then you'll learn those languages in depth. It will happen. At my age, with my leaky memory and two dozen functional synapses, the task at hand receives my focus. Learning what I need of a language is simply the shortest distance between where I am and where I need to be to finish the task. Hopefully the shortest route, and not a danged pointless detour... !!!!

barbarah2
February 26th, 2014, 08:41 AM
Dabble until you know what you have an affinity for, and what seems unlikely to ever make sense. Then, focus on what you like and what you're good at.

In the long term, the language is just a tool to express your ideas. That's when it gets interesting.

That's exactly what I said the other day when we had a really emotional conversation with a colleague

forrestcupp
February 26th, 2014, 06:38 PM
If you'll invest the time to learn a lot about a little, you'll find later that it becomes very easy to learn a little about a lot.

Nayab Basha Sayed
February 27th, 2014, 08:17 AM
Learn 'Lots of littles'. Eventually you will learn and gain 'Lots of Lots'.

k-tim-b
February 27th, 2014, 12:57 PM
Dabble until you know what you have an affinity for, and what seems unlikely to ever make sense. Then, focus on what you like and what you're good at.

In the long term, the language is just a tool to express your ideas. That's when it gets interesting.

dabble dabble I do!