5 ms·
The software development community is connected globally and there's doubtlessly a common culture which is shared between software developers which visit social
by blub 5y ago
The software development community is connected globally and there's doubtlessly a common culture which is shared between software developers which visit social networks like HN, github, reddit, etc. One aspect of this culture which bothers me in particular is the idea that learning programming languages is unconditionally good.
I've focused on C++ and Python, but never used the latter for big projects and even that showed. I had to reach for the docs more, I had to look into idioms or patterns more for Python whereas my C++ flowed.
While it took me maybe one or two weeks to become familiar with the syntax of a language and write reasonably idiomatic code, it took months to really grasp the ecosystem and more than a year of work in that language to use it like a native and develop expertise in it.
The languages which I've had to learn for specific projects, such as Objective-C, Java or C# have been mostly forgotten. There's a very strong correlation there with the size and length of the project. I think some knowledge is still there and I would be faster to reach competency if I had to use them again, but I would in no way claim to know for example Objective-C now.
Now that I haven't programmed seriously in about two years because of a role change, I can definitely see the impact on my C++ skills: I don't know much about C++17 and up and I've started to find code harder to grasp. Not individual pieces of code, but rather the whole, as if when I step back I no longer have an intuitive grasp about it. I find some language constructs ugly and confusing and no longer feel so attached to C++ or even programming surprisingly enough.
Ironically I've been doing some data science stuff in Python, so my skills are pretty much the same there.
I don't like learning programming languages unless I also get something else in return for the time invested. For example I've found an interesting book about systems programming (Rust in Action), so I'll recap my systems programming and also learn some Rust on the side. Pure language books like Programming Rust, even if targeted at C++ programmers and otherwise good do nothing for me. I'd rather learn more about the software/hardware areas I'm interested in.
- rramadass 5y agoAgree with all your points. >While it took me maybe one or two weeks to become familiar with the syntax of a language and write reasonably idiomatic code, it took months to really grasp the ecosystem and more than a year of work in that language to use it like a native and develop expertise in it Very true. I am always mystified when people tell me that i should be able to "pick up" a new language in a couple of weeks. I find learning even a so-called "easy" language like Python somewhat "difficult". Unless i read/write a lot of Python code there is no way i can get fluent in it to feel comfortable with it.
- fouric 5y ago> One aspect of this culture which bothers me in particular is the idea that learning programming languages is unconditionally good. Stated exactly like that, yes, that's probably not a good idea. Stated like "learning new programming languages that are significantly different than the ones you already know is unconditionally good" - that's very close to truth. The languages you named are Objective-C, C++, Java, C#, and Python. From my perspective, those languages are so similar as to be almost the same. Learning Red, Io, (a) Lisp, Prolog, Smalltalk, Curry, TLA+, Coq/Lean (or any other theorem prover, actually), Erlang, or (a) FORTH will actually give you an experience that's significantly different than anything else you've used before, with accompanying new ways of thinking that you can apply to your other languages and projects.
- exdsq 5y ago100000%. As I mentioned in another thread on this post I was going to take a look at C++ again and since then started playing about on a little game. Almost immediately I approached the problem like Haskell and started passing data as GameState{} structs between pure functions. Using other languages for enough time has made me avoid global/mutable data like the plague and I _think_ I'm a better person for it.
- gilch 5y agoI'd add an array language like APL or J to that list. Idris is worth mentioning, but maybe Curry+Coq cover that space. Maybe Icon too. Concepts, Techniques, and Models of Computer Programming [1] with Mozart/Oz covers a lot of ground by itself. [1] https://www.goodreads.com/book/show/772585.Concepts_Techniques_and_Models_of_Computer_Programming https://www.goodreads.com/book/show/772585.Concepts_Techniqu...
- blub 5y agoThat may be, however I'm not looking for experiences when learning software engineering topics. Instead I want something that fits together with my existing knowledge framework and delivers significant benefits. Programming languages are table stakes and they compete for attention with the things which do matter in a project, like the social aspects and project management, team skills, development ecosystem and domain knowledge among others. Having for example deep knowledge the kernel would be more useful to me than all of the languages in your list combined.
- timClicks 5y agoThanks for the mention of Rust in Action! I am curious about how you found you discovered it.
- blub 5y agoI like to browse the catalogues of various publishers that I consider of good quality and look for interesting books. Another one that caught my eye was "Rust for Rustaceans" (still in development), which admittedly is a pure language book, but it describes more specialised topics, which aren't typically found in regular books about Rust.