Home > Uncategorized > I think I figured out why good Java developers are so hard to find

I think I figured out why good Java developers are so hard to find


Let me start by saying I have an open java position that has been open for about 3 months now.

The problem has everything to do with what you do in your free time. Let’s say a family member asked you to create a website that had some dynamic content, but they only had a $10/mo budget for hosting. What do you do ? Let me tell you what most guys don’t do: chose java. Let’s say you wanted to teach yourself programming, what might have motivated you to take this on: a video game, a phone app, a website, a facebook app ? Take your pick, and when you decide to take the plunge what are the chances that you’ll end up choosing java? Slim, at best. Android, would be the only thing that could pull you to Java given those very likely choices.

If you’re already a good programmer, you probably program in your free time. If nothing more than dabbling or trying new stuff out, you probably spend time doing programming related stuff on your free time. This “dabbling” is probably how you managed to learn ”tool X” and you eventually ended up using ”tool X” at work or answering questions about it in an interview. My own experience goes something like, when I was a C++ developer, I taught myself VB and got a job as a VB developer. When I was a VB developer, I taught myself ASP and got a job as a ASP developer. When I was an ASP developer I taught myself Java and got a job as a Java developer and so on. I don’t think my evolution as a developer is unique at all. I suspect, this is how most programmers manage to keep themselves employed.

I’ve been looking for a junior java developer with about 3 years of experience who knows java and sql. That’s it. We’ve interviewed a little over 10 people. Here’s what is extremely obvious about the candidates I’ve seen: none of them do java development of any kind on their free time. Whenever anyone of them mentioned anything they’ve done on their own, it almost always was a website and almost always involved PHP. When as I evolving as a developer, Java was an attractive language so much so that I spent my free time learning it and developing applications in it – just because.

My theory goes like this: Good java developers are hard to find because fewer and fewer of them are being created. New developers are not choosing java to “cut their teeth” on. And I suspect that coming from whatever they are coming from, java doesn’t look appealing. Those after-hours projects that really give you that “learned the hard way” experience seems to be happening less in the Java world. When you take my original scenario, where you have to create a simple app and host it inexpensively; what do you think an inexperienced person will chose when they stumble on the Google App Engine and realize they can host their app for free: Java or Python ?

