As sacrilege as it sounds...just give up on Windows. It's over. Nobody cares. The base OS is a commodity at this point, and most good programmers prefer a Unix style environment. Lots of command-line tools, powerful shell scripts, and a world of open source tools.
In my opinion, where Microsoft is still heads-and-shoulders above the competition is in their middle-ware layers. Office is good. Office is really really good. When you really need to use a solid word processor or spreadsheet, the various, splintered openLibreWhateverOffices are just shit. When the files become complex, they can barely open up their own output without corruption.
In my opinion, they need to focus on all of the good software they have written, and abandon Windows.
Perhaps Windows and these products are too coupled? OK, fine. Open Source Windows. Do it. Systems are too large and complex to steal these days. Who has forked Darwin and cut out Apple's profits? Maybe something exists, but who cares.
I used to work with Oracle pretty heavily in the 90s, and 7 years ago quite a bit...Solid database, but worth the money?
I consider PostgreSQL the best piece of software I have ever used. Given how much I have used it, this is saying a lot.
I remember reading on the old Slashy-Dotty some quote from some language-designer that I will now paraphrase:
"There are two kinds of languages: Those that people complain about, and those that nobody uses."
The point of this anecdote being that the more you use a tool and learn its nuances and flows, the more you find to bitch about.
I have been using PostgreSQL for over 10 years. And in this time I have found very little to complain about. I may have a handful of anecdotes about its failings, and most of those are mediocre complaints, at best.
Obstreperous and cantankerous, you say? Why, I haven't heard such utterances since my carriage driver commented on -- I daresay lamented -- my choice of mustache-wax.
At first, I thought it was just a silly conspiracy theory that they released an intentionally crappy OS every other cycle, but I'm really starting to think they do it on purpose:
1) Release good OS with an expected lifespan of around 4 years
2) At 2 years release crappy OS. The people that bought the OS at 1) are not going to upgrade. All of the people purchasing new computers have no choice but to buy crap. While OS sales take a dip, it's not unmanageable.
3) Release good OS. People from 1) now upgrade, and people from 2) are desperate to get off the turd they bought. Money now pours in.
Chrome has really good debugging tools built in. I don't particularly care for FireBug, nor do I want to deal with updating it when Firefox updates. Maybe it updates itself now, I don't know. I stopped using Firefox out of annoyance at having to deal with updates.
Chrome works, and the built-in debugging tools are pretty solid.
Sure, Chrome is recording every drunken conversation I have with X-girlfriends, but nowadays that's expected behavior.
I am not in your specific field, but close. I am 36. My advice:
Stay hungry. Keep reading programming blogs. Work on hobby projects on weekends to keep your skills sharp. Write stupid games in languages you never use at work. Obsess over every little mistake in your code. Post ridiculous nuances of horrible PHP (fill in your language here) behavior.
When necessary, stay up till 4 AM writing code. Build a team of hungry programmers. Build a team of guys who code all day, and go home and code a little more when they're not playing Diablo or whatnot.
I hate to be an anus-hole, but your post sounds like the words of a tired burnt-out programmer. I wouldn't hire you. Medicare? Job Security and Office Politics? I didn't see anything in your post to indicate that you're still passionate about software development...And passion, IMHO, is the crux of staying employable in this field.
I disagree. A LOT of programmers don't work for software shops. Non software-shop employers don't care about whether your code is elegant, or architecturally sound, or following best practices etc.
You can be arrogant and tell people to get new jobs all you want, the reality is that there is a lot of money to be made writing software for random widget manufacturer -- and they don't give a crap how you make their business thrive as long as you do.
I have been maintaining the same code base for over 10 years.
At 3PM today I was kind of down. All of the things on my plate were way too big to do before 5. I figured I'd look for simple things in the Issue Tracker to work on.
"Add a nickname field, and migrate first names with (nickname) information into nickname field."
I could do that in 2 hours...But unfortunately...
About 30% of the field guys at my company are known by their nickname. Every payroll stub, every invoice, every bit of info currently concatenates first and last names. There are probably over 300 (being conservative) places in the code that concatenate first and last name. And even if I added the nickname to this concatenation, I'd have to make sure that the SQL queries pulled this field (SELECT * is evil)
And abandoning nicknames? HAHAHA, no freaking way. There would be a company-wide revolt. Even our clients would complain that they didn't know who "Jimmy Johnson" was, ("Ohhh...Jimmy 'Big-Dog' Johnson!")
So a 1 hour task turns into two weeks. And this is one of 138 things on my to-do list.
So, how do we maintain a passion for programming?
In my opinion, you just have to sneak in every ounce of innovation. You can spend the rest of your life fixing crap that they forced you to hack in the first place. You just have to sneak in the fun stuff.
From the perspective of the average user, a fax machine is not bad technology. They buy it, plug in two wires, type a number and go.
If they are going to do the same thing with a PC, they have to buy a PC, buy a scanner, make sure they have the appropriate scanning software, make sure they're scanning the a file format the recipient expects, ensure their PC has an Internet connection, make sure the attachment isn't too large to email, get the recipient to read out their email address in the phonetic alphabet to ensure they get it right, and I'm leaving out about 20 or so other things.
I dislike the arrogant tone of this post. Just because a technology is superior on technical merit does not mean that it necessarily gets the job done for the average Joe. You try talking users through all of the complexities of scanning, document management etc. You'll buy a fax machine in two days.
I have been coming to Slashdot for a looong time. In the "old days," something like this wouldn't have been considered remotely relevant to the site. And if somebody actually posted it, 80% of the comments would be complaining that it shouldn't have been green-lit.
Now? Posts like this look just like every other political pissing-match forum. There is a reason I don't go to Reddit.
I quit college because of math. I had taken a ton of CS courses, almost enough to graduate, yet still had year upon year of math to go.
I have been writing software for a living now for about 16 years. I don't recall EVER using any mathematics beyond arithmetic. (Even when I was writing 3D software, the freaking API handled the math for me)
CS is taught by math a-holes because that's the closest thing that existed in academia when these new-fangled gadgets arrived. Now? It's a joke to even pretend that these bearded math lovers should be teaching anybody.
16 year old kids writing mods for Minecraft know more about computing than those guys.
BTW, if you're not writing a windowed app, and are only interested in the canvas, you might want to look at SDL. You didn't specify exactly what you were working on.
Soo...if you're writing a windowed "productivity" app, use QT.
If you're writing a custom-graphics heavy app like a game or maybe some sort of visualization tool, use SDL.
I am very leery of APIs. It takes a lot to sell me. I started using QT just before the move to QT4, and instantly fell in love. At this point, unless I'm writing a game, I won't even touch C++ without using QT.
QT is the most consistent, well-documented, and intuitive API I have ever used.
You establish precedent by suing some no-name company with no resources or lawyers. That's how the big boys do it. You don't sue someone who has a lawyer *at the helm*.
The gigantic paradigm shift to parallel programming ain't going to happen for the programming "public at large". Most programmers are high level script programming dudes who don't even understand pointers, the stack, the heap, or the concept of "type". You think they're all of a sudden going to become code-ninjas who understand massively parallel programming? How is some guy who doesn't even understand what a memory address is going to deal with this sort of thing?
The only way this problem is going to be solved by software (if at all) will be at the compiler, OS, and tool level. Joe-script-dude isn't going to get any better.
So what...make my systems incompatible with Windows and...make my clients (who, let's face it, are going to be using Windows) unable to use my software or services?
And how is your magic server going to allow you to instantly grab your cool file when you're at work or at your friend's house? People don't understand their own filesystem as it is ( http://www.hardgeus.com/index.php?ndailyupdateid=7 23 ), much less a fileserver on their own network.
As home PCs get fatter, the web gets easier to use. The fat client is dying, and the fatter "media center" to organize those fat clients is a ridiculous dream.
Shame on you Slashdot for even letting this touch the front page. I read "this kind of crippling ignorance among professional astrophysicists is astonishing," and wondered who in the hell was who had the balls to say something like that...Is "SteakNShake" a famous physicist I haven't heard of?
Then I clicked that last link. Ooooh. This guy is nuts. Still doesn't explain why he got his rant accepted on Slashdot.
Quantum mechanics is incompatible with relativity at extreme scales? Must be something wrong with relativity.
It seems to me that every couple of months on Slashdot I read some article about Quantum Mechanics being incompatible with some fundamental assumption we have about the universe, and the immediate response is to throw out the assumption. The "proof" we're given is dense reams of equations that nobody on earth can or will ever review, and experiments that you need a 20 million dollar supercollider and a grant to repeat.
Maybe if every single thing we have ever learned, will learn, perceive, know, think, and measure is incompatible with this model...maybe it isn't everything else in the universe that is wrong.
It would help if he got out of the university and actually got involved in the real world of programming.
The real world is full of middle managers cludging together spreadsheets to "fill in the gaps" where their vaunted off the shelf panacea failed to deliver on a crucial piece of functionality. It is full of guys in a corner hacking together an Access database and making a colossal mess out of enterprise projects.
There is a shocking dearth of qualified programmers out in the real world. They are sorely needed.
Some mod kid not being able to move his.mp3 files to a new player doesn't stack up against Fortune 500 companies being completely tied to 3rd party crap software written in VB. Or to tens of thousands of government documents tied up in a proprietary format that only Microsoft can properly support. Or legions of people who know nothing but IE and Outlook. Or all of the businesses that run themselves off of highly customized crap Access databases. The list goes on. Reality whould have to turn inside out and doughnuts would have to rain from the sky before Apple even got in the same ballpark as Microsoft.
As sacrilege as it sounds...just give up on Windows. It's over. Nobody cares. The base OS is a commodity at this point, and most good programmers prefer a Unix style environment. Lots of command-line tools, powerful shell scripts, and a world of open source tools.
In my opinion, where Microsoft is still heads-and-shoulders above the competition is in their middle-ware layers. Office is good. Office is really really good. When you really need to use a solid word processor or spreadsheet, the various, splintered openLibreWhateverOffices are just shit. When the files become complex, they can barely open up their own output without corruption.
SQL Server: Good. IIS, C# and .NET development? Good.
In my opinion, they need to focus on all of the good software they have written, and abandon Windows.
Perhaps Windows and these products are too coupled? OK, fine. Open Source Windows. Do it. Systems are too large and complex to steal these days. Who has forked Darwin and cut out Apple's profits? Maybe something exists, but who cares.
TLDR;
Make Windows Open Source
I used to work with Oracle pretty heavily in the 90s, and 7 years ago quite a bit...Solid database, but worth the money?
I consider PostgreSQL the best piece of software I have ever used. Given how much I have used it, this is saying a lot.
I remember reading on the old Slashy-Dotty some quote from some language-designer that I will now paraphrase:
"There are two kinds of languages: Those that people complain about, and those that nobody uses."
The point of this anecdote being that the more you use a tool and learn its nuances and flows, the more you find to bitch about.
I have been using PostgreSQL for over 10 years. And in this time I have found very little to complain about. I may have a handful of anecdotes about its failings, and most of those are mediocre complaints, at best.
It is a solid workhorse.
Obstreperous and cantankerous, you say? Why, I haven't heard such utterances since my carriage driver commented on -- I daresay lamented -- my choice of mustache-wax.
> On purpose - probably yes. Sinister plan - rather not.
I'd argue that forcing every PC buyer to beta test your ambitious experiments is a sinister plan.
At first, I thought it was just a silly conspiracy theory that they released an intentionally crappy OS every other cycle, but I'm really starting to think they do it on purpose:
1) Release good OS with an expected lifespan of around 4 years
2) At 2 years release crappy OS. The people that bought the OS at 1) are not going to upgrade. All of the people purchasing new computers have no choice but to buy crap. While OS sales take a dip, it's not unmanageable.
3) Release good OS. People from 1) now upgrade, and people from 2) are desperate to get off the turd they bought. Money now pours in.
4) See 2.
Chrome has really good debugging tools built in. I don't particularly care for FireBug, nor do I want to deal with updating it when Firefox updates. Maybe it updates itself now, I don't know. I stopped using Firefox out of annoyance at having to deal with updates.
Chrome works, and the built-in debugging tools are pretty solid.
Sure, Chrome is recording every drunken conversation I have with X-girlfriends, but nowadays that's expected behavior.
I am not in your specific field, but close. I am 36. My advice:
Stay hungry. Keep reading programming blogs. Work on hobby projects on weekends to keep your skills sharp. Write stupid games in languages you never use at work. Obsess over every little mistake in your code. Post ridiculous nuances of horrible PHP (fill in your language here) behavior.
When necessary, stay up till 4 AM writing code. Build a team of hungry programmers. Build a team of guys who code all day, and go home and code a little more when they're not playing Diablo or whatnot.
I hate to be an anus-hole, but your post sounds like the words of a tired burnt-out programmer. I wouldn't hire you. Medicare? Job Security and Office Politics? I didn't see anything in your post to indicate that you're still passionate about software development...And passion, IMHO, is the crux of staying employable in this field.
Note: The firstname/lastname structure existed 3 years before I was even at the company. How's that for business realities?
I disagree. A LOT of programmers don't work for software shops. Non software-shop employers don't care about whether your code is elegant, or architecturally sound, or following best practices etc.
You can be arrogant and tell people to get new jobs all you want, the reality is that there is a lot of money to be made writing software for random widget manufacturer -- and they don't give a crap how you make their business thrive as long as you do.
I have been maintaining the same code base for over 10 years.
At 3PM today I was kind of down. All of the things on my plate were way too big to do before 5. I figured I'd look for simple things in the Issue Tracker to work on.
"Add a nickname field, and migrate first names with (nickname) information into nickname field."
I could do that in 2 hours...But unfortunately...
About 30% of the field guys at my company are known by their nickname. Every payroll stub, every invoice, every bit of info currently concatenates first and last names. There are probably over 300 (being conservative) places in the code that concatenate first and last name. And even if I added the nickname to this concatenation, I'd have to make sure that the SQL queries pulled this field (SELECT * is evil)
And abandoning nicknames? HAHAHA, no freaking way. There would be a company-wide revolt. Even our clients would complain that they didn't know who "Jimmy Johnson" was, ("Ohhh...Jimmy 'Big-Dog' Johnson!")
So a 1 hour task turns into two weeks. And this is one of 138 things on my to-do list.
So, how do we maintain a passion for programming?
In my opinion, you just have to sneak in every ounce of innovation. You can spend the rest of your life fixing crap that they forced you to hack in the first place. You just have to sneak in the fun stuff.
From the perspective of the average user, a fax machine is not bad technology. They buy it, plug in two wires, type a number and go.
If they are going to do the same thing with a PC, they have to buy a PC, buy a scanner, make sure they have the appropriate scanning software, make sure they're scanning the a file format the recipient expects, ensure their PC has an Internet connection, make sure the attachment isn't too large to email, get the recipient to read out their email address in the phonetic alphabet to ensure they get it right, and I'm leaving out about 20 or so other things.
I dislike the arrogant tone of this post. Just because a technology is superior on technical merit does not mean that it necessarily gets the job done for the average Joe. You try talking users through all of the complexities of scanning, document management etc. You'll buy a fax machine in two days.
I have been coming to Slashdot for a looong time. In the "old days," something like this wouldn't have been considered remotely relevant to the site. And if somebody actually posted it, 80% of the comments would be complaining that it shouldn't have been green-lit.
Now? Posts like this look just like every other political pissing-match forum. There is a reason I don't go to Reddit.
Grapes are Sour.
I quit college because of math. I had taken a ton of CS courses, almost enough to graduate, yet still had year upon year of math to go.
I have been writing software for a living now for about 16 years. I don't recall EVER using any mathematics beyond arithmetic. (Even when I was writing 3D software, the freaking API handled the math for me)
CS is taught by math a-holes because that's the closest thing that existed in academia when these new-fangled gadgets arrived. Now? It's a joke to even pretend that these bearded math lovers should be teaching anybody.
16 year old kids writing mods for Minecraft know more about computing than those guys.
BTW, if you're not writing a windowed app, and are only interested in the canvas, you might want to look at SDL. You didn't specify exactly what you were working on.
Soo...if you're writing a windowed "productivity" app, use QT.
If you're writing a custom-graphics heavy app like a game or maybe some sort of visualization tool, use SDL.
I am very leery of APIs. It takes a lot to sell me. I started using QT just before the move to QT4, and instantly fell in love. At this point, unless I'm writing a game, I won't even touch C++ without using QT.
QT is the most consistent, well-documented, and intuitive API I have ever used.
You establish precedent by suing some no-name company with no resources or lawyers. That's how the big boys do it. You don't sue someone who has a lawyer *at the helm*.
The gigantic paradigm shift to parallel programming ain't going to happen for the programming "public at large". Most programmers are high level script programming dudes who don't even understand pointers, the stack, the heap, or the concept of "type". You think they're all of a sudden going to become code-ninjas who understand massively parallel programming? How is some guy who doesn't even understand what a memory address is going to deal with this sort of thing?
The only way this problem is going to be solved by software (if at all) will be at the compiler, OS, and tool level. Joe-script-dude isn't going to get any better.
OK, so programmers swarmed away from the fat client model after the DLL hell that ensued, and moved to software as a service...
And now, the natural progression is that the Desktop experience has to get richer because the software moved onto the server...
Wait, what?
So what...make my systems incompatible with Windows and...make my clients (who, let's face it, are going to be using Windows) unable to use my software or services?
That game only works when you run the show.
And how is your magic server going to allow you to instantly grab your cool file when you're at work or at your friend's house? People don't understand their own filesystem as it is ( http://www.hardgeus.com/index.php?ndailyupdateid=7 23 ), much less a fileserver on their own network.
As home PCs get fatter, the web gets easier to use. The fat client is dying, and the fatter "media center" to organize those fat clients is a ridiculous dream.
Shame on you Slashdot for even letting this touch the front page. I read "this kind of crippling ignorance among professional astrophysicists is astonishing," and wondered who in the hell was who had the balls to say something like that...Is "SteakNShake" a famous physicist I haven't heard of?
Then I clicked that last link. Ooooh. This guy is nuts. Still doesn't explain why he got his rant accepted on Slashdot.
Quantum mechanics is incompatible with relativity at extreme scales? Must be something wrong with relativity.
It seems to me that every couple of months on Slashdot I read some article about Quantum Mechanics being incompatible with some fundamental assumption we have about the universe, and the immediate response is to throw out the assumption. The "proof" we're given is dense reams of equations that nobody on earth can or will ever review, and experiments that you need a 20 million dollar supercollider and a grant to repeat.
Maybe if every single thing we have ever learned, will learn, perceive, know, think, and measure is incompatible with this model...maybe it isn't everything else in the universe that is wrong.
It would help if he got out of the university and actually got involved in the real world of programming.
The real world is full of middle managers cludging together spreadsheets to "fill in the gaps" where their vaunted off the shelf panacea failed to deliver on a crucial piece of functionality. It is full of guys in a corner hacking together an Access database and making a colossal mess out of enterprise projects.
There is a shocking dearth of qualified programmers out in the real world. They are sorely needed.
Some mod kid not being able to move his .mp3 files to a new player doesn't stack up against Fortune 500 companies being completely tied to 3rd party crap software written in VB. Or to tens of thousands of government documents tied up in a proprietary format that only Microsoft can properly support. Or legions of people who know nothing but IE and Outlook. Or all of the businesses that run themselves off of highly customized crap Access databases. The list goes on. Reality whould have to turn inside out and doughnuts would have to rain from the sky before Apple even got in the same ballpark as Microsoft.