10 Skills Developers Will Need in the Next Five Years
Aimee Sprung, our Students 2 Business Lead pointed out a great article about much needed skills. This article at TechRepublic is a great summary. For more advice, articles, and to help find a job join our Students 2 Business community!
Read the entire Tech Republic Article Here
1: One of the “Big Three” (.NET, Java, PHP)
2: Rich Internet Applications (RIAs) - (Learn about silverlight)
3: Web development
4: Web services – (Learn about Web Services in 1 hour)
5: Soft skills
6: One dynamic and/or functional programming language
7: Agile methodologies
8: Domain knowledge
9: Development “hygiene” (Resources here: Technical Book Club)
10: Mobile development (Resources here: mobile)
Comments
Anonymous
April 27, 2009
One of the “Big Three” (.NET, Java, PHP)?! LOL I have one to rule them all: C++/Win32. I don´t understand why you point students into this stupid .NET direction. Let them learn some real programming before they move on. Most .NET (especially CF) developers seem not to understand how Windows works or how to handle Memory(why should i care about that? I have garbage collector! Oh wait, my app doesn´t start because of low memory condition?!?!? What now?) and are often totaly out of knowledge how to fix those issues.Anonymous
April 27, 2009
I've worked in .NET since 2002, and ASP before that since 1997. And I've never had to worry about handling memory. Fair enough C++ can teach you about OO principles but it can't teach you much about real world web development. I worked with an ex C++ developer in my last role and he struggled with web concepts, but he was a wiz when it came to understanding code. I think a balance of methods is the strongest set of tools you can have, never dismiss other technologies, learn from them.Anonymous
April 27, 2009
I am a student at the university now and we do Java, PHP, and C/C++ so I do not see the problem. As for "real programming" I thought that algorithms are always most important and all that vary is implementation. We are being taught language independent design, and programming in specific languages.Anonymous
April 28, 2009
Handling memory??? What is Patrick still working on 386's??? Who has to worry about memory issues anymore with PC coming standard with 2 gigs of ram! .NET is the king. What students really need to be taught is how to design good interfaces. I've seen some really bad designs that a monkey could have done better!Anonymous
April 28, 2009
I agree with you but few years back everything Patrick said made sense but I guess not anymore. I love .NET but its boring after a while....Not challenging anymore... Let's see if we'll face any real good challenges !Anonymous
April 28, 2009
Marek makes a point, but also shows a weakness in most undergrad programs. The study of algorithms, searching, sorting, etc..., is a step beyond syntax, however, graduating without an understanding of software development is serious a problem. The basic concepts of software development (problem analysis, modeling, coding, testing) can be taught by the introduction of at least one team project in the introductory courses. This will also encourage diversity in the upper level classes by demonstrating the need for different roles within the process of developing real world software applications. Sort routines are fun and easy to grade, but team projects are closer to what actually happens in the real world. Students need to experience this from the start. Agile programming is on the list, but how many intro courses expose students to concepts beyond syntax?Anonymous
April 28, 2009
What I like about this list is that is describes a well-rounded set of skills that are necessary to succeed in the industry. @Patrick, I agree with you that there are a set of fundamentals that are quite valuable including memory management. Even with a garbage collector, it's important to understand what is happening under the covers. You don't, however, need to implement your own memory management every time you code. Underlying all these comments is that you probably won't learn everything you need by attending class alone. This list attempts to supply a check list to ensure that you gain the skills for your own success.Anonymous
April 28, 2009
I have to contribute that C++/Win32 is a valuable skill for doing desktop or embedded applications. Years ago dividing these technologies with one of "managed runtimes" was done based on performance needs. This gap has closed over the years as the runtimes have become much more efficient. How can any of you argue that we shouldn't be aware of memory utilization? Certainly garbage collection is and has been since conception a dear friend to me, but that doesn't give the me freedom to ignore memory management completely. Also, there are a significant number of shops that may recognize C++ as a great tool for learning and specialized applications, but most shops are going to take advantage of the productivity gains of a managed/interpreted language. @HilaryPike: I agree that the one thing typically never taught to students is the business of software and how productivity, maintainability and sustainability are just as important the hammer used to drive the nail.Anonymous
April 28, 2009
@Eddie I like your remark about specialization, there are definitely domains of expertise that emphasize languages or skillsets. For example, if you want to work on hardware drivers, you're not likely to be working with managed code :) Exposure to/experienc with development environments (like Visual Studio or Eclipse) and debugging are also very important skills.Anonymous
April 28, 2009
What about Embedded Programming and I'm not talking just about Cell Phones. I'm talking about microcontrollers, ASICs, etc..It's the time of these devices that's coming, not the PCs. What are the students of the future going to program these with, .NET?? No, I don't think so! Also, there are other platforms, not just the Win32,.. win64 even! Students must concentrate on cross-platform languages like C/C++! Of course there always must be the element of team work and team development. The whole learning process in my opinion must be just projects and involvement of team correspondence! Also when it comes down to solving a logical problem, involving more thinking in algorithms, I don't think .NET is the right platform for the task! If you're going to worry more about the outlook of your program than what it actually does, then you should not call yourself developer or a programmer! So let's narrow down what a student needs to know in future:
- Teamwork!
- One Cross-platform language (C/C++)
- Web development (Java, PHP, Perl.. etc)
- Embedded development
- More programming languages
- Understanding of how software works(I'm sorry but principles DON'T change)
- Database - SQL
Anonymous
May 05, 2009
The comment has been removedAnonymous
May 07, 2009
La industria del software a evolucionado bastante desde los 70's. Los sistemas que se han desarrollado desde aquellos lejanos tiempos, han producido inmensidad de informacion, la cual se ha almacenado de alguna forma, por lo que algun porcentaje de nuestros estudiantes, deberian enfocarse en areas como : Bussines Intelligent, SOA, Arquitecturas de sofware basadas en componenetes Colaboracion. see youAnonymous
May 08, 2009
Oh,I know and work with two of the "Big Three":PHP and JAVA.