The Lounge is rated PG. If you're about to post something you wouldn't want your
kid sister to read then don't post it. No flame wars, no abusive conduct, no programming
questions and please don't post ads.
If you favor Windows, C#, ASP.NET (MVC and Web Forms), WPF (though there is some stuff I haven't tried yet... maybe it'd be called WinRT), Windows Forms. Pretty much anything .Net Framework. All of this is done in Visual Studio.
If you favor Mac OS, Ruby on Rails, Objective-C, Cocoa.
For web stuff, jQuery, Ajax, Web Services, Cloud Computing (e.g., Azure, Amazon Cloud).
Is PHP a viable language though, meaning is it actually used for real stuff
It seems like a server-side scripting language from what I've seen of it (not much). And that's not a compliment. Basically, it has a low learning curve, but it doesn't seem designed for more complex software. I hear it's the most common language used for web work, but then most websites are complete garbage, so that makes sense.
Some notable exception to the rule that PHP is used for simple stuff are MediaWiki, which is the software that runs Wikipedia, and WordPress, which is used to run pretty much every blog out there. If you want to write a plugin for either of those, you'll want to learn PHP. Still, I've seen how some of those plugins work, and they're not exactly shining examples of software excellence (they seem like hacks on top of hacks).
Php is a dynamic language for sure. And you can pick it up quickly and get some work done, even if you don't have any idea about "software development." Php gets beat up a lot because you can get some work done using just the core of the language. You can also put run it right in your html.
Of course, I could use C# inline in an ASP.Net page in the same way if I wanted (you can use ASP.net just like classic ASP, if you really want to). I think it's just less common to see "hacks on top of hacks" code in languages that aren't free because hobbyist will use the free stuff instead.
To write a serious php aplication, you would use a framework--maybe Zend or Symphony. Or you could also use one of the many microframeworks--laravel and limonade are among my favorites. Or you could start with an extensible platform like Wordpress, Drupal, OsCommerce, Moodle, etc. Most of the php projects I have worked on are integration projects...like merging functionality from moodle into a drupal site, or merging a wordpress blog into an OsCommerce store, or something like that.
Evaluating Php by reading wordpress plugins writtne by hobbyist is a lot like evaluating .Net by reading consile apps written by students, in my opinion. Look into the frameworks that are available and the code that is in the platforms like wordpress to see how professional programmers use php.
After years of promising this the fact is we are worse of today than 10 years ago because we now have different form factors. It appears the whole thing is getting worse to me and I expect soon to have a request to build a website that looks good on a clay tablet or as a tattoo on an elephant's arse.
These days you really need to decide an area to focus on first.
I will definitely second that. I made the mistake of trying to ingest too many technologies at one time for awhile (studying too many different things) and basically spun my wheels for a good while. There's only so much bandwidth the brain will handle, particularly in an information-intensive field like this one. The old adage "Jack of All Trades, Master of None" really applies here.
It's like surfing...Lots of product waves that are supposed to be the ultimate, become only the next big thing, then are forgotten (except for code maintenance). Silverlight is a good example. It was supposed to be "the next big thing" and to "conquer the web" and "everyone should learn it". Now it's abandoned by Microsoft and effectively dead for new development. Oh, wait...Now there's Metro! "Catch the wave, man! It's so cool! It's the ultimate!"
Next year it will be something else that will save the world, produce world peace, and be the Silver Bullet.
This same technology wave phenomena occurs in Java and to a lesser extent in other environments and tools. The newcomer will keep getting hit by the waves until he/she:
1. Picks one and rides it in to the beach.
2. Gives up.
3. Learns to surf.
So pick a wave and learn to surf it and perhaps ride it in to the beach or keep catching new ones until you're tired of new waves!
I'm an avid climber, so don't have time for number 3!
What I discovered when I was trying to learn Java AND C# at the same time was like climbing 500m up the face then deciding I wanted to rappel over to the trail on the other side of the face. I kept falling back to ground level having to start over because I couldn't remember exactly where all the handholds were on BOTH trails. That's how I viewed the situation when I decided to abandon Java and forge ahead with .Net. I've made more progress on my #1 "trail" in the last week than I made the last year because of that one issue. I just needed to back off and realize I was trying to [mentally] take on too much. I've always had that problem!
Well said. It's not so much that things change dramatically in 20 years, its that things change dramatically every 20 days! But it doesn't really matter because ANY tool you select and become proficient in will be useful to someone.
So my advice to you is not to worry too much about picking the right tool to focus on, but find a project that interests you (or, better, consumes you) and dive into it. Perhaps an open source project that doesn't have too frenetic of a development pace. Then learn everything you need to learn for THAT project. At the end you'll not only have a new set of tools in your belt, a shiny project you can refer to on your resume, but you'll have a sense of accomplishment. And that is something that will still be valuable 20 years from now.
but that doesn't mean that you will be able to get paid for it
Certainly I agree that there some languages that are obsolete. But diving into an existing open source project, as I suggested, is unlikely to land you in such a ghost town.
Perhaps the best advice I can give is to checkout the incredible statistics collected at ohloh.net. The graph I've linked to confirms my suspicion that usefulness of a large spectrum of languages is converging to an astonishingly level playing field over recent years. It's hard to go wrong with any of them. (Although C# doesn't seem to be faring quite so well, at least in the Open Source world -- check out this graph.)
In my opinion the developer that tells you he can master two disparate technologies (like Java vs. .Net) at the same time is either lying to you or he's not too hot at either one of them. I damn near burned-out trying to run two tracks like that for awhile. Once I decided to just pick one I feel much better and have tons more energy to learn.
i remember couple years back, i've asked same question - "What's new?", "What's new since dot com went bust and .NET was launched?". i was bored for awhile and during this time couple mundane new development appears on face of this planet (Business Intelligence/OLAP/Data Mining/Cloud/WPF/WCF/Silverlight...etc nothing more than new ways of doing same things, perhaps nothing more than marginal improvement in code maintainability or just outright useless jargon, not very impressive in short)
But until recently, just google on dones... i can see explosion of real practical applications in both commercial and military
Couple things got me excited
* Forget AI (we never have too much success in the field), focus on arms/legs/sensors and robotics -
* .NET code to run on microprocessors
* re-discovery of importance of mechanical devices/sensors - and integration with computers (wired/wirelessly)
Wow! Never thought of this!! Fun stuff!! Also never thought that .NET could be used with microprocessors... beats coding assembler (which I've done a bunch)
I've got a close friend that works at a microprocessor manufacturer and we have all kinds of interesting talks, all the time about this very subject, but more on R/C aircraft. I could use a snake-like drone now to wipe out some rats that are in the attic!!!