I’m a second year Computer Science student, and am currently applying for jobs for the Summer ’11 coop term, this will be my first.
I have found a lot of the jobs ‘perfect’ candidate have many technical skills I do not possess.
For example, one which I have an interview Monday for, uses Java Enterprise Edition, but I’ve only used regular Java. Also many things I have no experience with whatsoever, like XML, Adobe FLEX, and Ruby.
Obviously the employer is not expecting a potential employee to have all of these skills, but I was wondering how difficult it would be to pick them up?
I have a strong knowledge of C and Java, and of many concepts and data structures.
With this in mind, is it difficult to pick up languages like Ruby or less related tech like XML or AJAX for example?
Or if I have a good background in compsci, do the concepts apply broadly, and mostly it’s just the syntax and rudimentary concepts I will need to pick up to get started?
Please if you have any advice, feel free to share.
Thanks for all your help!
PS: I noticed that most people seem to call Java Enterprise ‘J2EE’ isnt it now just ‘Java EE’? Whats up with that?
Once you’ve mastered one programming language, you’ll easily catch up on a whole family of related languages. The differences are more than just syntax, but there is more or less a fixed set of features that most of the popular languages provide.
A good way to gather programming experience would be to become very proficient in at least one language. I don’t know what your experience with C is, but unless it’s over 3 years it won’t take you much time to get to the same level in any other language, and it won’t be too hard anyway. If you ask me, knowing C is a “must” because you learn a little about how the computer executes your programs. Some of the higher-level languages have been (initially) implemented in C themselves.
I’m not a Ruby programmer but i’m guessing it’s not a big deal if you already know some C and Java. It’s probably even easier to learn than those two. XML is just a data format, and AJAX is a buzzword for “doing stuff dynamically in the browser-based client side of a web application”. So there isn’t much “tech” to learn here, it’s just a matter of knowing and mixing skills to get that kind of thing done. (Basically you’ll need to learn at least a little bit about javascript, HTML and HTTP, and know how browsers and web servers work).
Computer science is a branch of mathematics, and as such it will always be relevant. Learning about specific algorithms, data structures, etc. is important but more important (from a practical point of view) is the knowledge of how algorithms or data structures perform, how they can be analyzed, what affects their performance, etc. If you got the basics, you can always open a book by yourself and learn more algorithms and data structures, and it’s probably a good idea.
Finally, a useful set of things to know in today’s software world is: networking (esp. TCP/IP and HTTP), C, Java / C# or both, minimal knowledge of Javascript, and a little experience with programmatic access to XML