5 ms·
Really? Visual Studio is widely recognized as one of the best IDEs available, and the .NET platform is leaps and bounds better than, say, vanilla Java at this p
by brianberns 11y ago
Really? Visual Studio is widely recognized as one of the best IDEs available, and the .NET platform is leaps and bounds better than, say, vanilla Java at this point. I'd like to know what sort of "modern software development" you do that is so "terrible" on Windows.
- angersock 11y agoI'll expand on both my own experience and that of TeMPOraL here. First, to clear up something: I don't dislike Windows, I don't dislike Visual Studio (having used it for over a decade now), and I absolutely think that .NET is better than Java--if you are only deploying on Microsoft platforms! Windows has a number of technical advantages over most of the 'nix folks (IOCP, for example, is pretty cool), and the documentation is like a thousand times better. The debugging experience can be a hell of a lot better. The drivers story is a hell of a lot better. The graphics and audio stories don't even bear bringing up because of how far behind and fragmented the 'nix ecosystem is. I am not making those complaints. However, Windows (and again, I noted vanilla Windows, not one with a bodged-on Cygwin or git-bash) was not designed for developers. It's heritage and primary interaction metaphor is not one that a developer uses. The Unix Way (as popular as it is lately to badmouth) is a powerful notion of composable simple programs. The desktop and GUI metaphor on Windows doesn't support that. The notion of a command-line as a happy little conversation between the user and the system doesn't exist, least of all because the selection of default tools on Windows is so cripplingly tiny that doing meaningful work from the command-line is near impossible (and Powershell only kinda/sorta helps with this). As TeMPOraL points out, a lot of software on Windows is written by domain experts who don't actually know anything about software engineering. Even a rank noob on 'nix quickly learns basic piping and complexity management. There is no such evolutionary pressure on Windows devs, least of all because of the friendly tools put into place to manage complexity. As a result, the basic ideas of little helper scripts or small programs or quick hacks to test ideas out are strange to a lot of devs--and when they do decide to play, they end up creating applications that are Winforms or MFC or <Microsoft flavor of decade> hairballs that are hard to update and maintain. They usually end up with nice little apps, but the source is usually closed and the app is large enough (due to boilerplate and IDE bloat) that a casual contributor may have a hard time jumping in (if they can at all). The mindset is just completely different, and not being exposed to both is pretty bad.
- toomuchtodo 11y agoWell said!
- brudgers 11y agoVanilla Windows ships with PowerShell. Since it works at a much higher level of abstraction than byte/text streams, it is reasonable for some people to believe that it is more sensitive to developer needs than standard *nix shells. Since it more fully integrates with Windows services, it is also reasonable to hold the opinion that it is a better tool for system operations than Cygwin in many contexts. The Unix way is a good engineering approach, but it is not unreasonable to hold that it is not the sole good engineering approach because "good engineering" is only meaningful given a specific set of requirements, goals, and constraints. There is plausible historic evidence that the design of Windows was critical in the wide spread adoption and proliferation of general computing devices into the lives of non-technical people by providing economies of scale that vendors of alternatives did not pursue. If I had to summarize it, I would say that Windows gave us a culture in which software vendors were able to decouple themselves from individual hardware vendors. While Windows was proprietary, the hardware upon which it would run was not and Microsoft was able to make billions by selling operating systems at affordable prices into the mainstream market.
- tracker1 11y agoI was mostly windows for most of my developer career... That said, I prefer bash scripts to powershell... with PS, it just feels like I have to type a lot to do anything... the more primitive the task, the more the variance is. TBH, anything much more complex, I'm likely to use node, or maybe perl. Then again, I don't know too many other people who would open VS just to proof something out as a console app... I wrote a lot of one off .Net console apps over the years. These days if I tend to need solutions that work in Linux, OSX and Windows... and use all three regularly.
- angersock 11y agoIf you want to bring history into it, recall that Microsoft (and to a lesser extent, Unix vendors themselves like Sun and SCO) did a great job of disrupting the adoption of Linux in the 90s and spreading FUD among normal people and IT types. I'd love to hear your thoughts on the engineering side though. :)