For the past couple of years, government and societies have been trying to make “Geek” cool again. Presidents and Prime Ministers are recommending that computer programming be part of schools’ curriculum. Politics aside, becoming a competent programmer today is more challenging than ever. No longer is just being an introvert genius suffices. Companies and organisations are looking for people with cognitive skills to add to their technical abilities. It is difficult to put a number on this as it is very company dependent; but the 70/30 rule could be applied here as in people should be 70% technical skills and 30% soft (cognitive) skills. A “hardcore” developer hardly moves into management if he/she lacks the soft skills required. I have managed many teams across multiple verticals and develop some job description and career progression path along the way which is in use in some of the largest companies globally. Let’s try to sum in five titles what seem to be the pattern when companies are recruiting or promoting;

Technical skills

Ok this is a no-brainer; your technical skills will get you the interview. When recruiting a Java developer, companies are looking for:

An understanding of the Fundamentals of the Java programming language

It is good to know how to write codes, well even a trained monkey could do it, but knowing the reason behind your codes and or your chosen algorithm would make you stand out from the crowd. You need to have a Rhyme or Reason to your craft

Mainstream programming tools

the fact is you cannot be the jack of all trades (master of none). You have to pick which tool you are going to be master. This is sometimes dictated by the environment you are working in but let’s say it is a good bet to go with the following:

o  Build tools: Maven or Graddle

o  SCM: Git (not GitHub big difference)

o  Build automation: Jenkins

o  IDE: Netbeans or Eclipse – not just for writing code but also code refactoring and debugging from the IDE as I came across many developers who did not how to debug from their favourite IDEs

o  Bug tracker: Bugzilla or Jira

Mainstream programming Frameworks

o  Spring MVC for web development

o  Knowledge of JSF

Application Servers

o  All Java developers should know how to deploy in Apache Tomcat

o  As Glassfish development is halting, the next best thing is JBoss WildFly

Cloud development

o  Get a free account on Amazon EC or PaaS

o  An alternative option to Amazon is Red Hat OpenShift

upcoming-events

Cognitive skills

It is great that you have this deep knowledge of the Java programming language and tools but your employer/ clients will also be assessing you on the following:

Communication

Communication is key to everything we do. We have to interact with the environment around us whether it is in our private or professional life. This is not just the ability of putting words together but how to communicate problems that we are facing or proposing solutions. A great communicator knows how to express herself in front of various groups; remember that something that makes clear sense to you might be the same from someone else perspective.

Problem solving

Developers are problem solvers, philosophers and thinkers. Don’t be one of those programmers who only write code and do not get involve in discussion about how to solve problem such as this simplistic example: tell me what to create and I’ll create it, don’t ask me if it is the best way to do it.

Team player    

All developers work as part of a team from pair programming to a large project team. You need to contribute to the team objectives and goals. Help mentor junior members along the way or assist struggling members to overcome their hurdles. Don’t have an attitude “I’m just here to do my job and then go home”. Be part of the team, you don’t have to make silly jokes to become “team clown” or always go out on team event but just be a team player.

Self-learning

This is a very important skill to have; the ability to acquire new skills in your own time. Do not always wait for the company to provide you with training. You need to go out there and learn new technologies and advances in your field, from front-end development to architecture pattern, there is always something new happening. Read blogs and articles and try to join local meet-up groups. What you learn can path your career to new vertices.

This blog post was not supposed to be this long but the aim was to carve it in a way which would be useful to aspiring developers.

Drop me a line if you want to have a quick chat or join me on one of my courses to develop your technical skills.