Live data from Hacker News

Learn more programming languages, even if you won't use them

thorstenball.com

241–250 of 319 posts

Re: Learn more programming languages, even if you won't use them

#241
post #201

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…

learning rust might teach a javascript programmer a lot about performance that they can apply to their javascript. learning f# or rust might get a c programmer comfortable with ADTs which one can leverage in C with a little work. i do agree though that taking this too far can just be a waste of time. maybe pick up ONE new language outside of whatever domain you are currently in, see if you learn anything useful.

Re: Learn more programming languages, even if you won't use them

#242
post #201

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…

This is why we need practical immortality. There's just too much fun to be had.

Re: Learn more programming languages, even if you won't use them

#243
post #105

Learn 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,…

> Lately I've confirmed its because they know exactly 1 language , but they know it so well & in so much depth, they know exactly where to look, the right mcmc library, the right slice sampler, the right optimizer, that's what matters.

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

#244
post #16
post #5

I 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.

Not as uncommon as you are suggesting I would think. These particular tools and languages are often learned as a group, because they support each other.

(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

#245
post #209

Earlier 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…

So within those two weeks while you are “researching” how are you going to know real usage patterns with real users? Is your research going to perfectly predict where all of the bottlenecks and optimizations need to be in the entire system?

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

#246
post #14

Earlier 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?

OK you can write a handrolled loop almost perfectly. /Why/ are you writing ten years worth of loops - something a computer can do for you?

Re: Learn more programming languages, even if you won't use them

#248
post #27

Earlier 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…

"no loops means less bugs"

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

#249
post #210

Earlier 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.

Coming from a procedural dynamically typed language like PHP and then learning rust, clojure, and node JS. All have huge benefits.

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

#250
post #3

In 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.

Could you please elaborate on how it changed your life? I am interested in learning Elixir and wondering if you can give some words of encouragement, assuming it changed your life positively :)
Post reply on HN