3 ms·
For me I think the threshold I'd suggest is learning enough different languages (from multiple paradigms and domains) and familiarity with enough frameworks to
by rrmm 10y ago
For me I think the threshold I'd suggest is learning enough different languages (from multiple paradigms and domains) and familiarity with enough frameworks to have confidence that when you require a language in a particular domain, you know that you'll be able to get up to speed quickly.
In general it pays to know one or two languages deep down to the bare metal as it gives you a basis to reason about other languages.
I would also suggest learning a language without garbage collection: It builds character, or at least the discipline to figure out a consistent practice that ensures every resource has one allocation and one and only one de-allocation. This discipline (of thinking about data flow through your program) will pay dividends as you organize your code even in gc'ed languages.
While you're at it, learning how GC works (at least at a high-level) is useful as depending on the particular GC used in the language at hand you can either be working with it or against it.
Learn your way around basic data structures: Most languages have a significant standard library, and much of the library is usually concerned with data structures. Knowing basic classes of data structures is the important thing here. Lots of stdlibs have hashes, heaps, linked-lists, or arrays even if they call them different things but the important skill is being able to look at the language docs and find the one that meets your requirement (fast look up time, stable ordering, fast sorting, etc) or be able to build a hybrid combination that combines the requirements you do have.
Make sure you know how to use your tools including at least one debugger, a version control system, etc.
I've found it pays to create toy projects in my spare time to gain familiarity with various new software and hardware. I have been surprised how often something I've just been playing with comes up. Someone will randomly ask, "can you set up a website with a CMS and customization," or "I need a hardware timer to sync these two instruments during an experiment." And I have at least a basis to begin to come at those projects even though they weren't things I had been initially employed to do.