views:

376

answers:

10

I just graduated from college. I only know C, C++, and Java. I've been looking for a job, but I feel my set of languages is not enough. So I would like to learn some other stuff while I'm not working. What do you think it's more important? I was thinking of learning SQL and XML. I don't know, what do you think?

+3  A: 

Never hurts to learn more stuff while you aren't working. SQL is a useful skill for many business applications. While many people don't write as much of it because they use ORMs in their jobs, it pays to know it and understand how to get data out of databases and put it in the datbase, it pays to understand at least at at basic level how to work with sets of data insted of individual rows and to understand how to protect the data integrity and write performant code (Performacne is critical for databases). While as a database person, I am not fond of ORMs, they are increasingly used so in learning more about data issues, you might consider learning something like nHibernate.

HLGEM
+8  A: 

Aside from a few special cases, I don't think the language(s) you know is that important at all. Rather, what's important is your skills.

  • Do you know the SOLID principles and have a reasonable grasp of object orientation?
  • Do you use version control and refactoring tools?
  • Can you do algorithms and understand Big O notation?
  • Do you work well with others?
  • Can you communicate clearly and concisely?

Most companies aren't going to expect you to be very good at first, so they aren't going to be rating you on the number of programming languages you know. They are going to base it on general understanding, fit, and belief in your ability to learn.

That said, depending on the type of programming you want to be doing, there may be things that you should be studying: SQL, HTML, web-design, functional-programming, etc. Do what's best for your situation, whatever it might be.

Kaleb Pederson
+2  A: 

If you want to get into web services and stuff like that, XML is a good idea. However, I think SQL and learning how to do some basic queries is probably more useful. Some database design skills (basic normalization, how to write and use stored procedures, etc.) is nice to have too. Some other things you might want to brush up on:

  • basic GUI design principles. What controls to present different types of data. There's nothing worse than using a GUI where someone is using the wrong controls to display data.

  • reporting tools. Most programmers don't like building reports but having that on a resume might get you an entry level job.

  • testing skills - lots of programmers know how to do the basics but it's an art (science?) to come up with a good test plan. Again, maybe not something you want to do long term but it might get your foot in the door.

  • writing - basic skills like writing a project proposal, clear and concise emails, and other documentation skills are needed if you want to ever move past the junior programmer stage.

TLiebe
Agreed, SQL, general DB design, and XML are must haves these days.
Michael Krauklis
A: 

I'm a fresher as well,

Basically i've been told that, Learning languages is good, but learning them along with associated technologies is even better.

First Step Choose an area of specialization (be it c,c++, c# or java), that doesn't mean give up on all but one language or technology, it just means concentrate more on a specific thing.

Vivek Bernard
A: 

It would be very impressive for someone to see that you had some team-working knowledge on top of your technical expertise. For example, experience with some type of version control, software design, people skills, extra curricular activities. Technical skills can always be learned on the job, but if people won't enjoy working with you then your chances of being hired is worse.

As for technical stuff: Gui design Databases Web design Networking

yx
A: 

You need not be great at coding at this stage. What you need to know is the fundamentals like OOP, basic SQL queries, the benefits of XML, be able to think etc. Also, know how to do basic things like create a button, write SQL CRUD, write simple methods (like you learned in college) etc. You will be paid to do two things (1) Perform basic coding taks and work very hard to become a great Software Engineer so you can rapidly take on harder tasks.

Phil
A: 

I'd suggest to start a small real world web application. You'll get in contact with many interesting things from HTML over REST to security and software architecture. It is much more effective to do real world stuff than to read books and type tiny little examples. These example are good for understanding but they won't take you to the corner cases. And it will be motivating to construct something (more or less) useful.

deamon
A: 

You say you "only know C, C++, and Java" -- well, that is quite a lot.

Since you're asking this question, I think your primary focus should be deepening your understanding of those languages, and learning how to apply them to real-world problems.

SQL is nice to know, but you can use it straight from the docs if necessary (and the requirements aren't all that complex).
XML is used everywhere, and it's relatively easy, so take a day and learn it enough to use it, then move on.

Jon Seigel
+2  A: 

In my view following is a must to begin

  1. Understanding of OO (classes/interface/abstract classes etc.).
  2. Grasp of SQL (whether you write sql on oracle / sql server dosen't matter). SQL is kind of universal. Knowledge of stored procedure will add more value but not must
  3. Pick any one language java, c# etc. Other than syntactical differences most of the concepts are same now-a-days so you can switch to other language anytime.
  4. If you want to get into web technologies, then javascript & HTML are must. With new JavaScript frameworks in the market, knowledge of JavaScript is must.

You don't need to master all classes of Java or C#, but few commonly used classes are more than enough. Best way to comprehend all these technologies is to create a very small demo application. It really helps to grasp the concept and give lot of confidence.

Best of luck.

prasrob
A: 

I don't think the number of languages is the problem. In fact, too many languages and buzzwords on the CV of an entry level candidate are a warning sign to an employer. I've met second year CS students who list 10 more languages than I know myself and never went past the "Hello World" stage.

In an entry level job, the expectation of the employer is that you have at least classroom level experience in that language. Some schools are Java schools, others are C++ schools, etc. Learning one more language, at this point, isn't more likely to earn you a job. It's better to become much better and the language you are the most comfortable with.

Furthermore, to get an entry level job, you don't need to be a good programmer. You need to be good at interviewing, and stand out compared to the 20 other people they would interview. Since companies tend to spend less time per interview on entry level jobs, you need to ace each question they ask. Often, they weed out candidates with puzzles and algorithms and stuff that has no bearing on the job. These are the rules of the game, this is what you've got to play.

Having what is really important - Software engineering skils, the ability to write maintainable code, understanding testing, refactoring, and all those things - aren't going to matter at all if you can't get the job in the first place, and you are not going to be asked on any of these things in an interview.

This is unfortunate, but such is life. I've seen people who could not write 20 maintainable lines or know why you want to split a large function into two parts getting jobs at the best companies because they were better at reversing lists or whatever than people who could design a perfect class hierarchy on the first shot.

Uri