Skip to main content

Why its not easy to find Good Java Developers.

Recently I came across lots of post trying to unlock why its difficult to find good Java Developers so I wanted to share my view on this topic. I've been training people on Java since 2007 for various consulting companies.

First lets consider the time it takes to become an expert in PHP Development. A good php developer is expected to know these technologies (PHP, HTML, CSS, Javascript, SQL, Photoshop), and in 1 month of training he can start coding in php and in an year he will have nice grip over all these technologies. So a guy with 1yr of experience is good enough to be considered for most of the php jobs.

 Now lets consider what it takes to become a good Java developer, most of the posts on job portals will look like this Java, SQL, ORM, MVC, HTML, Unit testing, Servlets, JSP, JDBC, AJAX, Design Patterns, Web Services, and IOC.

Most of the students coming straight out of the college know quite a bit of Java, They write desktop and web application using very less standard technologies, for instance.
   1. Desktop application is written using Java, Swing, JDBC, MySQL, most students don't even use JUnit, ORM or any design patterns
   2. Web Applications are written similar way using Java, Servlets, JSP. so hardly they use any standard practices, there is no SVN, Testing, MVC, AJAX, CSS, ORM or Design Patterns.

lets see how much time it needs to learn these technologies which employers expect in a good Java Developer.
Java - remember Java itself is a rich technology and it needs quite some time to master this it.
MVC framework - Spring, Struts, or JSF
ORM - JPA Hibernate, JDBC
Design Patterns - familiarity with application architecture, tiers and layers
AJAX - HTML, CSS, JQuery or similar
Web Services - XML, SOAP, REST etc
SQL - SQL and Oracle knowledge
Spring  - IOC, Transactions
Servers and Build tools

The list for Java is quite a bit lengthy and you expect Java developer to just not know any framework but also know quite a bit of details, best practices and real time work experience. Its clear that we expect more from Java developer. So employers need to do two things either be more competent to attract best with atleast 3 yrs of experience or invest on a fresher.


"A belief is not merely an idea the mind possesses; it is an idea that possesses the mind." -- Robert Bolton


Popular posts from this blog

JPA 2 new feature @ElementCollection explained

@ElementCollection is new annotation introduced in JPA 2.0, This will help us get rid of One-Many and Many-One shitty syntax.

Example 1: Stores list of Strings in an Entity

public class Users implements Serializable {

    private static final long serialVersionUID = 1L;
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private List<String> certifications = new ArrayList<String>();

    public Long getId() {
        return id;

    public void setId(Long id) { = id;

    public List<String> getCertifications() {
        return certifications;

    public void setCertifications(List<String> certifications) {
        this.certifications = certifications;

        Users u = new Users();
        u.getCertifications().add("Sun Certified Java Programmer");

Generated Tables

Column --> ID
    Row             1


Validating CSV Files

What is CsvValidator ?
  A Java framework which validates any CSV files something similar to XML validation using XSD.

Why should I use this ?
  You don't have to use this and in fact its easy to write something your own and also checkout its source code for reference.

Why did I write this ?
  Some of our projects integrate with third party application which exchanges information in CSV files so I thought of writing a generic validator which can be hooked in multiple projects or can be used by QA for integration testing.

What is the license clause ?

Are there any JUnit test cases for me checkout ?
 Yes, source

How to integrate in my existing project ?

Just add the Jar which can be downloaded from here CsvValidator.jar and you are good.

Instantiate CsvValidator constructor which takes these 3 arguements

         // filename is the the file to be validated and here is a sample         // list - defines all the fields in the above csv file ( a field has index, type, isOptional, rege…

ArrayList vs LinkedList vs HashSet Performance Comparision

ConclusionsInserting & Reading sequentially from Collection prefer LinkedList/ArrayListInserting & Reading/Deleting by Search/equals from Collection prefer HashSetInserting, ArrayList & LinkedList performs best while HashSet takes double the timeReading, HashSet performs best while ArrayList & LinkedList are marginally lessDeleting, HashSet performs 10 times better than ArrayList & ArrayList performs 4 times better than LinkedList. LinkedList is slow because of sequencial search Bottom line : unless you are not going to iterate using for(Integer i : list ) then prefer HashSet
Inserting/Reading/Deleting integer's from zero till countJDK7Collectionactioncounttime msArrayListInsert1000/1LinkedListInsert1000/1HashSetInsert1000/1ArrayListInsert100005LinkedListInsert100004HashSetInsert100007ArrayListInsert10000011LinkedListInsert10000011HashSetInsert10000021ArrayListGet/Read1000LinkedListGet/Read1000HashSetGet/Read1000ArrayListGet/Read100004LinkedListGet/Read100003Has…