|Learning NOW what I need to be competitive in 3-5 years?|
Where do you think trends are going?
Like you I am a professional independet web developer. Perhaps unlike you I have mostly focused on linux-based open source tools like php, mysql, etc, and have gotten pretty good.
I recently started a thread (http://www.webmasterworld.com/php/3014047.htm#msg3014577) wondering where to go from here, and one_mind mentioned that if I wanted to be competitive in 3-4 years, I'd have to learn .net.
So I'm curious what others think. Do you think programming trends are going towards one platform (MS) or will there be a healthy mix of mac, unix, MS, and/or others?
What are the certain must-know technologies we should be mastering now in order to even be competitive in a couple years?
I'm going to comment on one_mind's post in this context, as well as some other comments made by other posters:
|If you want to be employed in this industry in the next 3-4 years focus on .NET |
I absolutely disagree. More comments as to *why* are below.
|But DB development/programming is a different mindset. In some cases, letting the DB handle some of the number sorting/crunching is more efficient than doing it in code. |
I agree with this. Specifically learning standard SQL would be beneficial, because this can be easily applied to many manufacturers' SQL servers.
|As MS has over 80% of the market share it is only natural that there be more work in the .net world. |
MS has over 80% of the *desktop* market, and falling. HP is already selling laptops with SuSE, and it probably won't be more than a year before you start seeing Linux-based systems in the big-box stores.
As for MS's market share on the server side, well, that's many times smaller. If you're primarily writing programs for the web, then you'll probably want to stick with writing for Linux and Apache with it's 63% market share, instead of Windows for it's 29% market share.
If you're writing for the desktop, then I think one_mind has it backwards. You want to know .NET now, and in 3-4 years should be expanding in to cross-platform.
|If you master the core of oop then you will know .net automatically, it would be just a matter of familiarizing yourself with the class library, same with java. |
Yes, learning object-oriented concepts will be very helpful. To some extent, this exists in PHP, but you may or may not have taken advantage of it.
In the end, I think this depends on partially on whether you work for yourself (or run your own company), or if you work for someone else. If you work for someone else, you'll need to know whatever they want you to know. If you work for yourself, it usually doesn't matter to the end-user, so long as you can accomplish the task to at or above their satisfaction.
I strongly agree. I own a web development firm as part of my holdings. I was involved in actual development issues for over 5 years (company is in it’s 9th year now) and preside of business development issues today.
I have actually participated in a MS survey of Web Hosts (I own one of those as well) as they wanted to know how to ‘connect’ with us. What was on our minds? How they could improve etc... I spent over an hour on the phone with 2 MS reps discussing my thoughts on things.
I was honest and told them of the financial limitations involved with their online offerings (getting an admin ticket for offline systems isn’t cheap either) was, for the most point the main obstacle in our usage of it.
It starts at windows servers and works its way down.
Windows server tend to cost more to run; (admin training from MS)
ASP/.Net ‘certified’ programmers for application development are too expensive.
The ‘Nix’ world (Unix/Linux) and LAMP world are far more accessible and generally, (I have my open source caveats) more affordable as an online serving and development platform.
As an internet business developer, I rarely advise clients to use a Windows/.Net framework. I do have a truckload of theories on Open Source models, but NIX/LAMP does not = Open Source.
There’s my perspective and how I advise clients these days if that helps any.
|but NIX/LAMP does not = Open Source |
Actually, that's exactly what it equals. Linux, Apache, MySQL, and PHP are all open source.
Exactly, but many people sell commercial products that are encoded (ion cude et al) that are developed in LAMP.
Sorry, should have made that LAMP doesn nacesarily mean FREE
Is that better?
Having been in the programming business for twenty years, I have many times heard those stories about development environments that would take over the current market in just a few years. Perl was THE language some years ago. Java was also THE language some years ago and I can give some more examples. The only survivor in this struggle is the C/Unix combination. This combination has been nearly stable for the last 35 years.
The current situation is that Apache is used on 63% of all sites, Microsoft software is used on 29% (Netcraft survey july 2006). Interesting is, that since the beginning of this year, Microsoft gains market share. One reason for the gain in market share the move of parked domains from Apache to IIS. But there is also movement in the active site side.
Looking at historic data and current developments on both the Apache and IIS front, I have no indication that this situation will change rapidly. Of course, Microsoft might be able to get 50% of the market, but we are still far away from the situation where Apache will become a small minority like has happened with Sun, NCSA and others. I see two reasons for that.
First of all, the basic LAMP configuration is cheap. Small website developers do not need to invest a lot of money to get their system operational. If a system grows, scaling can be done easily with most costs at the hardware side. This is different from a Microsoft based system where license costs can get really high if the number of processors or connected clients increases.
Secondly, Apache is a very flexible webserver. Rewriting, and loadable modules have made the Apache software one of the most succesful and versatile pieces of software in the world. Although it is flexible with much functionality, it is still fast and reliable.
So IMO, if you are developing/managing your own sites, LAMP is the way to go for the comming years. If you are on the other hand a developer making websites for others, a dive in .NET might be financially more attractive.
I've been in the programming industry for about 15 years now, and lammert's post says a lot of important things.
In other areas:
|If you want to be employed in this industry in the next 3-4 years focus on .NET |
|I absolutely disagree. More comments as to *why* are below. |
I'm sort of in the middle on this one. If you check the latest job boards, there are hundreds of .NET programming jobs available. Most have decent salaries and this will likely remain stable for the next 5 years.
However, .NET is not the only system I would learn. Staying close to open-source applications (Apache, Linux) and programming tools (PHP, C, MySQL, SQL, etc.) will be crucial.
|The only survivor in this struggle is the C/Unix combination. This combination has been nearly stable for the last 35 years. |
Very true. Languages come and go, but stability lies in those languages that can cross platforms. ASP will remain Microsoft's baby, will PHP/MySql will continue to be used to develop Apache web applications.
I personally don't think Java will another 5-8 years, but that's just a prediction.
It seems I disagree with most here on this topic. Even if you choose NOT to use ASP.NET in 3-5 years, you would surely benefit from learning the concepts it introduces. See it as education.
"What are the certain must-know technologies we should be mastering now in order to even be competitive in a couple years?"
You should stop focusing on platform (webserver) dependent programming languages like PHP, ASP, Pearl, Java etc. In the end they are just programming langauges.
What is important is generic concepts and techniques that can be used between platforms. This means SQL for database access, Xml and Xslt for html generation, Webparts and placeholder techniques because webparts can be used cross platform. These are all concepts within web development that I surely doubt will be outdated in my lifetime (meaning next 40 years).
|You should stop focusing on platform (webserver) dependent programming languages like PHP |
What makes PHP or Perl platform dependant? They can quite happily run on both Apache / IIS.
As for learning ASP.NET, i've finally decided to take the plunge into it myself. Not because I think it's the next "in thing", but because I enjoy learning. No doubt in 3 - 4 years time there will be another technology pegged as the one to take over, it's just the way the industry works.
|What makes PHP or Perl platform dependant? They can quite happily run on both Apache / IIS. |
And they can run quite happily stand-alone (with no web-server).