Live data from Hacker News

Trying new programming languages helped me grow as a software engineer

cichocinski.dev

61–70 of 192 posts

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

#61

Earlier quoted context omitted.

"Being able to understand the business of the customer and create software that helped them do that easier." I don't consider that software 'engineering' necessarily. Yes to be a more useful employee or more successful freelancer etc understanding the business case is absolutely an essential skill. But the 'engineering' begins once the problem has been defined; how do you actually implement the vision.

Defining the problem is a core part of engineering to me.

Of course understanding the requirements is essential, but the post effectively said the most important aspect of SE is to help the client business.

Imagine it's civil engineering, and we're talking about building a bridge.

To what extend does a bridge engineer need to understand regional trading patterns, and what bridge location and size would give maximum economic benefit?

To me that's a separate discipline to building actual bridges, and no amount of practice with different bridge designs or methodologies is going to be relevant to that, and vice versa.

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

#62
post #53
post #42

Earlier quoted context omitted.

Other than the fact that C can be run on basically any device on earth, and the super rich history behind it, does C as a language have any benefits? I personally don’t find C more ergonomic, expressive or beautiful compared to any other language.

Pointers. Nearer to the core. In assembly it's all pointers, pointers and pointers. C having better support for pointers makes it nearer to how the processor works, compared to other languages.

> C having better support for pointers make it near to how the processor works, compared to other languages.

Java is almost entirely pointers to heap allocations, yet I don't think anyone would argue that Java is close to how the processor works.

I also don't think that the C virtual machine is all that close to how machines actually work any more.

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

#63
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. Large scale adoption tends to happen only when some major framework insists on using a certain paradigm.

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

#64
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…

Which features are you talking about?

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

#65

Earlier quoted context omitted.

"Being able to understand the business of the customer and create software that helped them do that easier." I don't consider that software 'engineering' necessarily. Yes to be a more useful employee or more successful freelancer etc understanding the business case is absolutely an essential skill. But the 'engineering' begins once the problem has been defined; how do you actually implement the vision.

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.

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

#66

I do believe that learning many programming languages is overrated Learn concepts, obtain foundational computer science knowledge, write complex projects not just get familiar with somebody's interpretations that they implemented as a language. Languages that I used besides my job language barely gave me anything, in most cases they made me appreciate more for sane environment (package managers, IDEs, debuggers, stro…

>but still - concepts are more important, you don't have to learn langs in order to be familiar with concepts You kinda do. Concepts are often exclusive to languages. And often concepts can't be internalized without practice of that lang. Your own examples in your edit literally contradict what you say as you chose langs with extremely divergent concepts. C# and Erlang, Rust and C. You missed haskell and lisp.

>Your own examples in your edit literally contradict what you say as you chose langs with extremely divergent concepts. C# and Erlang, Rust and C. You missed haskell and lisp.

How so?

You can learn and understand concepts implemented in Rust without learning Rust

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

#67

Earlier quoted context omitted.

But learning languages is a great way to learn many concepts. Obviously it doesn’t teach you everything - nobody claimed that. Want to learn concurrency? Try a concurrent language. Parallelism? Learn a parallel language. Data flow? Learn a data flow language. Pattern matching? Learn a language with pattern matching. Etc for a thousand useful subjects to learn. These are great ways to learn so many software engineerin…

Are you actually learning X when your lang has strong and easy to use primitives for that, so you dont have to understand how does it work? eg async await You are just learning tool like Excel

Yeah for example I can’t think of a better way to teach yourself to understand and use structured concurrency than a language like Cilk which naturally drives you in that direction. I actually started a PhD on how language design shapes the way you think about concepts (but finished it on implementation instead.)

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

#68
post #42
post #33

I value learning new languages, especially as I have yet to find a very good one. Some are pure and beautiful like Scheme, but if you asked me what single language I would take to a lonely island with me where I was stranded, it would still have to be C. To those here who would like to have some guidance diving into other languages I can recommend these two books: Bruce Tate: Seven Languages in Seven Weeks https://ww…

Other than the fact that C can be run on basically any device on earth, and the super rich history behind it, does C as a language have any benefits? I personally don’t find C more ergonomic, expressive or beautiful compared to any other language.

C gets out of your way and lets you do your job without buying into a lot leaky abstractions and without going to annual C conferences. C doesn't argue with you about whether something is a number or an array of bits. C is blazingly fast compared to most alternatives. C enables you to detect and handle heap overflow errors without panicking or crashing (just in case your memory is finite).

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

#69
Leaning new languages is great fun, but I do think it has diminishing returns when you have covered the major paradigms. The key to growth is to discover new "aspects" where you can broaden your experience, e.g. windows vs unix, desktop GUI versus web versus systems programming, low level vs high level, game programming vs line-of-business development, stand-alone apps vs large enterprise systems, green field versus legacy.

Knowing 27 languages but only having worked on say small green-field web apps is still a very limited experience.

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

#70
post #28

I do believe that learning many programming languages is overrated Learn concepts, obtain foundational computer science knowledge, write complex projects not just get familiar with somebody's interpretations that they implemented as a language. Languages that I used besides my job language barely gave me anything, in most cases they made me appreciate more for sane environment (package managers, IDEs, debuggers, stro…

How are you supposed to learn concepts like higher-order functions if you only know C, for example?

The book Functional C by Hartel & Muller.

https://www.semanticscholar.org/paper/Functional-C-Hartel-Mu...

Post reply on HN