

Ask HN: Should I learn a few different languages or become a master of one? - danielrakh

This past year I had decided that I want to become an iOS developer. I had no prior programing experience, but I was determined that I would teach myself how to code and design to release an App. I have succeeded in doing that and plan on doing it many times over. However, making myself too dependent on one platform kind of scares me. But I also want to be great at what I&#x27;m doing, and that only happens through hours of beating on your craft. Should I continue to pursue and master iOS or branch out into learning something else like Ruby or JS?
======
s12chung
Depends on your goals.

If you have a product in mind, another platform might be more suited for the
product, so it may be better to learn that.

If you have fun learning new platforms, why not go for it?

From the standpoint of generating the max amount of "code value", I'd stick to
one platform. By maximizing "code value", I mean the max amount of features
you can create and the cleanliness of that code given a platform. Note that
this does not necessarily translate to business value or value to the
consumer. Technology changes so fast, that the value of your knowledge
depreciates proportional to every platform you go into. It's like for every
basket you put eggs into, you lose more eggs.

In terms of happiness, you might choose a platform based on various
characteristics. Do you like UI? Do you like being on the app store? Do you
like the intricacies of code? Etc, etc.

For me, I like utilitarian code. It isn't flashy UI-wise or techwise, but it's
clean, saves me from headaches and gets the stuff done.

In summary, if you have no goals, choose a platform and stick to it. Each
platform has it's own pros and cons, it's up to you to decide what's
important.

~~~
danielrakh
Interesting. Thanks for the response. I think I'm going to dedicate an hour or
two a day to learn something new and still make headway with Objective-C.

~~~
s12chung
No problem. Glad I could help.

Yeah, with Objective-C, you've already seen how fast tech changes. But beyond
practicalities, have fun with whatever you do.

------
readme
Learn at least a server side language for now, and a web framework.

You don't need to learn every single thing about JS (for example, you don't
need to know about the DOM and events, unless you decide to build apps with
Cordova or something), but if you want to be a good independent mobile
developer, having a server side language will enable you to work on your own
backends. You'll want to know SQL inside and out, too.

If you don't know ruby or JS yet, I'd recommend just learning JS and using
node for your backends with express.js. Node is pretty easy/awesome, don't
listen to the neckbeards.

Don't waste your time learning brainfuck or whatever if you want to work in
industry building applications. Although things like that are cool, it's never
going to have a higher priority than the million other important things you
need to learn right now. It's best left to bored CS students who don't want to
rake in the cash to learn things like that.

~~~
danielrakh
Thanks for the response. I'm getting started with JS tonight. Hopefully it
shouldn't be too hard to pick up after Obj-C.

------
cafard
Both.

There are very few professional or top-notch amateur musicians who know
exactly one instrument. All (I believe) have one best instrument, but for most
it's violin _and_ guitar or cello _and_ piano.

You will presently find useful tasks that don't fit into the App world
comfortably. Take them as the opportunity to branch out.

------
memracom
There is no such thing as mastering a language. You can master a style of
programming and you can master a set of libraries, but not a language.

Two things flow from this. The first is that once you have mastered the Java
libraries or .NET libraries, you can easily add a couple more languages to
your repertoire with different programming styles. But the other thing is,
that learning a set of libraries is a lot like saying "I can code without
using Google!". Is that really an achievement? It's like saying that you don't
carry a mobile phone or that you only use human powered transport. Now that
Google exists, why would you bother learning a set of libraries inside out.

Far better to learn how to do great work using different programming styles,
object oriented, functional, domain driven design, actor systems with a
supervisor tree, and so on. That takes practice and cannot be googled.

~~~
mattlutze
"Is that really an achievement?"

If you have ever worked in an environment where you are unable to get to
Google, or where half of the search results you'd want to read are blocked by
your corporate firewall, you would conclude that the answer is, indeed, "yes".

It is a desirable achievement to be capable of executing those different
programming styles without having to fumble around Google to actually write
the code. I would imagine the two together, _knowing_ a few languages and
_knowing_ those styles, should be the real goal.

(While always learning more, of course.)

------
wikwocket
There is nothing quite like working with a platform/language that you know
inside and out, where you rarely have to stop and look something up, where you
know the best way to do everything. It feels like flying a jet fighter,
screaming along at Mach 3.

On the other hand, although it can be frustrating puttering along with a new
language/technology, googling some basic question every 10 minutes, that's how
you learn, and sometimes you need language XX to accomplish task YY.

Ultimately there is value to both, and as others have said, it depends on your
goals. There will be times that call for learning a new stack and getting it
done (even if it's coded badly), and times that call for expert application of
masters-level deep magic.

------
zachlatta
You seem like you want to try other things, so go for it! I like to think that
the best developers are T-shaped. The top of the T is a vast
beginner/intermediate understanding of many things. The rest of the T
represented a very deep understanding of a select few topics.

------
waqasx
"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

------
sker
Both. There are plenty of resources in the brain to master one language and be
competent with many others.

