Windows Loses Ground With Developers
An anonymous reader notes that InfoWorld is covering a survey of North American developers that claims that Linux is gaining share as the number of developers targeting Windows fell 11 percent over the last year. Evans Data has been conducting these surveys of client, server, and Web developers since 1998. Evans Data says that the arrival of Windows Vista likely only kept the numbers from being even worse. The big gainer wasn't developing for a Web platform, but rather for Linux and "nontraditional client devices." Windows is still dominant, with 65% of developers writing code for this platform. Linux stands at almost 12%, up from 8% a year earlier. The article says that Evans Data collected information on Mac and Unix development but did not include them in this year's report.
I'm guessing the majority of the applications written to target Linux are server applications. It would be interesting to see if this can be explained by a result only in the server application space, or if more client applications are also being targeted at Linux. Of course, in order to find that out, one would probably have to pay to view the full report.
I know more "indy" developers that code irrespective of the platform. Programming is just different these days - what took an entire staff can now be done efficiently with just a few. Is the market downsizing or has growth in the field shrank or is it more platform agnostic? How do you determine a windows coder vs a universal or only a linux/unix coder?
Windows has some of the best tools out there - software as a whole has matured to a level that there hasn't been anything "new" and its been mostly upgrades. No wonder the market has shifted. Just because there are more developers in other environments, doesn't mean the market has dried up, just that it has matured.
Embedded Linux is growing like chuff, and has been for some time. Around 3/4 of Linux jobs on my preferred job site are now for embedded, and for damn good money aswell!
/.] point, let people hack around with source and they'll do amazing things. Keep it all locked up in a nice blue box and what do you get? A bunch of crap smartphones which aren't clever. Meh.
Surely that's the [regularly stated on
By day, I code in WTL, Win32API and (regrettably) MFC. Like a great many, I wonder whether .net is pushing developers away from Windows.
This mess is drawing Microsoft's attention away from the C/C++ layer, where it's sorely needed, and into what, as far as I'm concerned, is comparable to Visual Basic. Put simply, neither my employer nor I are interested in writing in a proprietary, bytecode-interpreted language. If we have to abandon our C/C++ investment, it certainly wont be for a proprietary java knockoff. It will be for the real thing, allowing us to slowly drift away from Windows.
The way Microsoft ended Vb6 with no easy upgrade path to .net both irritated developers here and stranded some of them in vb6 with no path to .net. Some of them trained to java (tho they would have preferred .net).
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
For mainstream and corporate software, Windows may continue to rule, but the biggest leaps I've seen in development have been in the niches where Linux has prominence. Audio, networking, manufacturing and server-side work is booming for Linux.
In a perfect world, this article would distinguish between development "for pay" and all development.
technical writing / development
Meanwhile, the entire POSIX spec, suitable for fully implementing a POSIX system including the utility apps, with commentary and rationales for design decisions, fits in about two and a half feet of binders.
Intellisense is practically mandated if you want to work with an interface as baroque as Win32. And it's nice even when you're working with your own defined classes and structures. But it has its own drawbacks, as Petzold notes:
I develop for many platforms at work. It's a core part of my job. I mostly enjoy writing code for Unixish platforms, and tolerate the Windows stuff. The APIs on Unix are small, well-thought-out, have few if any side effects, and tend to be thoroughly documented. I find very few interfaces on Windows have even a majority of these traits, let alone all of them.
I've rarely felt the need for more debugging support than Linux comes with. The problems tend to be simpler and more easily uncovered. Eclipse is nice, and appears to take many of the good things about Visual Studio and leave much of the bad behind. For some projects, it's very useful. For others, it's overkill.
Another item worth reading - the whole book, really - is The Art Of Unix Programming. For a Windows developer's perspective on the book, see here. Needless to say, I don't agree with everything he writes there, but you might find it interesting.
PHEM - party like it's 1997-2003!
I won't lock myself in with Mono either. It's like Wine or Samba, it will always be playing catch-up, and Microsoft is quite capable of doing screwy things. Mono is even worse than .Net, it will always be the almost-compatible .Net lookalike that will only further Microsoft's tacit assertion that it is the development platform.
The world's burning. Moped Jesus spotted on I50. Details at 11.
IMHO, Windows will only lose its dominance when cross platform development tools become as easy to use and feature rich as Visual Studio. The software that I write is all Windows-only because it is written in Visual C# from within Visual Studio (using .Net).
.NET wouldn't be so bad, but Mono isn't quite ready. There are, however, Ruby bindings for .NET available.
This is a part of the issue, but keep in mind that most commercial software houses are going to target the biggest userbase they can. Even if they have to use Notepad to write the software.
I would love to write software that would work on Windows, Linux, and OS X; but I work at a small development company. We are far more productive just sticking to one set of code for one platform, because there are no good languages out there that work for any platform.
There are good languages that work for any platform. Ruby is the current favorite among fanboys. (I'll admit, it's my favorite too, for now. Though it has its warts). Java is certainly cross-platform, but it's almost as painful to code in as C.
Writing software that works with Linux, OS X, and the other Unix-like operating systems is trivial, if you plan it right from the start. Apple has done a lot to make targetting Unix-like operating systems as easy as possible, and they keep adding tools to make porting Unix applications to OS X easy.
For instance, OS X comes with Perl, PHP, Python, Ruby, and Java, by default. Getting GCC installed is a matter of installing the Xcode Tools. Leopard is going to include Cocoa bindings for Ruby (I'm excited about that).
Outside of Java, Windows doesn't include any cross-platform programming language, which complicates deploying to that platform. Targetting
After all, I am strangely colored.
FTA: "The arrival of Windows Vista likely only kept the numbers from being even worse." I think that Vista actually hurt the numbers. Not so much Vista itself, but in Microsoft's post-launch execution. Microsoft's big developer hotness is supposed to be all these great .NET technologies. But the lack of Vista adoption might be putting the brakes on developer enthusiasm because Microsoft is failing to lead the way in showing the end result benefits of it.
COM didn't really catch on until Microsoft started demonstrating how hot it was through dogfooding and releasing applications architected on it. With it came a greater degree of modularity and flexibility that they demonstrated compellingly well with IE, Office, Visual Studio, etc.
To this day, Microsoft hasn't delivered any real WPF+WCF applications - at least none that a significant number of people care about. They should be pumping out amazing applications that can be showcased on Vista, causing developers to envy and copy them, and causing customers to actually want Vista because of the hotness the developers *and* Microsoft are offering.
The migration of developers away from personal computers toward "nontraditional client devices" worries me a bit. The best thing about the rise of the PC was that it gave people access to a machine that could be configured to do a lot of different things, including "learn about making your own applications". I wonder whether all the "embedded devices" will also provide a coming generation with a platform from which to recreate their world the way PCs did for us.
I love the Mac interface, but the thing I always loved about Windows was that it forced me to look more closely at what was going on than I may have wanted to. And that exploration of the nuts and bolts of an overcomplicated desktop OS gave me insights that I may never have gained had I stuck with the more opaque Mac OS. Of course, for those who want that experience today, Linux has it in spades. But as much as I loathe Vista and the company that has trumpeted this abomination on us, I'm glad that I had to learn about a "registry" and I'm glad I had to learn about shared libraries and memory management.
As much as I'm sure that the devices that will contain embedded processors will provide us with utility and convenience, pleasure and all varieties of entertainment, I hope that the idea of an all-purpose, configurable, expandable box with a keyboard and operating system doesn't go away any time soon. And I hope that developers continue to create tools for us to use on those boxes.
You are welcome on my lawn.
But not surprised. In the last few years Microsoft has increasingly taken a "My way" or the "High way" approach to software development. Like many others I work as a full-time software developer for many years now and these day's building a working solution is the easy part. The hard part is to make sure it runs at a customers site. The very thing Operating systems are supposed to enable.
The hack and slash security patches Microsoft brings out these days often unexpectedly denies features in the API on which solutions are based thus rendering large chunks of our code useless and a workaround must be found.
Security is important in a connected world and indeed not recognised enough my many programmers but the hap hazard ducks and dives in Windows makes it hard to tackle this issue in a structured way. Often I find myself hacking my way around "Security patches" in order to restore functionality in our software.
Add to that this crazy program (I refuse to call it an operating system) called Vista which is is so secure you hardly can run anything on it. I imagine the next version of Windows is 100% secure as it will only run "Notepad" and "Calculator"
So, bottom line. If the Operating System no longer allows us to use the hardware to drive our programs then the OS get's in the way. For me the problem is that I have a huge skill base in Windows and my programming tools that I don't like to give up. But for some of my projects I seriously consider to try my hand at Linux so I can provide a turnkey solution (Include the OS with the software).
MS Windows has become like a government. It is supposed to serve but instead it now insists to rule the IT world.
I love the Mac interface, but the thing I always loved about Windows was that it forced me to look more closely at what was going on than I may have wanted to. And that exploration of the nuts and bolts of an overcomplicated desktop OS gave me insights that I may never have gained had I stuck with the more opaque Mac OS. Of course, for those who want that experience today, Linux has it in spades. But as much as I loathe Vista and the company that has trumpeted this abomination on us, I'm glad that I had to learn about a "registry" and I'm glad I had to learn about shared libraries and memory management.
You're glad you have a lemon for a car because it's forced you to learn car mechanics?
A whole article on statistics, yet no where does it say what is the confidence level. Is the percent error +/- 10% ? If so, then this is a bogus story. Since it doesn't bother to even say, then this reporting is rubbish. Where's your love for mathematics, Slashdot editors?
> And that exploration of the nuts and bolts of an overcomplicated [Windows] desktop OS gave me insights that I may never have gained had I stuck with the more opaque Mac OS
The overcomplicated state of Windows has done more to turn people off computers than it has to help them. There are only a paltry 500 million personal computers in the world, that is abject failure on the part of the 30 year old personal computer industry. There are 4x as many phones right now and everyone will tell you phones suck. Microsoft is to blame for a lot of the PC's unpopularity. People fucking HATE them. Just stop making excuses for Microsoft. The PC is fucked right now and the Web moving to phones can't happen fast enough.
Also your remark is bigoted: 1) coding is just one way to use a computer, and it is only a solution to a minority of tasks, and 2) you obviously know nothing about Mac OS.
> The best thing about the rise of the PC was that it gave people access to a machine that could be configured to do a lot of different things,
> including "learn about making your own applications".
Here is how you make your own application on the Mac:
- launch Script Editor (the Mac shell since System 7 in like 1992)
- write AppleScript code
- click "Compile" (it is instant)
- choose File > Save As
- specify "Application"
- give your new application a name
- click OK
- in Finder, locate your new application and launch it
- enjoy
I'm a graphic artist, I went to art school not CS, didn't even use a computer until I was 21, and yet I make 50+ Mac apps per year that do the work of an entire other graphic artist, using nothing but the built-in tools in Mac OS. Sometimes an app only takes a half hour to develop and it saves me days and days of laborious, repetitive work. Some apps take as much as a week to develop, but they do a week of work in one hour the first time you use them, then every other time it is just gravy.
With AppleScript development, the applications on your system become libraries for your own apps. So even though you only wrote 20 lines of code and it only took a half hour, the app you create write JPEG's with Photoshop, writes MPEG-4 movies with QuickTime, creates folders and moves files around using Finder, converts EPS to SVG using Illustrator, runs Unix shell scripts using the command line, and so on, all in the same little rapidly-developed AppleScript app, so you get out very high quality products with very little work.
Maybe that is just the Mac being opaque to you, but I can tell you I go to Photoshop conferences and I sincerely want to know what Photoshop-Windows users are using to automate Photoshop since they don't have AppleScript. For example, converting 500 camera photos into 500 Web photos 1/8th of the size with 1/8th inch border and logo watermark is really time-consuming and error-prone if you try to do it manually, you want to write some code that describes the above task and have Photoshop do the task once on the first photo, then once on the second photo, etc. What I have found is that Photoshop-Windows users, when faced with a task like that, go out and buy yet another photo editing app that specializes in converting batches of photos and they take whatever options are in there and make the best of it. They don't get the exact watermark they wanted, necessarily, and the files they create are not as high-quality as Photoshop creates, and they also spend hundreds of dollars on these useless apps.
It is Windows that is opaque, in my opinion. Especially if you're not an MSDN member C software developer. Windows users are not supposed to develop their own custom software, they're supposed to buy software from Microsoft's developers developers developers.
I mean, Tim Berners-Lee is a physicist who had an idea for a software app and wrote it himself on a NeXT machine and it became Microsoft's worst nightmare. Those same tools have been on the Mac since 1999, how opaque is that?
> access to a machine that
I see what you mean, and I agree.
A computer should be programmable by its users.
I believe the idea is that by centralizing your computer, grandma doesn't have to worry about antivirus or installing updates. I know that sure would be a help for mine; she doesn't understand why she has to install updates monthly; and I'm certainly not going to be her [Linux] support speed-dial.One correction though: it wasn't the PC that turned kids into programmers.
It was (a) Unix systems at universities and
(b) the cheap home computers of the 1980s,
with a BASIC interpreter and a demo scene, like the Commodore 64.
Java has been around a bit longer, so it actually has a bit more 3rd party support industry wide, certainly more stable support. It has a lot of open source libraries which are commonly shared across the industry, so new tools/products are generally very quick to learn and if you need to work around something a library doesn't handle well, it's a bit easier to do it in a maintainable way.
.net world. Stuff like Apache Jakarta, Spring, Hibernate, HSQL, POI, and so on are all particularly useful tools that (it seems from my brief experience of .net programming) I would spend a while looking for and then spend some cash to get hold of if I wanted something similar for a .net application.
This is something I was going to mention too. Java development has a culture of free tools that seems to be lacking in the