5 ms·
> The idea that it's "hard to find programmers" -- does not really stand up. Because anyone who can't grok a new programming language in a short time, is not re
by ashton314 5y ago
> The idea that it's "hard to find programmers" -- does not really stand up. Because anyone who can't grok a new programming language in a short time, is not really a good programmer.
This this THIS! I have a profound philosophical disagreement with CS professors (usually professors who retired from industry into academia) who think that part of the job of the CS curriculum is to equip students with a language and think that learning multiple languages will dilute their focus or some bull crap like that. Learning new languages is not hard! It is much better to learn how to learn new languages, than it is to learn one language really really well. Learning multiple languages will give you the mental tools to use other languages to their fullest extent.
- chii 5y ago> learn how to learn new languages that's unfortunately not taught at university. people who are already quite bright will pick this skill up by osmosis or naturally. People who dont know how to learn often struggle. at no stage in the k-12 education curriculum does learning how to learn gets taught systematically.
- chakkepolja 5y agoThis is true. I have had java professors never explain subtype relationship or interfaces properly. Without understanding basic concepts that underlie programming languages, mechanically teaching syntax (with language specific OOP buzz words), is ensured to only confuse students when learning new languages. Rather teach them how polymorphism works, what's a virtual function and a function pointer, any student worth their salt will understand why things are the way they are.
- chii 5y ago> Without understanding basic concepts it's even more meta than that. Learning to learn is not easy, but can be taught. It requires some introspection - what it is that you don't understand about a subject, as well as _why_ you'd be learning it. In university classes, the professors aim is to teach the material (despite them mostly not wanting to do teaching, but merely a requirement to exist as a professor) - so a lot of them just teach the materials directly (aka, present facts). These sort of teaching style is only good if the student is already a sponge and can remember the material. For students who aren't interested, but their course requires it, the learning is stunted because there's no context for which the student can grab hold of to learn the material. And then, the order in which the material is presented makes a lot of difference - teaching OOP, in my experience, tends to start with inheritance, how the language (like java treats) inheritance, and so on, as the course goes along introducing more of the java language. But they don't teach the surrounding context, like how it compares to C++, or haskell, or LISP. Learning like this is like learning how to walk on stilts.
- project2501a 5y ago> learn how to learn new languages EBNF?
- sergiomattei 5y agoWholly agree. Really, after you know one language well, you know them all instinctively. Picking up Elixir coming from Python was very smooth for me.
- fish45 5y ago> after you know one language well, you know them all instinctively This isn't strictly true. Elixir, while functional, isn't completely pure and has a dynamic type system which definitely lowers the learning curve. Developers who know one language well are likely equipped to pick up a language like Haskell faster than even a mathematician, but I can't imagine that a Java one trick would pick up Haskell (or APL, or Scheme, etc.) "instinctively"
- sergiomattei 5y agoI'm not saying you're going to be productive immediately, but the fundamentals are there and (with effort) you'll be able to get there.
- staticautomatic 5y agoI don’t really understand how a type system in and of itself raises the learning curve unless the language commonly uses esoteric types. You still have to understand your data structures in dynamically typed languages; does it really add much cognitive overhead to declare what they are?
- ryloric 5y agoWell, I kind of agree but you also need a home base language, one that you wrote a lot of code in to drill those ideas into your head. Without writing a lot of code and coming across various types of computing problems, you won't be able to go past syntax in other new languages. If I know how closures work, then I can pick them up in Lua or Go or JS very easily, all I need is to figure out the syntax, I already know the computational pattern. On the other hand to get to know how closures work I need to write a lot of them and use them in many scenarios. You kinda need that 'one' language to get the point where you can learn multiple languages well. My cs courses kinda sucked, but one good thing they did was to teach me C, C++ and Java pretty extensively.
- pjerem 5y agoAt some point, that ‘one’ language can just be the one you work with at your job. It’s not required to like this langage. My main langage is Typescript in the front end. I hate it with passion (tbh, it’s the JavaScript part and the terrible ecosystem, ts is pretty smartly designed) and it will never be a requirement (on my side) for my next company to use typescript. Even working on front end is not a requirement although I mostly did only that for years. And what made me a better Typescript programmer was to hack some F#, C#, Elixir, Rust, Python… Not even real projects but just little katas and a lot of documentation readings. In my experience, becoming specialist in a langage can even be dangerous if your work doesn’t consists of « framework code » because the more you know about the machinery, the more you are tempted to write code that nobody else will understand. Of course it’s a trend I saw, not a general rule.
- xxpor 5y agoWe had an assignment in our junior/senior networking class in college that was to be done in Python. Someone raised their hand and said we've never had a class about Python, how are we expected to do the assignment? The professor said "If you can't figure this out, you really shouldn't be able to graduate". The dude groaned, but I really agreed. Now the same thing happens in job postings all the time. Companies looking for specific things rather than smart people. It happens on the job seeker side too. I understand not being interested in something, but say a job was in Elixir. I wouldn't hesitate to apply, but you'll see tons of responses on twitter that are like "oh I'm a JS guy" or something. Who cares! You'll figure it out.
- archsurface 5y agoI can't say I fully agree. Maybe for scripting languages. Some projects require knowing the intimate details of a language and its sharp edges, and that knowledge can take years to accrue.
- pjmlp 5y agoI guess that tends to happen at lousy universities. Most of the ones I would consider worthwhile attending, do have a polyglot curriculum.
- blacktriangle 5y agoWow am I grateful for my CS curriculum now, I didn't know such professors existed. Our first class focused on learning multiple languages, we did Rex, ISCAL, Java, and Prolog. It was intentionally designed to give you a feel for the scope of programming language paradigms. The follow up course was data structures in C++, and after that every class pretty much used whatever language the professor felt like. The department's official stance was that what mattered was concepts and not languages and any major could get proficient enough in any given language where they may not be able to develop good code in the large, but they could learn the core concepts the class was pushing. Except C++, fuck C++. My favorite line from a professor was "Any course taught using C++ always turns into a course ON C++."