5 ms·
Frankly I've never understood the desire to be a polyglot. The time spent learning new syntax and a new standard library could have been spent learning librari
by CuriouslyC 8y ago
Frankly I've never understood the desire to be a polyglot. The time spent learning new syntax and a new standard library could have been spent learning libraries, algorithms, data structures, etc, so I don't think it's the most productive way to improve yourself as a programmer. I'm more interested in learning a new language because it lets me do something I couldn't do before.
- wincy 8y agoI only got my current job because I happened to be reading a book on C#, which is strange because we barely code in C#. I spent several years programming in Elixir which got blank stares from recruiters. But saying I know Elixir and C# actually got me a pretty good gig! In an ideal world, knowing data structures and algorithms would get job interviews, but without being able to at least speak to some specifics of the language being used, a good number of HR departments will screen you out before you’ll get to the data structures and algorithms part of an interview.
- scarface74 8y agoWhy would knowing “algorithms and data structures” be ideal? In the real world, most jobs aren’t about knowing either. They are about translating business requirements into code.
- mcguire 8y ago...and everyone knows code has nothing to do with algorithms and data structures.
- scarface74 8y agoWell, if you’re doing yet another software as a service CRUD app or another bespoke app that will never be seen outside of a company - like most developers - knowing: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level). Isn’t that useful or how to invert a binary tree. I would much rather you show some competence in the language we are using. Knowing leetCode isn’t going to help if we need an iOS app....
- vips7L 8y agoEverything you're saying is true, but for some reason companies still think they need to test you on hackerrank/leetcode like problems. I would much prefer to do some code in the frameworks I claim to know.
- scarface74 8y agoNot companies I interview for. The last time I had any type of algorithm type interview was 1999 when I was applying for a job as a low level cross platform C bit twiddler. Since then all of my interviews have been a combination of soft skill, tell us about your experience, white board architectural discussions type of interviews. Of course they asked me technical questions about the language and stack they were using.
- pjmlp 8y agoDepends very much on what that CRUD app is doing. Knowing algorithms and data structures pretty well, is the difference between an update button taking a couple of minutes, or milliseconds.
- scarface74 8y agoAnd I would even say that’s not true most of the time. Why is the update button slow? - Is your customer in Asia and your servers are in us-east-1? Do we need a multi master database one in each region? Can we make even that faster by doing an eventually consistent write? - do we really need a synchronous update process or can we use queues to make it more consistent? - is our web server slow? Should we scale horizontally or vertically? Should we use autoscaling and if so which metric should we use? What should our cooldown time be between autoscaling events? Do we need to autoscale across regions? Where is our traffic coming from? - is our database indexed properly? Did we look at our slow query logs? Did someone do something stupid like have triggers on our database unnecessarily? Is an RDMS the right choice? Do we need to denormalize the table? - or is it our code? This is the thought process my manager was looking for when he interviewed me. Not the best way to traverse a tree.
- golergka 8y agoNew concepts that you can then you anywhere though.
- jcora 8y agoIt should be qualified that you should learn languages that are actually conceptually different. You could easily learn 20 languages that are practically identical as far as the actual concepts are concerned. The difference, to you as a programmer, between C and Python, is much smaller than between Haskell and either of those, or between Haskell and Idris. Covering a larger volume of concepts is what should be the emphasis. That is definitely useful, maybe even more useful than just memorizing stock algorithms and data structures, especially if you engage with the mathematics behind the languages.
- nativeimigrant 8y agoHmmm... C and Python are vastly different. I think focus should be on use cases. For example (really) knowing Python, R, and MATLAB, is far less impressive than knowing Python, C++, and Haskell.
- badfrog 8y agoAgreed. For example, I spent a couple years using JavaScript as my main language at work then changed jobs and learned OCaml. If I need to use JavaScript again, I'll do it in a much different (IMO better) way than before I understood functional programming.
- atoav 8y agoI always had the feeling that the hard stuff about programming wasn't libraries or syntax, but how to structure code conceptually – especially if you want to keep it flexible and future proof. Learning Rust for example gave my C and C++ a noticable boost, just because Rust made some topics unavoidable that I managed to subconsciously avoid for years when it comes to C, C++.
- barbecue_sauce 8y agoMy impulse to learn new languages is primarily driven by my desire to be able to read code that other people are writing, not necessarily to use it myself. For example, I'm not a huge fan of C++ or x86 assembly, and I doubt I will ever write anything significant in either, but I learned C++ so I could read what other people were doing with it, and I learned x86 assembly so I could understand reverse engineering tools better.
- dcbadacd 8y agoIn my opinion it's a good thing to have a point of comparison to other languages when writing code, there might also be concepts prevalent in other languages that your primary language doesn't commonly use but would be useful. It's really similar to learning multiple spoken/written human languages.
- mcguire 8y agoIf you knew Ocaml, when Java generics rolled around, they were no big deal. If you had a handle on Haskell, Rust's traits are familiar.
- scarface74 8y agoI know four useful languages well - C, C#, JavaScript, and Python. I know C++ as it existed shortly after the STL came out. As far as knowing a modern framework and an ecosystem around the language to do something useful, I would take C off the list. I haven’t done anything useful with C since MFC/Win32. If you want to do anything with the web, you have to know Javascript. C# is my favorite “serious” big project language but it’s way too heavyweight for simple scripting. For that Python is my go to language. But, I’m not going to spend my limited free time learning any new technology that doesn’t directly help my career.
- JustSomeNobody 8y agoAt work we use C#, Java, C++, Python, BASH, powershell, Javascript, PERL, etc... If you only want to work on C#, you're limiting your mobility here. Personally, I never get bored because there's so many interesting projects in different languages.
- pjmlp 8y agoAre we working together? :) Yep same here.
- JustSomeNobody 8y agoWe could be, y'all hiring? :)