About these ads
Categories: Uncategorized
  1. October 14, 2010 at 4:49 am | #1

    Actually, in the case of the Google App Engine IMO they would choose Java, simply because as soon as they install the Python SDK for Google App Engine, they will find it requires Python 2.5 which is not readily available (Python has been at 2.6 for a couple of years now with 3.0 already out).
    Check out the bug about this that was filed in 2008 – http://code.google.com/p/googleappengine/issues/detail?id=757

  2. david karapetyan
    October 14, 2010 at 5:34 am | #2

    Spot on. In fact what you describe is exactly how I have learned all the languages I currently feel proficient in and none of those languages is Java. Every time I try I just can’t keep myself interested enough to do anything interesting in it because of how verbose the syntax is. I keep thinking “this exact same thing is 2 lines in ruby, javascript, python, etc.” and to get Java to do the same thing I have to write 10 lines of boilerplate. It’s just annoying when you are already familiar with a more dynamic language. That being said I think Scala is a really awesome language because it cuts out almost all the boilerplate and the interop with Java is not too shabby either.

  3. Eric Bennett
    October 14, 2010 at 5:53 am | #3

    Interesting coming from a blog titled I love groovy.

    I take from that the guy writing it already realises the value of alternative JVM languages and is even a big fan of one, so why hold fast to pure Java? If you want to find good developers on the platform, maybe broaden your scope beyond the aspect of it you’re having trouble with. I know plenty of people that use JVM languages and very few of them that wouldn’t avoid using pure java if at all possible simultaneously.

    That said, I know sometimes you’re just stuck with POJ, so if that’s your case, best of luck with your search, you’ll need it. I think your reason sounds fairly plausible too.

  4. nickik
    October 14, 2010 at 6:23 am | #4

    Why go to java when there are WAY better Languages on the JVM?
    Why java in you free time its not easy to start everything is businessy. Its not Fun to write Java you can do nothing quickly.
    Why take a language that is evolving really really slowly?

  5. October 14, 2010 at 6:26 am | #5

    I choose Python, assuming if GAE uptime is better with Python than Java.

  6. October 14, 2010 at 6:41 am | #6

    I think it’s related to all the additions to Java that are now required everywhere. Let’s say you landed your first Java job, for a bank where you get introduced to J2EE (might even not be the case). After 3 years you try to score a new job in a more rewarding/interesting field. All the new things that you might have dabbled your feet in in your spare time are required now. JSF, Hibernate, Struts, Groovy … and I think that Java developers are just to honest to go into an interview and give the impression that they have worked quite some projects with these new technologies if they havn’t.

    It’s been five years since my last Java development gig. I can remember someone saying that there’s this new thing called Java Server Faces then. I can remember reading up on it and then never even using it properly. But I can’t remember a company that would have the guts to built their own developer from that base knowledge. Why not create a trainee position where all of these missing elements are introduced to a Java programmer from college over the course of three months? You would have had your developer today.

  7. headpower
    October 14, 2010 at 7:03 am | #7

    I’m a 15 year old person studying to become a developer (mostly in my free time), and I can tell you that Java is not something I would ever consider. I consider myself to “know” Python and [Objective-]C, but, Java isn’t even on my radar. I know some people my age who would use Java, but to me it just seems outdated and bloated to most of us, I think.

    Since I guess I’m the “next generation”, it doesn’t seem that your situation is going to get any better…

    • October 14, 2010 at 2:11 pm | #8

      It’s a great company, great environment and we’re wiling to pay for a good person.

    • TahoeBlue
      October 21, 2010 at 11:51 pm | #9

      Hopefully you “know” the original C language, not just Objective-C.

      Object-oriented languages are all well and good, as are the latest constructs and frameworks used to build server, browser, and mobile apps.

      But being proficient in the C language puts one in touch with the CPU as well as the layers of software which sit on top of the hardware like so many mattresses in the fairy tale of the princess and the pea.

      If rapid prototyping and development is a priority, higher-level frameworks can allow one to get your app or device to utter “hello world” easily enough. However, if performance is the name of the game, nothing compares with using programming languages that allow more immediate control of the machine, even as a user-level app as opposed to kernel-level supervisory code.

      For example, when it comes to populating (or persisting) a large container of RAM-resident data, object-oriented languages have a significant, and unavoidable, issue: the overhead required with each atomic put (or get) of each data element is extremely time-consuming — and gets more so if the number of elements which need to be instantiated in a container is on the order of millions and millions of items. The difference in performance of the same logical operation performed in C versus, say, C++, is quite dramatic: C is over 100 times faster than C++.

      In this day and age of ‘big data’ , and RAM-resident computing, this is a significant factor.

  8. Scott
    October 14, 2010 at 7:31 am | #10

    Let me get this straight. You only interviewed 10 people, from which it’s unlikely to find anyone who knows anything at all or can code fizzbuzz. But more than one had created their own websites in PHP, proving they know how to learn and how to program. And you decided not to hire them?

    I think I see the real problem here.

    • October 14, 2010 at 2:33 pm | #11

      We’ve not filled the position because we have not found someone with less than five years java experience that can write a SQL statement and execute it in Java, but I’m hopeful.

  9. October 14, 2010 at 7:43 am | #12

    I see a ton of developers coming into the Drupal community, but even we are struggling to build developers. I think there’s a real shortage going on at the moment.

    Groovy engineers are *very* hard to find. It’s actually making it less attractive as a business investment, and perhaps that is also contributing. The growth of jobs has risen steadily, as many graphs demonstrate, but the growth of Groovy hackers seems to lag far behind. Same experience as you described.

  10. October 14, 2010 at 8:08 am | #13

    I think your blog title sums this up.

  11. October 14, 2010 at 8:21 am | #14

    To answer the final question: python

    It could be most java developers are staying cool with current job ;)

  12. October 14, 2010 at 8:43 am | #15

    I think you’re right. I myself never ever develop anything in Java in my free time. I run my websites on a cheap VPS with 128MB of memory and there is no way Java is going to be a smooth ride (if it would run at all with such low memory).
    As for GUI apps, in my free time I usually develop only small stuff for myself so it only has to run on Mac OSX, so I naturally develop it in Objective-C/Cocoa.

    Java is not at all an attractive language to me, simply because for my needs there are (in my opinion) way better alternatives. Who needs Java EE stuff like high scalability and JMS for free time projects anyway?

  13. October 14, 2010 at 11:13 am | #16

    It also depends on how much you’re offering, the conditions(+ $), the environment.

    If a guy knows that he’s good and he’s not young, you probably can’t afford him… “We have good coffee, very long hours and low salaries, we don’t manage and have no documentation so you need to be able to work independently… fix our crap in silence without any complains.”

    There are many good developers in big companies, paid to do nothing basically, they are bored at their current job, etc. However they would never take a 10 000$ as pay cut.

  14. October 14, 2010 at 12:10 pm | #17

    Java is a popular high language computer language that is used all over the world. Even if you are knowledgeable on languages like C and C++, you can undergo java training to make your resume shine in the next interview you appear for.

  15. October 14, 2010 at 1:08 pm | #18

    That’s interesting to hear about your experience of trying to hire java developers. What do you consider are the most popular languages people are picking up these days?

    I for one started out with asp.net and have since been working on my own time to learn java for web development. The transition was a bit of a struggle but well worth I believe.

    Oh and I definitely agree that what a developer does in his/her free time is a good benchmark for determining how good of a developer they are or will be. If someone tells me they refuse to do anything programming related after work then they’re not worth hiring.

    • October 14, 2010 at 1:54 pm | #19

      C# and Python seem to be stealing all of the java developers.

  16. October 14, 2010 at 2:05 pm | #20

    >> Whenever anyone of them mentioned anything they’ve done on their own, it almost always was a website and almost always involved PHP.

    That’s because with web you can take your word out and directly deliver your product to your users, that’s why people are interested in programming for web.

    With Java or C++ you’re convicted to write little toys you will have a hard time trying to commercialize. You can only earn through writing programs for somebody ready to pay for it, that is, as an employee or a contractor. But you won’t bring your own product to the market.

    It’s natural evolution in the minds of programmers. Desktop development is dead.

  17. Doug
    October 14, 2010 at 2:08 pm | #21

    “Java is a language for average programmers”. I don’t remember who says it but the longer I work the more it makes sense. I have nothing against java but in the landscape of enterprise development everyone assumes that java = spring + hibernate. Don’t believe me? Hire someone who claims he knows Spring/Hibernate and you’ll recognize he means he knows XML configuration, nothing else. J2EE development is becoming a sweat work, blue collar job just like flipping burger at McDonald, no creativity what so ever.
    If java developers don’t know anything besides jee web programming, please do not hire!

  18. October 14, 2010 at 2:33 pm | #22

    I’m a Java developer but enjoy working in dynamic languages more, like Python and Groovy. I started as a C++ developer and jumped to Java when it was new an exciting. It is not new and exciting anymore but it is a solid language for enterprise solutions. The learning curve now to become a competent Java web developer is high.

    I’ve started my son in programming. I’ve exposed him to Ruby and PHP. I would never start a kid off on Java. It would probably turn them off of programming.

  19. October 14, 2010 at 5:42 pm | #23

    Right tool for the right job. And Java almost never satisfies this for weekend or afternoon projects. Good luck hiring developers that choose the wrong tool in their free time.

  20. Martin
    October 14, 2010 at 6:46 pm | #24

    :) Well, I would say that real good Java developers do not program at home on a regular basis because they have challenging and well paid day jobs

  21. Marko Vuksanovic
    October 14, 2010 at 6:47 pm | #25

    Are you interested in bringing in a developer from abroad? Where can I get some details about the position?

    • October 14, 2010 at 7:33 pm | #26

      Unfortunately that’s not an option. Can only hire US or H1B.

  22. Marko Vuksanovic
    October 14, 2010 at 8:55 pm | #27

    From what I have seen, I am eligible for H1B visa. If you’re interested in some further discussion feel free to drop me an e-mail at markovuksanovic(AT)gmail.com

  23. Developer Dude
    October 15, 2010 at 4:44 am | #28

    Flawed logic. In my experience, many of the people who throw something together as a hobby remain at the hobbyist level of expertise. I was motivated to learn programming because I had to solve a problem on the job (I was a tech with a EE degree). I was further motivated to improve my skills at programming because I found I enjoyed and more importantly I found it was a good career path, but the ultimate motivation with regards to which language to chose was the job market.

    If you go to Indeed.com and use their job trends tool, you will see that Java is still numero uno when it comes to languages in job postings. This means that there is a demand for Java devs.

    I am not sure why you can’t find someone to fit your position, but in my experience employers who go for more than a few months without finding someone to fill a position usually are looking for the ‘perfect’ candidate and won’t settle for someone who is close enough to do the job.

    If you really need someone, then you need their skills now, not six months from now. Quit screwing around and hire someone who is good enough so that in six months they can do the job that you need them to do, rather than waiting and waiting and waiting. Some words to think about:

    Opportunity Cost
    Analysis Paralysis (i.e., quit trying for the perfect solution and do something – if it doesn’t work then try something else – i.e., hire someone)

    • October 15, 2010 at 10:56 am | #29

      What makes you think you know that I’m screwing around? I’ve been coding since I was a kid on a tandy 1000 and I was not motivated by a job. If you can’t write a SQL query, you will not get hired. Period. Especially when you have SQL as a skill on your resume. I know what I’m doing. I know my area better than you do and there isn’t a high demand for Java developers here. Why ? Because most companies here have moved away from Java. I’m not in the middle of no where either and I’m in a city of over a million people. Every recruiter in town has told us Java placements are hard, and they say it’s not because of demand but because everyone is moving to .Net in this area.

  24. poca
    October 15, 2010 at 7:35 am | #30

    Dabbling often means doing web og as you say games. That really dosen’t prepare you for distributed transactions, message queues, webservice with more than just basic soap, buildsystems that work with 1mio loc projects etc. But if you don’t need anything enterpricy then why don’t you use php or python?

    I don’t know where you are located in the world but in my city we have about 18 brokers that specialize in selling hi priced Java devs to some of the biggest projects in the country while theres only one claiming to specialize in ruby and only a handfull of guys who can do python and for most its not their main experience on their CV even if they would like it to be.. If you wan’t to catch a Java dev before they start digging for gold then you need another approach like contacting them at your local university before they finish their degree. They are not going jump in your arms when you only need someone who can dabble and will pay according to that.

    • October 15, 2010 at 10:38 am | #31

      We don’t use php or python because we’re looking for someone to assist in maintaining an existing large Java application. I’m located in the southeast and there has been a steady trend for many companies here to move to .Net. One of the largest companies in town, which is the largest in the country in their industry, kicked Java out the door. Everyone on my staff has the title “Senior Developer” or higher. We have a budget and we can’t hire another high priced developer, but we are offering a nice salary at company growing like wild fire for someone that doesn’t require a 6 figure salary. I don’t want to hire someone completely green and we’ve lowered the requirements to the bare bone Java and SQL. As I implied in my post, this has been suprisingly difficult. .Net guys are in higher demand and see no need to switch over to Java. I’m not the problem. Half of the people we’ve seen don’t have jobs. The demand for Java isn’t so high that everyone is employed. Post a java job anywhere and see how many people come knocking at your door that you would actually hire or that you could afford.

  25. October 19, 2010 at 10:29 am | #32

    There is something wrong if your candidates play with PHP and your conclusion is that Java is not sexy enough for them.

    It would be different if you said that they were using Rails and Scala. Otherwise, your conclusion should be that the new generations are going back to PHP. Flawed logic, IMHO.

    • October 19, 2010 at 11:04 am | #33

      That kind of doesn’t make sense. I’m not doing scala or ruby, so why would I assume others are make a bad choice by not using them. I’m doing groovy, python and c# myself(when I’m not doing java).

  26. October 19, 2010 at 10:46 am | #34

    Hi there, To someone who knows nothing about Java but that is eager to find out why it is so hard to locate Java professionals the above blog and comments are really helpful… can i ask a question? (that you may cause you to cringe when you read) Is there a program equivalent to Java out there that can perform the exact same job/function that may have a larger amount of IT professionals… ??

    • October 19, 2010 at 11:12 am | #35

      Yes. The .Net platform. It’s the only completely comparable platform. Java and .net have an answer for almost every problem. With other languages (ruby , python , etc) you may have to roll your own libraries more often than when compared to the other 2 mentioned.
      .net may not have more developers either, but it’s java’s closest competitor.

  27. November 3, 2010 at 5:29 am | #36

    Even with 10 years of Java playing on my own time, most employers here say “Oh but you haven’t use Java the way we do, or in the field we do”.

    Though I very much agree that there are many more sloppy cowboys now and very few Engineers, took me 6 years of school and 25 years of playing to feel OK about calling my self a Software Engineers.

    Now I find people with a 3 month college evening course and 6 months of installing Drupal doing the same ………

  28. ed
    December 10, 2010 at 11:48 pm | #37

    The real truth is that there was never enough people with the type of interest to make people really good software engineers. Back when there was less demand in the software industry, there were enough ‘geeks’ to go around. In today’s environment, there are more casual software engineers that became engineers for practicality more than interest. They don’t have the motivation to explore new technologies unless they find the need to keep updated for their jobs.

    I think over half the java engineers in the world will always be jr level quality. A good number will learn enough to be solid coders, and a handful will have the interest and insight to become some really good engineers. In most cases, as an employer, you’ll have to settle with an average coder, especially if all you’re looking for is a jr level programmer.

    On a slightly different note, there’s also so many frameworks and libraries out there that java programmers tend to prioritize learning how to use 3rd party software over learning how to address real problems. For example, a company may not need anything more than Servlet to implement their application, but an inexperienced programmer may decide to build the application on top of Spring (in all its glory). I find that many programmers are more familiar with Spring and Hibernate than concepts like Memento or Singleton.

  29. Ahmed
    February 27, 2011 at 1:38 pm | #38

    Read your post and some comments so I thought I will give my 2 pence worth… Java was the first programming language I was ever introduced to. I took Computer Sciecne at University were Java was a major Unit(Had to do it!!). Not knowing what a programming language is I was utterly confused. simple statements such as int x = 5; int z = x + y; really got me.
    Anyways I completed my degree with studying three years of Java and I can barely write a “Hello world” statement. Java really disheartened me that I was capable of doing any programming what so ever!!. I found myself doing Helpdesk support after graduation as it was the only thing I knew (or can do). I was too scared to learn Java at my spare time so I thought I will try HTML(also new to me) and start developing websites, mind you I still had to learn PHP and then realizing CSS and Javascript are key in web developing. I tell you what I learned all of those new languages in less than a year and developed a website for a friend currently live.

    I now work for major Household name company as the Web Manager and restarted my affair with Java (better than before but still painful). My point is Java is not easy!! course nothing is but if you are new to programming I kind of recommend you learn Java. As crazy as it may seem learning Java actually makes other languages a breeze….well for me anyway.
    My dream is to develop games, so as long as I’m alive I will be learning Java whether “Java” likes it or not. There are other languages to develop games but it’s personal now!!!

    • February 27, 2011 at 6:37 pm | #39

      Java really does create a love hate feeling. There are situations where it’s the perfect solution and where it’s far from that. I love that you’ll be learning it regardless. I feel the same way. For me, Java’s saving grace is Groovy. Groovy makes Java extremely attractive, with the only shortcomings being on the JVM side.

      • Ahmed
        February 28, 2011 at 1:41 pm | #40

        I want to try Groovy but I feel I’m not yet accomplished enough in Java to start Groovy. I know my Java basics… I mean all different types of classes, Methods, Variables, etc. I’m on a level where I can look at a java code and pretty much figure out how it works. However I can only write a small part of code from scratch. Just wondering would you recommend for someone like myself to jump on to Groovy? or better advance my Java skills?
        Your thoughts would be much appreciated

  30. James
    December 11, 2012 at 8:48 pm | #41

    You want them to have 3 years experience in Java and be willing to accept low salaries? Hahh. I don’t know where you are, but here in Portland, that its an 80k/year employee. Maybe a bit less if you don’t kind them telecommuting most of the time. And you are giving them the junior dev title? Eesh. It honestly sounds like you don’t need this position filled enough to justify an experienced Java dev.

  1. October 14, 2010 at 4:56 am | #1
  2. October 14, 2010 at 5:32 am | #2
  3. October 15, 2010 at 12:07 am | #3
  4. October 19, 2010 at 4:58 am | #4

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: