Meaningless Drivel is fun!*
The moose likes Jobs Discussion and the fly likes Getting ready for the job market quickly - so many technology combinations, how to focus ? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Careers » Jobs Discussion
Bookmark "Getting ready for the job market quickly - so many technology combinations, how to focus ?" Watch "Getting ready for the job market quickly - so many technology combinations, how to focus ?" New topic
Author

Getting ready for the job market quickly - so many technology combinations, how to focus ?

Andy Jack
Ranch Hand

Joined: Nov 22, 2012
Posts: 257
I see these things are in demand now, with varying degrees - Java, Ruby, PHP, Python, MySQL, NoSQL, Hadoop, Android, iOS, Spring, Hibernate, JavaScript <Did I forget something?>
I need a job/intern to get real world experience instead of childish code examples. My problem is that i am not sure which combination should i pickup to get ready for a job/intern.
I see Python, Java, MySQL in a couple of jobs and then i am like, ok lets do that to get ready quickly. Then, i see a couple of jobs that say Ruby and Java. Then I think if i should do that
combo too. Then there is PHP, MySQL, JavaScript...Java, Hibernate, Spring....the list is endless. I am not sure which combination to pick.

How do you select a combination which will enable you to be eligible for most interviews ? Once I get a job/intern in one of these combos, then i can think of learning other combos on the
side.


Java Newbie with 72% in OCJP/SCJP - Super Confused Jobless Programmer.
I am a "newbie" too. Please verify my answers before you accept them.
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1846
    
  16

Depends on your own goals of course. A huge number of commercial Java-based web applications use the 3-tier architecture which will typically consist of a web front-end (maybe using Java-based tools like JSP, JSF etc as well as standard HTML/CSS/JavaScript), a Java EE middle tier with the business logic (often using Spring these days), and a "persistence" layer, which is almost always a relational database of some kind. So straight away you have a rough breakdown of categories you might want to know something about. You could start by allocating skills to categories, then work out if you need a skill from a particular category, and if so, which ones seem to be most popular and compatible with your other target skills. When you see an interesting job ad, slot the skills into categories and decide if you can cover most of them or if you have equivalent skills in the same category.

Web front-end:
HTML5, CSS - these go together these days but it's not hard to pick up the basics.
JavaScript - start with the basics of the language - enough so you can at least read somebody else's JavaScript and get a rough idea what it's doing. Unless you're planning to get heavily into rich web-based interfaces, probably no need to dig too deeply at this stage, but make sure you get a feel for how this stuff works. However, JavaRanch's resident JavaScript Ninja, Bear Bibeault, often suggests to people to get really good at JavaScript, as there are a lot of JS amateurs around but far fewer real experts and JS is becoming more widely used all the time, so think about whether this might be an interesting option for you.
AJAX is "asynchronous JavaScript and XML" i.e. a standardised way for your browser client to talk to the server and get a response without having to keep refreshing the whole page every time. Very widely used.
jQuery, ExtJS, Node.js etc - these are various frameworks/libraries to provide lots of extra functionality to JS developers e.g. rich UIs, AJAX, serverside code etc, usually in a browser agnostic fashion. Play with them, or even pick up one of Bear's books on these!

Java server (middle tier):
JEE - huge suite of libraries/standards for building Java applications that run on a JEE-compliant server e.g. JBoss, WebLogic etc. No point trying to learn all this, but start out with some of the basic APIs that might be of interest e.g. servlets for web applications, or database access etc.
Spring - a huge framework of tools and libraries to build Java applications without all the complexity/baggage that comes with JEE (although most commercial Spring apps usually run on a JEE server). Good to know, so try working through some basic tutorials int the core libraries at least, and understand what "dependency injection" is supposed to mean.

Databases:
MySQL, PostgreSQL - these are free open source relational databases that use SQL as their main language for querying/manipulating data.
Oracle, SQL Server, DB2 etc - proprietary relational (SQL) databases, all widely used. Some free versions available if you want to play with them.
SQL - core language for relational DBs, so make sure you learn a bit about how to model your data properly for a relational database and how to use SQL for queries especially.
Hibernate - this is a widely used object-relational mapper (ORM) that allows you to write your Java application to manipulate Java objects and persist them to the database without having to write the SQL etc to do so.
JPA - Java Persistence API - standardised Java API for data access (may sit on top of an ORM like Hibernate). Check with a Java developer who knows more than me (most of them), but probably start here if you're going to look at Java for DB applications.
NoSQL - what the Cool Kids are playing with, although most commercial DBs are still (and probably will remain) relational. Check out Seven Databases in Seven Weeks for a quick intro.

XML:
Widely used text-based format for structured data, usually for passing information between different systems, especially in config files for things like JEE, Spring etc. Also underlies lots of other file formats e.g. open office documents.
Allegedly human-readable, but usually requires specialist APIs to do anything useful with it e.g. Java is quite good at handling XML (Groovy is better).
Learn what it looks like, a bit about how it works, and work through a tutorial or two, but don't get too bogged down unless you think you're going to be doing a lot of querying/transforming XML.
Increasingly being replaced by JSON for simple data exchange, as JSON is easier to read and process.

Scripting languages:
Ruby - I think this OO scripting language tends to be used mainly with Rails as an alternative to Java for smaller/mid-sized web applications, although Ruby is also used for scripting independently. Fun to learn, but not vital if your focus is Java development.
Python - widely used OO scripting language, e.g. in scientific/financial applications, with huge libraries. Again, good to know but not vital for a newbie Java developer.
PHP - very widely used for building web applications, occurs in a lot of open source code (e.g. content management systems like WordPress or Drupal). Lots of bad PHP code(rs) out there, not generally very well-paid or widely used on commercial enterprise systems unless you specialise in higher-end jobs e.g. Drupal customisation.
Perl - widely used "write-only" language, often on Unix platforms. If you get good at this, it's a valuable skill to have, but not necessarily a priority at this stage.
Groovy - JVM-based dynamic scripting language, great fun to use and 100% compatible with Java so you can use all those great Java libraries. Not so widely used unfortunately.
Definitely worth trying out a few scripting languages, and maybe pick one you think might be handy to know e.g. I use Groovy or Python for prototyping logic, or for throw-away code to trawl through files for stuff etc. One interesting option might be to try one of the "code-by-convention" MVC-based web application frameworks for your chosen scripting language e.g. Ruby/Rails, Groovy/Grails, Python/Django, as these will give you another perspective on how web apps work, but it's probably not a priority for you right now.

Development tools:
Eclipse IDE - you're probably using this already. Other IDEs in JavaLand include IntelliJ and NetBeans. And Real Programmers use Emacs (I don't!).
Ant/Maven - build tools, widely used, good to know about (maybe start with Maven as it's more sophisticated).
Source code control - Subversion, Mercurial, etc. Loads of these and they're usually pretty similar, pick one that's widely used and learn the basics.
Testing - JUnit is your starting point, but look out for other widely used testing tools. Get comfortable with these.

So basically, you're right: there is always lots to learn (I don't know most of this stuff in any depth either). But nobody will expect you to know it all. Aim to work through basic tutorials in one or two items from each category, so you can get a feel for what they do and how they compare. Then dig deeper into the ones you think are most interesting/useful for your initial career plans. And when somebody comes along who actually knows a lot about this stuff, learn from them!


No more Blub for me, thank you, Vicar.
Andy Jack
Ranch Hand

Joined: Nov 22, 2012
Posts: 257
chris webster wrote:Depends on your ....................... learn from them!


Thank you very much for the detailed and well written reply Chris ! That made things crystal clear now.
What would we do without guys like you ?
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1846
    
  16

Andy Jack wrote:
chris webster wrote:Depends on your ....................... learn from them!


Thank you very much for the detailed and well written reply Chris ! That made things crystal clear now.

This is just a starting point, so don't take anything here as Gospel. This stuff changes all the time and different people have different perspectives on it, so keep a close eye on current trends in both technology and employment, and talk to as many real experts in as many different areas of tech/work as you can. Also look out for what the "Alphas Geeks" are up to today, as the rest of us may well be doing it tomorrow e.g. functional programming (Scala, Clojure on the JVM) and NoSQL databases both seem to be making that transition at the moment.

Have fun!
 
 
subject: Getting ready for the job market quickly - so many technology combinations, how to focus ?