31 ms·
Author here. I wanted to dig a little into data from the Stack Overflow survey on what made programming languages loved or hated and I think what I found is pre
by agbell 5y ago
Author here. I wanted to dig a little into data from the Stack Overflow survey on what made programming languages loved or hated and I think what I found is pretty interesting: it seems like people don't like the languages where they have to do maintenance work.
Python and C# seems like outliers here though. People really love them.
- offtop5 5y agoI like C# simply due to the tooling. I legit left a job since they made me use Eclipse with Java.
- mariodiana 5y agoThe more experience I gain as professional software developer, the more I begin to appreciate that what matters is the entire "ecosystem," rather than what language I'm programming in. What's the IDE like? How are dependencies managed? Is there a solid framework, as opposed to "move fast and break things" frameworks or "scores of amateurish third-party add-ons to choose from" to solve everyday problems? What's the programming community like? What kind of companies use these solutions, and what's the culture like there? Tools a big part of what we do. If I were a mechanic, I would rather work on Hondas with a good set of tools than I would Ferraris with tools bought at WalMart. Personally, I've done only a tiny amount of C# development. I'd have no problem going back to that.
- xxs 5y ago>they made me use Eclipse with Java. I mean I do use them quite voluntarily. That's the thing that annoy(ed) so much.
- offtop5 5y agoDoesn't Eclipse feel a bit dated to you ? Like they wrote the UI in 1999 and never updated it
- xxs 5y ago> Doesn't Eclipse feel a bit dated to you ? I wonder what you'd say about the command line. The interface has not changed for like 40y+. I 1st started using eclipse in 2006 or so, while writing some plugins (post compilation byte code editing) in 2003-2004. The UI has been updated somewhat since, not drastically, though. I've got pretty decent understanding how it works internally and what functionality is available. Truth be told, updating the UI just to look modern might find some fans but to many it'd make it less usable for no good reason. For instance I don't want my hand drill to feature an OLED display, coupled with bluetooth just b/c it's cool and dandy.
- maynman 5y agoIf you're using Java, definitely give IntelliJ a try. I think it makes writing Java a pretty enjoyable experience.
- offtop5 5y agoAgreed, I like IntelliJ. I said since I never know if a Java shop will make me use eclipse again, I tend to shy away from java. Of course I do have a price, if we're doing 200k up I'll put up with Eclipse
- zwieback 5y agoYeah, C# and Python are my two daily drivers. I think a good case can be made for C# due to excellent tooling and sitting in the sweet spot for statically typed languages: less enterprisey and more practical than Java and less painful than C++.
- kaba0 5y agoI never understood why a company would enforce the use of a specific IDE. If they can’t set up .gitignore files and formatting properly, they should not be doing IT.
- offtop5 5y agoTo be fair eclipse and IntelliJ do different things to set up run configurations. Although I'll agree this is a very very bad sign, I left that job as soon as I could. I will say socially they did a lot of fun stuff, we had tons of parties and everything. Felt almost like a college campus, the actual work environment was horrible though.
- mywittyname 5y agoStandardized IDEs are incredibly important for productivity in complex software projects. Large applications can get to the point where the build system and IDE kind of meld together, and custom IDE plugins are required to navigate or build the code base. I've worked at a place where developers didn't do any IDE configuration. The IDE (Visual Studio) was customized by another department then was pushed out to developer machines. This meant that developers could focus on building software and not messing around with configuration and plugins. It also ensured that everyone's code compiled the same, ensured library compatibility, etc. IDEs may not matter so much on small web apps, but one cannot extend that fact to all of software development.
- kaba0 5y agoThat’s a huge liability/red flag. Builds should be deterministic, and reproducible. An IDE should have no say in that, that’s what build tools are for. That’s just all around terrible. Also, a sane IDE should be able to make use of the config files of the build tool.
- mywittyname 5y agoI mean, if you say so. Said project has been around for 25+ years, survived a dozen acquisitions, is actively developed by 1000s of developers all over the globe, and has revenues in the $100s of millions. So clearly they are doing something right. Personally, I loved never fucking around with IDEs.
- o_nate 5y agoI agree. One reason I think people hate VBA so much is because the tooling is abysmal. If you've ever had to work with VBA code in the Excel code editor, you'll understand what I'm talking about. Ironically, both that and Visual Studio are made by the same company.
- achtung82 5y agoAlso with C# and .Net there has been a lot of changes since .Net Core released 2016. Doesn't change that there is a lot of older legacy code so im not entirely sure.
- decafninja 5y agoI loved C# as a language. I'm not fond of most companies that use C# though.
- mapmap 5y agoCould you elaborate on the second statement? Why is that?
- decafninja 5y agoMost companies that use C# and .NET tend to be big old school enterprise orgs where tech is an unrespected cost center. Java is arguably used in many of the same companies, but also seems much widespread across a more diverse range of different types of companies.
- xxs 5y agoOne of the main issues with stackoverflow is (has been): very few seasoned developers ask questions and even they do, it'd be likely to be unanswered. That skews its user base very heavily towards the younger people.
- calvinmorrison 5y agoOr different styles of learning! Some languages are really good in situ for debugging and solving problems, some are more opaque and require looking things up. Also 'brown' languages being older and more established, there are plenty of older engineers who RTFM first, look at man pages first, etc then ask questions.
- mnd999 5y agoSeems there's a lot of hate for Scala and Haskell regardless of the project? What is it with functional?
- notsureaboutpg 5y agoScala and Haskell are also in the most loved languages, why do you think there's a lot of hate for them?
- erik_seaberg 5y agoI think some people feel productive writing lots of code, while others feel productive learning ways to avoid writing lots of code.
- shadowgovt 5y agoI've never seen someone succeed at giving an objective explanation. Anecdotally and subjectively, functional programming is a different type of thinking about a problem... Instead of breaking it down into stages, I'm almost breaking it down into a graph and figuring out how the nodes must connect. LISP is also like this. I wouldn't be surprised if cognitive modeling shows that graph-manipulation engages different chunks of one's brain than step-by-step procedural description, but I do not know.
- microtherion 5y agoThere might be a particularly strong Green/Brown delineation with those, with programmers loving to write code in them, but disliking to maintain other people's code.
- jarpadat 5y agoIt’s an interesting conjecture but I don’t think the data makes a compelling case. When you compare 2 points in time you have a lot of alternative hypotheses, like the 2016 languages just being historically unpopular for some reason. A better support is a cohort analysis where we see languages start green/liked and transition to brown/disliked over their lifecycle. The real difficulty though, is addressing the alternative hypothesis that language design improves over time. This is obviously the view of language designers or else they wouldn’t make languages. In that case, you would see the languages turn brown in your analysis, and even in more robust cohort analysis. But it would not be because of a honeymoon bias, it would be because you don’t want to use a horse-drawn carriage if you could use an automobile.
- visarga 5y agoDifferent decades have different applications, hardware and trade-offs. So popular languages could be just overfit to the current epoch. It doesn't mean there is always progress, could be just change.
- JoshTriplett 5y agoI've maintained large Python codebases, and I found it somewhat painful, especially when finding and fixing issues. I got tired of discovering issues at runtime that any compiled language would have found at compile time. I still enjoy Python, but I don't consider it an exception to any general principles here.
- skrtskrt 5y agoAbout 4 years into my career I am really really reaching the end of my rope with Python. Type annotations have improved things a bit, but since it's not real, or enforced by anything, every library types things differently & often incorrectly, if at all, and the type annotation system itself still has massive limitations. That's not to mention the package management ecosystem. I'm getting into Go and Rust. Go is fine but it would be a million times better if it had proper enums & pattern matching for result & options types. Being able to define a class of errors as an enum in Rust makes handling them so easy. Rust is really cool, but I know I am barely scratching the surface with it and it would be hard to convince any of the Python shops I have worked in to go to Rust due to the learning curve. All the Python shops I have worked have eventually started to write some stuff in Go, except the one shop which is just data/PySpark stuff .
- tcbasche 5y agoPutting aside the dreary package management situation with Python (although perhaps Poetry will scratch that itch?) codebases really only shine with comprehensive unit testing, linting, static analysis and a bit of discipline to stop it from degrading. Although perhaps that’s applicable to any large codebase.
- skrtskrt 5y agoI agree. Poetry is good but not good enough to use at work yet. Also - not Poetry’s fault - many Python packages are miserable at listing and versioning their dependencies correctly. Re: everything else, you’re right but it gets really tiring writing tests that are handled by the type system in other languages. Go has this problem too to a certain degree since multiple error subtypes can’t be expressed as an enum. Just errors.Is and errors.As everywhere.
- vaughandroid 5y agoThank you for sharing. Intuitively I think your point makes a lot of sense. I don't think there's really enough data to really prove it, but I liked your approach. I do think there's other stuff going on as well though. For example, newer languages are often designed to address perceived problems with existing popular languages. I'm a long-time Kotlin and Java developer, and Kotlin feels a lot like Java 2.0 - it specifically addresses a number of pain points people were experiencing with Java. So of course I'd rather be working with Kotlin, and going back to Java can feel like a drag.
- bob1029 5y agoAs a C# zealot, I would have a hard time providing an unbiased take, but its probably the "whole picture" ideal that makes developers take to it so strongly. When working with C# (aka some specific flavor of .NET), you are embraced with the following: - Visual Studio, probably the best IDE ever created. - With .NET (Core 3.1~6), code that usually "just works" x-platform. - Mostly-workable application development ecosystem as of .NET 5. - Ecosystem of first-class CI/CD/Cloud/et. al. products & features. - World-class debugging experience, even across the network. - Stable versioning scheme with dependable LTS options. - Confidently run mission-critical loads on latest Windows Server platforms. - Very large library of high quality 3rd party dependencies (nugets). - Trivial to configure own nuget server for internal/private use. - Virtually everything you need is a first class dependency. - LINQ - Very good GC, especially when configured and used correctly. - Strongly-typed with very expressive language features as of C#8. - Fast compilation times, even on monster projects. - Principally maintained by largest software company on earth - Maintained by the open source community as well - Extreme performance (.NET Core optimizations, Kestrel, Disruptor, et. al.) - Extreme productivity (VS tooling, Self-Contained Deployments, Blazor, etc.)