i.e. What computer programming skills, now and in the near future, would allow one to most easily get employment?
This is probably based on the type of work you want to do.
However, my personal opinion is if you know C++ and MFC (can’t remember what the acronym stands for), you’ll be very marketable. From there VB is also a good one, since it seems many places use that for their GUI deployment.
Now: VB, C#, C++, ASP, and Java. Throwin together with some SQL backend knowledge, those are probably the most marketable at the moment.
Near Future: It’s anyone’s guess, but I’m going to have to go with any of the Visual Studio.NET languages. Unless Microsoft goes out of business in the next few years, I don’t see how anyone can stop .NET.
It can’t kill you to have a backround in Assembly, that’s a pretty powerful language.
That is certainly the most basic and difficult language but the OP asked about opportunity for employment. In the thousands of jobs that I have looked at in the past several weeks, I have seen exactly one that wanted assembly language skills. If you need a low-level language, C is almost always more than suitable.
To answer the OP, here are currently the most marketable languages and skills:
- Visual Basic
- Database skills( SQL, PL/SQL, ORACLE, SQL Server)
- Web Technology (HTML, XML). (Overcrowded at the moment)
I forgot to add, if you want to do some automation, Perl has been the tool for me. It’s a sure way to impress managment if you can automate processes relatively quickly (from the commandline). Not much practical use every day, but it’s good to have in your back pocket.
In general, while it’s very good to have marketable skills, it’s also really good to have an understanding of the theory behind the technology–after all, the technology changes very quickly, but the principles on which it’s designed don’t. Also, you should try to do a little math; employers love the skills that that develops (analytical thinking, deductive reasoning, abstraction, etc.). It’s also really good to learn some statistics, cause you can probably use those in whatever job you get.
That said, Shagnasty’s list is good if you want to get a job right now. Assembly isn’t really that difficult if you’re familiar with the hardware, and it does give you an edge on the competition.
Go to monster.com (or any other major job search site) and do a search for “programmer” or “developer”. Then read through a few of the job listings you get and see what languages are required. It may help to restrict your search to those regions in which you are interested in working.
MFC is Microsoft Foundation Classes.
Good advice. Expertise in particular technologies is something of a Red Queen’s race to stay current, which you buy into by being in the business. After you’ve been through a few of them, they translate though.
DB knowledge will probably be worthwile for a LONG time, and I don’t see SQL changing radically. Much of what people construct exists to get to a DB at the end of the day, though the methods of connecting have changed over the years. We also keep trying to construct EJB’s and other “business object” things that shield the application programmer from the DB, but it never quite completely works, and even if you are just going to use higher level components, knowledge of the DB is valuable, just like knowledge of how an engine works to professional driver.
Shangnasty’s list is good, but to illustrate the “Red Queen’s race” feature, I’m qualified at 4 or 5 of the six (I never used VB, and I can certainly use HTML, but I wouldn’t sell myself as a web designer or take a job with that as a primary component). I’ve had to learn all of it along the way, essentially. I was here before most of it, except for DB, and I had my one obligatory DB course in school. Just by accident, I wound up at a DB company for a long time, because they were the people interested in programming languages (heydey of the 4GL’s) and tool design. I entered the web as “the DB guy”, and picked up web knowledge. I may be looking to semi-“retire” soon, so I’m not that concerned about C#. If I were worried about a continued long term career, I would probably pay more attention to it.
I almost guarantee you that the “hot” marketable skill in five years will be something that doesn’t exist today. And we will have companies looking for people with “seven years experience” in it. But if you know what you’re doing, your knowledge will translate to whatever it is.
Re-enforcing what others have said. It’s a combination of language and field that are important. Knowing how to program a TCP/ICP stack in any reasonable language is a big boost. Embedded systems is yet-another-area-taking-off.
C# will probably grow the fastest. The demand is not there today, but two years from now it will be the “thing”. (Add in your own MS rant.) There are signs of Java’s inevitable decline. (Insert obligatory “Java is not really dead.” rant.)
While scanning want ads tells you about the number of positions, it doesn’t tell you how much competition there is for those positions. 1000 Java positions with 2000 Java programmers going after them is not the same as 200 Perl positions with 10 Perl programmers going after them. Perl and related admin scripting languages are in reasonable demand, but more interestingly, there’s fewer people going after those positions.
Which programming language you know shouldn’t matter much at all to a potential employer. Learning new programming languages is quite easy. Learning how to optimize DB scripts is hard. The fact that employers don’t realize this tells you a lot about the Dilbert World that is real life.
I would say a lot of it depends on your personality. I am a C/assembly programmer, and every time I’ve tried to learn windows C++ and MFC all I get is a big headache. I could probably eventually learrn them if I really set my mind to it, but I don’t think I could ever get good at them. On the other hand, the whiz bang C++ programmers around here have extreme difficulty doing what I do (C and Asm real time programming). They are two different ways of thinking. In the past we tried to have everyone work on every type of code, and it did not work well. These days our software engineers specialize in something they are good at, and we just split up the system according to the programmer’s skills.
It’s better to find one that you are good at that is marketable, than just go for one that’s marketable that you may or may not be good at. C++/MFC is a fairly valuable skill, but only if you do it well. Same with Asm, Java, and everything else that was previously mentioned.
I say experiment with a few, find one you are good at, and make yourself up a bunch of demos on a laptop with source code that you can take to interviews and show off.
Microsoft claims 3+ million developers for VB. I’d throw Access in there somewhere too. It’s much like VB (in some ways superior) but has a faster development time.
As important as are the skills in a particular language are skills in computer science. There are FAR too many six-month ‘tech schools’ that are trying to expose students to a gazillion technologies that they can pad their resumes with, at the expense of teaching them how to actually program computers properly.
I had to interview people for a software developer position a while ago. All the applicants had resumes just chock full of languages and application experience. But not a single one of them could answer even a quarter of these questions:
“What’s the difference between a stack and a queue?”
“When would you use a register variable, and when would you avoid it?” (‘C’ applicants only)
“What is the meant by the ‘scope’ of a variable?”
“Explain the limitations of using a GOTO statement.”
“Name two ways of providing data to an object, and the drawbacks and advantages of each.”
“What is polymorphism, and what is it good for?”
“What is a linked list?”
“What is the difference between a singly-linked and doubly-linked list?”
“What is a binary tree?”
“What is a ‘balanced’ binary tree?”
"What is meant by saying a database is ‘highly normalized’?
“Name three characteristics of a true object-oriented language”
Not one of those questions refers to any specific language. Languages are easy to learn - basic concepts are not. If you offered me a programmer who knew nothing but FORTRAN, but had a good solid grasp of boolean algebra, algorithm design, coding standards, and a solid math background, I’d take him in a second over some kid straight out of a tech institute who had learned all the languages we are currently using but had never had to write a large program and maintain it.
If you want to make a career as a programmer, learn to program. Properly. Learn some math. Learn the fundamentals. Get a good, solid background in computer science. Study on your own. Write lots of programs.
If you can’t do it in AppleScript or in some combo of FileMaker maneuvers, it ain’t worth doing.
COBOL… no, really, I’m serious. It may not lead to glamourous high-paying jobs, but you WILL have job security as a lot of major corporations still use mainframes and older languages as it is too expensive to easily change.
If you can truly master “awk”, “sed”, and “grep” the world will be your oyster.
And if you can’t do it in bash scripts, perl, and cron, you probably can’t do it at all (at least in *nix).
For sheer job opportunity: SQL/PL (Oracle)
But as others have pointed out what you really needed is a well-rounded education in the basics.
Thanks for all the intelligent thoughts, everyone.
First, I agree that fundamentals are more important than specific languages, but let’s face reality: To get your foot in the door in a lot of places, you need the right buzzwords on your resume.
Second, that said, all things being equal, I suspect it is better to be facile with certain programming languages than with others.
I have a ton of computer programming experience with Pascal. Nowadays I use “C.” My thought is to brush up on my computer programming skills just in case my current career doesn’t work out.
Thus, I want to focus on skills that would make me as marketable as possible.
Can someone recommend a couple good books, in the nature of a tutorial, to work through?
SQL is easy, but for you to be one step above your competitors you need the Oracle DBA certification.