I mean sure, if you have limitless time then feel free to learn a bunch of programming languages as well as everything else you could want to learn. But real humans have opportunity cost. If you are a software engineer, the time you spend on skill development can already cut across many, many dimensions. Additional programming languages is just one, and I'd argue a fairly narrow one after you've touched on a few key…
Learn more programming languages, even if you won't use them
241–250 of 319 posts
Re: Learn more programming languages, even if you won't use them
#242I mean sure, if you have limitless time then feel free to learn a bunch of programming languages as well as everything else you could want to learn. But real humans have opportunity cost. If you are a software engineer, the time you spend on skill development can already cut across many, many dimensions. Additional programming languages is just one, and I'd argue a fairly narrow one after you've touched on a few key…
Re: Learn more programming languages, even if you won't use them
#243Learn more ? I'm actively trying to unlearn a bunch of languages at this point! ofcourse, when I was a wageslave in the bay area, its nice to know python, java, javascript, scala etc. - got me jobs every 2-3 years & put food on table. now that i'm in academia, its completely upside down. literally everybody is way more productive than me in just about any task. The other day I as supposed to program a poisson clock,…
It sounds to me like you're working in a highly specialized area that requires deep domain knowledge and rich set of tools to apply that knowledge. Your colleagues have a lot of familiarity with that domain and those tools. Knowing multiple languages isn't your problem, it's just that you haven't spent your entire career working in this particular domain and you're playing catch-up.
Re: Learn more programming languages, even if you won't use them
#244I think there's a bit of a threshold with language learning. When you know a handful (or just theo necessary ones for your job), there is probably a bit of tendency to be religious about your "stack". When you know a few more than you need, then you're driven to pick between them for any given thing. Then, you start picking languages you don't know and learning them to do some thing you need done, and so on. I wrote…
"Here are the languages and DSLs that ended up in the mix: cron, Makefile, bash, sed, regex, jq query, python, R, sql, nginx conf" And also anyone who could replace you will have to know all these languages. Nice approach to job security.
(R is perhaps the exception, but it does actually work really well here, because it's the best tool for certain kinds of table mashing and chart creation.)
Little command line tools, sqlite and short, focused programs all tied together with a makefile is a really nice way to arrange a data processing project.
You end up with lots of intermediate output tables to look at, each of which is produced with a small step. This makes for easy testing and debugging.
Re: Learn more programming languages, even if you won't use them
#245Earlier quoted context omitted.
Right. Like that’s going to happen in an environment where shipping code on two weeks sprints is expected. Even in your perfect world where this does happen, it’s not like you could possible know what type of bottlenecks or usage patterns will happen until you get real users using your code. Are you suggesting we go back to a waterfall approach and not get fast feedback and learn what works as you are developing?
It does happen in two weeks sprints, that is what refinement planning, spike stories and research sprints are all about. And in case you missed, the large majority of companies that actually moved into agile, nowadays are doing what we could call scrum-waterfall. Plenty of bottlenecks and usage patterns are already clear from reading the RFP documents and preparing the respective sales pitch offer. Surely if one code…
Are you going to perfectly predict the size and number of VMs that you need? The size of the database? Where your users are and the average latency? Are none of your developers going to mistakes that aren’t apparent until you are running at scale?
There is more to architecting a system than just “code”.
Re: Learn more programming languages, even if you won't use them
#246Earlier quoted context omitted.
Most non-functional languages will implement map/filter/reduce as loops under the hood, but realizing that there is an abstraction for general sequence processing frees you up to focus more on the core business logic at hand and reduces the surface area of your code for bugs. Sure, handrolling a loop is a trivial activity that novice programmers can figure out, so you should _never_ get it wrong because you _never_ e…
I don't recall exactly how many handrolled loops I've messed up in the last 10 years, but the number is either 1 or 2. Could I mess up one or two map/filter/reduces in 10 years? Is it impossible to mess them up? What about the cases they don't cover, so you use your own recursion?
Re: Learn more programming languages, even if you won't use them
#247Learning Elixir has opened my OO-biased eyes to the new and interesting world of FP. Knowing the theory isn't enough, you have to code it to grok it!
Re: Learn more programming languages, even if you won't use them
#248Earlier quoted context omitted.
I can’t tell if this is sarcasm but if it isn’t it just proves the point. Your teammates must just love working with you. I’d love to see the look on their faces when you committed that code. “I just learned Erlang. Check out what I did without telling anyone. Suck it. Boom!”
It is not sarcasm. Yes, they love working with me, they learn new things from me and they use it. Generally their face is like "o_O I wish I've learned it before". I use build-in functions of PHP and Java in way without loops, there is nothing unknown. I don't write Erlang code. Here is an example what I mean; And here in Python class Fibonacci: def fibonacci_nth(self, n): if(n == 0): return 0 if(n == 1): return 1 el…
But the loops will be clear and explicit. People can check if you have an off-by-one error.
Python does not support many recursive calls, after "n" gets beyond a certain number, the code will crash with a RecursionError.
That is a bug which is much harder to see. The code will crash if N < 0 for the n_th() method, which is probably a bug.
Re: Learn more programming languages, even if you won't use them
#249Earlier quoted context omitted.
I would argue that for software engineers, the fields you mentioned would be adjacent fields, while other languages would give deeper insight into the tools of the very trade you're in. In a time of people going for T-shaped careers, another language is deepening the vertical bar, while another field enriches the horizontal bar. In that sense, learning a new language and learning a new field are complementary, but di…
Learning a new language doesn't necessarily deepen the vertical bar if the language cannot really be used to improve productivity/innovation on top of an engineer's current toolset. Learning TypeScript on top of Javascript can be thought of as vertical, but learning say Lua or C# on top of JS is probably better described as horizontal unless you're already intending to do some really specific desktop application.
Rust ownership and types system teach you about the freedom it affords you when reasoning about values in a system.
Clojure teaches you about separating state from logic and the benefit of keeping it at the edges of a system.
Nodejs teaches you about async and programming which is imo, as different as functional is to OO. The way you need to reason about things is very different. The non blocking needs teach you about what types of things are blocking and which are not.
I took all these lessons back to PHP and my systems are massively improved as a result.
Most of the PHP hate comes from people dealing with PHP code written by people who simply don't know how to program.
That is not a defense of PHP, it has many faults, but it's a language like any other. I have problems, big ones, with every language and ecosystem I've ever been exposed to. That doesn't detract from their benefits or the concepts they can teach you.
Also, it takes like 20-30 hours to get mediocre with a new standard library and syntax. You won't "learn the language" but you'll get a good feel for it.
Arguing time cost as a reason to avoid learning new languages is pretty weak when you're spending a career programming.
Re: Learn more programming languages, even if you won't use them
#250In case anyone isn't familiar with them, these two books[1][2] from the Pragmatic Programmer are great for doing just this. They offer a guided intro to 7 different languages each, and they're a whole lot of fun. [1] https://pragprog.com/book/btlang/seven-languages-in-seven-we... [2] https://pragprog.com/book/7lang/seven-more-languages-in-seve...
The first book led me to discover Erlang, which literally changed my life. Great resource.