Jan 30, 2014

Are you finding it hard to get good Java jobs? Are you putting yourself in hiring employers' shoes?

Are you finding hard to get good Java jobs?

Are you just offering what you have for your prospective employers or putting  yourself in hiring employers' shoes?

Here are some examples as to why employers favor experience to just academic qualifications.
  • We work in an agile development environment and all tasks are time boxed, hence we need an experienced developer. A burn down chart is generally used to measure progress.
  • We have a very tight deadline and need an experienced Java resource to help us meet the dates.
  • We lack Drools experience in our current team, hence we need a Java developer with Drools experience.
  • We need a junior developer with some exposure to Spring, Hibernate, and web development so that he or she can start contributing from day 1. We are happy to provide some basic training.
In real life situation things are not as black and white as academic situation. You won't work in isolation, but in a multi-disciplinary and multi-cultural teams with varying personalities. You will be faced with both technical and non-technical challenges.  You need to have the right balance of technical and soft skills to get things done.

Putting yourself in hiring employers' shoes

Employers are in general looking for the following qualities, which you can acquire from gaining some experience.
  • Implementing a solution for the given requirements by asking the right questions. You need to have the ability to translate the functional requirements into technical details and then implement them. For example, an online order placement system that has a web interface to gather user input and then persist this data to a database.
  • Problem solving and critical analysis skills to identify and fix problems that arise relating to the 16 key areas like performance issues, memory leaks, security holes, etc. Critically review your work and others' to improve the quality of the software you build. Tactfully convey your critical analytical thinking to others when you perform code reviews or synchronize others' changes to your local development environment. It is a good practice to review others' work to identify any potential issues, but also you can learn a lot from others' quality craftsmanship. This is what open source contribution and participation will help you achieve. Review carefully all the working code in this blog posts. Read the code first and then try writing the code yourself.
  • Effectively communicating your thoughts to wider audiences both technical and non technical. Don't use technical jargon with the business. Focus on both verbal and written communication skills. Active listening is a key part of effective communication. Use visual tools like screen shots,  conceptual diagrams, UML diagrams, entity relationships (i.e ER) diagrams and power point presentations to communicate your ideas and convince others.
  • Emotional intelligence to work as a team. You need to control your emotions and understand others' too. You want others to be delighted to have you on their teams. Handle criticisms well and treat others with respect as how you would like to be treated. Have empathy to put yourself in others' shoes. 
  • Quick learner and passionate about the chosen field. Learning is an ongoing process. Take on new challenges by being open to learn new technologies, frameworks, and tools.
  • Analytical thinking and researching skills to meet the business objectives  and deadlines by being creative, researching, learning from your own and others' mistakes and picking yours' and others' brains. Many things are not black and white in the real world and you need to make trade offs -- for example, between tactical versus strategic solutions, build new versus enhance existing system, overnight batch run versus web based interface, etc. Understand the various conceptual architectures and often you need to provide hybrid solutions that suits your environment. Analyze when to use what.
  • Coding skills --  iteration versus recursion, understanding of the data structures and algorithms, applying the best practices and design patterns, understanding of the potential pitfalls, writing testable and readable code, good diagnostic skills, etc.
  • Leadership and mentoring skills by taking initiatives  to get the business requirements clarified and properly documented, filling in for your manager when he or she is away, and helping your fellow team members and new starters.
  • Right attitudes: No "I know it all or I can't be wrong" attitude. Motivation to say "I can do it". Courage to accept your mistakes -- "it was my bad or mistake". Being positive to say "It can be done".

Q. What questions do employers ask to see if you have the above skills?
A. This was covered in detail in my book entitled "How to open more doors as a software engineer"

Even if you don't get any specific questions, you can show off the above qualities when asked open-ended questions like

Q. Tell me about yourself?
Q. Can you give a 100 feet overview of the last application you worked in?
Q. Do you have role models? Where do you get your daily technical doses?
Q. Why do you like software engineering?
Q. What are your short term and long term goals?
Q. How will you critically review your fellow developers' work?
Q. What challenges did you face in your last assignment and how did you go about solving them?

You need to seize the opportunity to sell yourself without over-doing or bragging without any substance or evidence. Provide real life examples where appropriate, and be prepared for follow-up technical questions. So, don't lie.

If you say the following in your resume or at the job interview
  • Redesigned and rewrote the data-packager with 300% performance improvement along with ability to extend, reuse, and maintain the application through proper OO design with patterns.
you need to back it up in the job interviews as to how you accomplished such a significant performance gain.

The competition is getting more fiercer every year, so it really pays to regularly invest on your career by acquiring the sought-after skills. This becomes even more vital for the freelancers and contractors who change jobs more frequently. Even though you are a techie, you need to acquire the right skills to market yourself. This is the main driver for my book "How to open more doors as a software engineer", which is a 30% technical, 30% marketing know hows, and 40% motivational to take your career to the next level.

Tip: The above skills will be under scrutiny in your resume and at the job interviews. So, carefully craft your resume to bring out both your technical and non-technical skills. Don't just list the tasks you performed, but emphasize on your accomplishments and the difference you made. Before attending job interviews review your resume and reflect back on your experiences to convince your prospective employer that you are not just a techie, but possess the above qualities to get things done  in a real environment, which is full of unexpected challenges and dealings with people with emotions. You need to thrive in a team environment by working independently and as a part of a team.

If you need more insights, our "Java/JEE resume companion" and "How to open More Doors as Software Engineer?" will provide that in more detail with examples.



Post a Comment

Subscribe to Post Comments [Atom]

<< Home