What do you think is the most in-demand computer language right now? I’ve been unemployed for a while, and feel the need to beef up the old resume a little. Possible candidates that I already know are C++ and XML/XSL, so those don’t really count, at least not for me.
Java’s pretty hot right now, but if all you know are programming languages, you’re not going to stand out. Learn the theory behind the languages, learn how they work, and then you’ll be in a better position to pick up lots of languages quickly.
Are you a programmer? If you are, it’s more important to have successful projects under your belt than knowing boatloads of languages.
If a company’s hiring you because you know a particular language, you gotta wonder if they know what they’re doing at all. A decent engineer can pick up a new language like nothing.
That said, I’d make sure you know technologies like com, are equally comfortable in Windows and Unix, can do client/server architecture - stuff like that. Know lots of different contexts in which you can write code.
I agree with what I think you’re saying, but I want to make sure that we agree on what you’re saying. At my company, we wouldn’t seriously consider hiring someone who doesn’t know C++. However, we’re not going to hire someone just because they know C++. That’s the sort of thing you’re talking about, right?
As yet another unemployed programmer, things seem to be shaking out in a couple of ways. Unix programming seems to be firmly in the Java/J2EE camp, while Windows development is the whole .NET thing. This completely kicks me in the ass because I am mainly a Unix/C/C++ guy who’s done some Windows development, but no UI work to speak of (which seems to be a requirement for Win32 positions).
Perl also seems to be a constant on Unix-based platforms…of course, I learned Python instead of Perl.
So given my history, I’m likely talking out my ass, and you should concentrate on Java running on Windows.
I don’t agree with that statement.
I think it’s VERY easy for a person who knows a complex language to learn a equally or less complex language. For example, someone who’s good in VB is going to pick up SQL pretty fast. They’ll also probably pick up Java pretty easily as well.
However, I don’t think it goes the other way. I’ve seen a lot of VB programmers think they can step right into C or C++ and fail miserably. There’s a lot of concepts in C/C++ that just aren’t in most other languages. I, for one, would not hire a person with 10 or 15 years of VB or Java experience for a position which mainly involved C based programming. I’m not saying they can’t learn it; certainly there are basic programming concepts that translate to all languages. But the learning curve to get really good at a complex language is at least a couple years.
There’s also a big gap between procedural languages vs. OO languages. It takes a bit to learn how to “think” in OO if you’ve been doing procedural for many years, and vice versa.
Rather than learning specific languages, I think the most important thing that a programmer can do is to learn good, sound fundamental techniques and the ideas behind generic programming constructs, strucured/object-oriented programming, etc. Once you’ve done that, picking up a specific language will be quite simple. Otherwise, it’s certainly simple to type System.out.println(“Hello World!”); to print a cute little line to your terminal, but you’re going to be pretty much lost when you get deeper into the language.
If you’re looking to learn a language, since you say you already have C++, I certainly would recommend moving onto Java. Writing standard applications is very similar to the C syntax (albeit anal-retentively OO…no structured shortcuts!) , and programming applets is…well, interesting (If you’ve done any VB, it will make the transition to applets slightly easier, since a lot of the graphical elements are similar. Once you get to handling those events, on the other hand…you’re on your own! )
It’s probably fair to say that Microsoft thinks the “hot” language for the next several years will be C#. Their opinion in such matters usually carries some weight.
Java and anything .NET. And with any of these, you need to know a fair amount of auxiliary stuff, such as SQL, HTML, client-server concepts, database triggers, inter-object communication.
At the risk of redundancy, I’ll add the following:
- A good programmer can always learn another language. Obviously, the more different it is from those he knows, the longer it will take him.
- Really understanding good programming takes years.
- You can be “useful” in a new language long before you are “proficient”. “Useful” might take as little as a few weeks.
- The job market is not great right now for programmers. While many of us believe that hiring managers should look for the right people rather than a checklist of skills, there are enough applicants that they can say “No C++? Next!”
- As Xema points out, a lot of people listen to Microsoft.
For the record, I’m very good, and currently unemployed.
TLB
Learn C# and .net.
There is a learning curve going from a procedural to an object-oriented language. There is a steeper one going from C++ to C# and .net, but the latter are efficient for both initial coding and reuse once you get a strong toehold.
Java IMHO is not quite the bombshell it once was.
Flexibility, experience, and – surprisingly – communication skills are becoming more valuable than ever and will often provide the competitive edge needed.
News Flash
.NET is no more. MS called it something else.
Really? I wonder why they’ve still got so much of their developers’ pages devoted to it? And why they’re about to officially launch Visual Studio .NET 2003 ?
If you know C++, might as well learn Java, since they’re fairly similar. (At least, similar enough that my university thinks it’s a good idea to stick people who know EITHER Java OR C++ in a course where programs must be written in both languages, and teaching of the basic stuff is minimal.) It shouldn’t take you too long to be able to write usable Java if you’re decent with C++.
Urban Ranger, Microsoft changed the name of the forthcoming “Windows Server .NET” to something else. (I think it will have “XP” in the name.) The development tools in Visual Studio still have the “.NET” brand.
By the way, if you’re planning on learning .NET languages on your home machine, remember that they require XP Professional.
Windows Server 2003, I think, is what they’re calling it.
Not to nitpick, but I’m currently on the MSFT campus working with some of the .NET language and tool developers. The “.NET” name was deemed overused and confusing, so they are slowly renaming/rebranding just about everything that had “.NET” slapped on. For a programmer, “.NET” usally means the runtime (CLR), base libraries (BCL), languages (C#, VB.NET, Managed c++, etc.) and sometimes Visual Studio .NET. In the future, “.NET” will be a limited use adjective on certain products, but not on everything.
Also, you can program in .NET languages on windows 98 or higher. However, for ASP.NET, you need IIS 5.0, which is only availble on Win2K, WinXP (Pro) and Win2003 Server. Alternatively, you can get a product called Web Matrix which runs on Win2K and WinXP (home and pro). The drawback to learning any .NET language is that, while the framework is free, Visual Studio.NET is fairly expensive. Without VS.NET, you are stuck with a command line compiler for C# (and I don’t think you get any other compilers).
As to the best language, picking up something out of the .NET framework might be a good idea unless you want to go on a strictly Unix or Mainframe paths (C/C++, Perl/Python/etc, AS400, COBOL, CICS, DB2, etc.). For hiring buzzwords, you should also know something about web services, patterns (MVC, Observer, etc.), and have ideas about interoperability between systems.
However, you will also find jobs for “specialist” skills in products like Tibco, CICS, JD Edwards OneWorld, SAP, etc. Experience in the products often counts for more than simple language knowledge.
In any case, best of luck to all of you who are looking for jobs. It is a tough market to enter right now because of the number of experienced people “on the bench” or out of work.