3 ms·
This is a somewhat harsh take. I've met plenty of programmers also set in their ways in that C or Python is the only language needed and that concurrency or fun
by bmitc 4y ago
This is a somewhat harsh take. I've met plenty of programmers also set in their ways in that C or Python is the only language needed and that concurrency or functional programming is "hard" and thus not worth learning. Whereas I find concurrency and functional programming, given the correct language for it like F#, LabVIEW, Elixir, etc., is easy and manageable. It just all depends on context and experience and additionally philosophy.
For me, I have been developing for several years in several different contexts and consider myself a decent software developer who focuses a lot on proper design and implementation, readability, maintainability, speed when needed, etc. However, I am relatively weak on all the various Unix tooling (I know the general basics of course) and am currently trying to address that. Reasons for this are that I worked professionally for a long time in a Windows environment. Any scripting done was via PowerShell, which is a quite powerful tool and language and something I actually often prefer given the readability, if not verboseness, of the commandlet names or via the programming language used. My more Linux oriented roles or projects are more recent and have used languages like Elixir or F#. Since both of these languages have built-in scripting, any scripting was done with the languages themselves. Elixir has such powerful tooling that, for whatever reason, I just rarely found that I needed the Unix command line tools for what I was personally responsible for or working on or what wasn't provided by Elixir or my editor in VS Code. Elixir allows you to build custom Mix commands, which is also nice. However, now I'm in an environment where many of these tools could be very useful, so I am trying to pick them up. And it's always possible that I was missing out, so it's important just to be willing to learn as things present themselves.
Just stating this because context is everything.
- Fire-Dragon-DoL 4y agoKeep in mind that "unix knowledge" doesn't mean knowing bash scripting, but understanding a bit about the shell is the key part. You worked on windows, but you probably know about environment variables, how they are passed around, what PATH is, how to list files in a directory, cd around, copy/delete files, redirect, pipe and how to use git given your profession. Isn't that the case? I've been on Windows and learned all that as a hobbyist (I'm a professional developer, but I work on unix systems) I asked the company I work for to add as a requirement "familiarity with bash", because otherwise we would get candidates that don't know how to use PATH, or environment variables, and that was a serious problem. It's equivalent to having the requirement "know how to use a computer"
- bmitc 4y agoI got the feeling that what the commenter wrote exactly was a bit of hyperbole, but maybe that wasn't the case. Either way, I would sort of expect new college graduates or anyone to receive some training from their seniors and colleagues along these lines. They aren't all that hard to learn or all that hard to teach. The main concern is showing context and uses cases where they're useful and important. > Isn't that the case? Yes, of course. But there is certainly a wide variance in people's understandings of all the command line tools and uses cases that they are presented with in their own work and experience. Software engineering is a huge field with a ton of use cases and different contexts and applications and domains. It's really all over the place. There is some patience needed when interfacing between all of these.
- watwut 4y agoI think that not knowing how to use PATH or environment variables is something that can be fixed in like 15 minutes maximum. You just explain it to junirs and that is about it.
- Aeolun 4y agoBut then all the nuances take 2 more years to realize.
- bigpeopleareold 4y agoI understand your point about Unix knowledge not requiring shell scripting experience, but I have always thought that POSIX shells are rather an important part of the Unix interface that I feel like I can't separate the two. Of course, you can do mostly everything that is in bash in other languages (and certainly there are one too many pain points in bash) but I feel less knowledgeable not knowing shell scripting. For me, learning how to shell-script to some capacity has opened my understanding a lot about what I am working on. I took this opinion towards some presentations for co-workers and their came back to me saying that they have gotten, even if a glimpse, a broader sense what can be done. That really transcends a bit from the hot-new-tech rush, because these bits are foundational, in one way or another, to our unix/linux/bsd systems.