Live data from Hacker News

Trying new programming languages helped me grow as a software engineer

cichocinski.dev

71–80 of 192 posts

Re: Trying new programming languages helped me grow as a software engineer

#71
post #52

Different languages also have their own culture and ecosystem, which are also valuable to learn in order to get a different perspective. Some things that are taken as best practices are bad practices in other langauges and vice versa. For example, lots of Java devs are against early and multiple returns to the point of absurdity, while in functional languages this is idiomatic and no problem at all. Using different l…

I think this is my first post on HN, but have been a long time lurker.

That aside. Your point around ecosystems is interesting to me. As a wannabee coder I'm always trying new things. Most of my code was in PowerShell although I did do a bit of C++ and Delphi in school.

I have been dabbling with dotnet core (C#) and Python the last couple of years.

I tried to get into Java a bit, but to be frank the learning curve to go from start to consuming a REST service was just way too hard. I couldn't understand the difference between when I should be using JavaEE, JavaSE, spring boot, spring framework etc. I gave up after two days.

In contrast Python is just so easy. And if I want something more robust I'll rather go to dotnet.

Go is on my list as it seems to offer a lot of what I want, and although there are some apparently weird things in it I think i can be productive with it for some basic business logic within a couple of days.

Re: Trying new programming languages helped me grow as a software engineer

#72

Earlier quoted context omitted.

When I was in undergrad our professor had us learn Java, but also Lisp and Prolog, and that was very valuable to my growth as an aspiring (and now thankfully employed) programmer :)

Don't get me wrong, I'm not saying that there's no value in programming languages I'm saying that programming languages aren't they only way to get familiar with concepts

Nobody said they're the only way. But they _are_ a very good way, for a variety of reasons (which have already been discussed here).

Re: Trying new programming languages helped me grow as a software engineer

#73
Every so often, it's the first language we were taught in college or bootcamp.

In the last few years I’ve interviewed over 100 graduating Computer Science students from very good schools.

One of the questions I asked was, “Did you learn your first programming language as part of your college curriculum or before?”

Almost all of them answered they learned their first programming language in college.

I can’t even fathom it. I learned BASIC when I was 10. Logo when I was 12. Assembly when I was 13. C when I was 16 and C++ when I was 17.

This was a long time ago of course - I can’t believe how much things have changed with a population self-selected for being interested in computers.

Re: Trying new programming languages helped me grow as a software engineer

#74

Earlier quoted context omitted.

Their point still stands. There’s little that can’t be accomplished by any modern, general-purpose programming language.

You can build it all with Church calculus, but the point of engineering is to create and then follow better methods to solve problems.

This is what I see as the main point to get out of this. The larger your toolbox, the better you are able to solve problems. Learning new languages adds tools to that toolbox.

Re: Trying new programming languages helped me grow as a software engineer

#75

Earlier quoted context omitted.

It’s two different things. For instance using more functional language convinced me of the vertus of immutability. Pattern won’t do that

> Patterns won’t do that I’m pretty sure Clean Code by Uncle Bob has a section on why you should use const to achieve immutable variables. In any case, good style guides inevitably are preaching this as well, as are good senior engineers. All in one’s first language (human), without needing to understand lambda calculus, or monads to run a hello world.

> I’m pretty sure Clean Code by Uncle Bob has a section on why you should use const to achieve immutable variables.

Doesn't go far enough.

Firstly, it's just advice. I might like it, but it doesn't mean I can get my teammates to do it.

Secondly, if I want to do it, I have to get it right, any mistakes I make are on me.

Thirdly, const is not enough. You'll probably end up with immutable pointers to mutable data, rather than any kind of referential transparency.

A language which helps you get immutability right is a world of difference. It's like the difference between a memory-safe language vs just using C (and a C textbook which recommends that you write memory-safe code)

Re: Trying new programming languages helped me grow as a software engineer

#76
post #52

Different languages also have their own culture and ecosystem, which are also valuable to learn in order to get a different perspective. Some things that are taken as best practices are bad practices in other langauges and vice versa. For example, lots of Java devs are against early and multiple returns to the point of absurdity, while in functional languages this is idiomatic and no problem at all. Using different l…

I think this is my first post on HN, but have been a long time lurker. That aside. Your point around ecosystems is interesting to me. As a wannabee coder I'm always trying new things. Most of my code was in PowerShell although I did do a bit of C++ and Delphi in school. I have been dabbling with dotnet core (C#) and Python the last couple of years. I tried to get into Java a bit, but to be frank the learning curve to…

You sound like you'd enjoy TypeScript with NodeJS. Low learning curve. Highly productive. Massively versatile ecosystem. You can be functional or OO. And of course, the type system, which will feel similar to C#. It's very fast and obviously JS being the language of the web is a natural benefit too.

Re: Trying new programming languages helped me grow as a software engineer

#77
post #52

Different languages also have their own culture and ecosystem, which are also valuable to learn in order to get a different perspective. Some things that are taken as best practices are bad practices in other langauges and vice versa. For example, lots of Java devs are against early and multiple returns to the point of absurdity, while in functional languages this is idiomatic and no problem at all. Using different l…

The problem being, cargocults tend to hold the power. So yes, learn new concepts, practice them and more, but don't be surprised if in practice you can barely utilize them thanks to cargocults insisting they are wrong. We see this in C#. Has a ridiculous amount of features outside default OOP and continues to get more baseline, even has great interop with several other languages. But culture changes very, very slowly…

The reason why I’m not adopting C# is because I’m never going to be a windows user.

Re: Trying new programming languages helped me grow as a software engineer

#78
I think the period where I grew the most as a dev was an interlude when I knew I was changing jobs, including moving countries.

From having built trading systems in c++, I ended up building, over about a year or so:

- A django (python / js) website. It integrated with both Android (java) and iOS (objective-C) apps that could read QR codes and ask the server stuff. It also made me interact with the app stores for the first time. It was also the first time I did anything on the web, including figuring out how pages are laid out. Bought a MacBook for the first time too.

- A consumer iOS app written in Swift. New language again. Went native, ran into a lot of constraint errors that eventually taught me a lot.

- A trading system in c++ that didn't use STL.

I remember at the beginning of each new language/framework thinking "OMG how do I do this". And yet it's not that bad once you've done it once or twice. I reckon it's a lot easier than learning a new natural language (German, Mandarin).

The thing it really gives you is a low opportunity cost. If you have some task, and the evidence points towards some specific framework/language being a good choice, hopefully you won't resist it due to internal anxiety about starting over again.

Re: Trying new programming languages helped me grow as a software engineer

#80

Earlier quoted context omitted.

The problem being, cargocults tend to hold the power. So yes, learn new concepts, practice them and more, but don't be surprised if in practice you can barely utilize them thanks to cargocults insisting they are wrong. We see this in C#. Has a ridiculous amount of features outside default OOP and continues to get more baseline, even has great interop with several other languages. But culture changes very, very slowly…

The reason why I’m not adopting C# is because I’m never going to be a windows user.

It works on Linux just fine
Post reply on HN