The developer world is a competitive one, especially these days. It's difficult to stand out from the pack, but this article will illustrate three different scenarios where you can make yourself shine - at an interview, in your resume and at work.
Java/JEE Job Interviews
Let’s have a look at a typical Java/JEE Job interview scenario, where a candidate is asked the following popular interview question:
Q. What are the two main OO techniques for code reuse? Which one of those two will you favour and why?
Most candidates will correctly say:
- Class inheritance.
- Object Composition.
Some will then go on to say that "Object composition should be preferred over class inheritance (implementation inheritance). A few will then continue to briefly explain that…. “If there is no ‘is a’ relationship then use composition for code reuse. Overuse of implementation inheritance can break all the subclasses, if the superclass is modified. Do not use inheritance to just get polymorphism. If there is no ‘is a’ relationship and all you want is polymorphism, then use interface inheritance with composition, which gives you code reuse."
Some interviewers will be digging a bit deeper to make sure that the candidate really understands the OO concepts. Only a handful of candidates fully understand OO concept and will be able to elaborate with all the vital information as discussed below. This will enable those candidates to stand out and make a real impression on the interviewer(s) or prospective employers.
"Class inheritance is static and it is done at compile time. In object composition, functionality is acquired dynamically at runtime by objects collecting references to other objects. This is possible because objects are accessed via their interfaces. So, one object can be replaced by other objects as long as they have the same type."
If permitted, these candidates will also continue illustrating...
"Interface inheritance should be preferred over implementation inheritance because it promotes the design concept coding to interface and reduces coupling. If you look at Gang of Four (GoF) design patterns, you can see that it favours interface inheritance to implementation inheritance. For example, the decorator design pattern used in java.io.* classes where responsibilities to objects are attached at runtime."
Note: Before you elaborate, ask the interviewer if it is okay to do so. In some interviews, you will be given a sample problem to code, where interviewer will be expecting good understanding of OO concepts.
In most cases, most of us know the basic answer and have worked with these practically, but being able to give a clear and concise answer will make you stan dout from the pack and get a job offer as a first preference and also power to negotiate your salary or rates. So, refreshing prior to interviews can really pay off. Also, being thorough in key fundamentals can make the interviewer over look any other weaknesses like not having worked extensively with a particular framework or an application server.
Today many prospective employers embrace networking as the key source for finding a new position. Even when candidates are brought through a networked source, the first thing one would say is "Ask them to send their resume and I will see what I can do". There are no clear cut definitions in separating an ordinary resume from a resume that stands out. This is always subjective based on the prospective employer. Some guidelines can be drawn to compare an ordinary resume with a one that is more effective.
An ordinary resume markets you just as a techie, uses ordinary phrases, information is not quantified, packed with irrelevant and trivial information fulfilling your needs not the employers’ needs, one size fits all, lots of responsibilities included…. phrases, and vital information is scattered throughout.
An outstanding resume markets you as well balanced candidate with technical skills, soft skills, and business focus, uses perfect phrases in a clear and concise manner, achievements are quantified, addresses employers’ real needs, replaces responsibilities included… phrases with on the job accomplishments, resume is customized to the position applied for, and the important information is in the first page.
So taking the effort to writing a resume that stands out from the pack can open more doors for you than people who are better qualified than you.
Being a well-balanced developer with good technical skills, outstanding soft skills, and business focus can do wonders to your career. Being a visible contributor is the key. Knowing the key areas and core concepts can save a lot of development time and improve the overall quality of the software. One example that comes to my mind is the very common "Concurrent Modification" Exception. Many of us get through solving this by trial-and-error in a time consuming manner. But if your fundamentals are clear then you would save heaps of time by knowing what exactly to be done to solve the problem. More often you make a good impression on your superiors and peers by pro-actively identifying potential issues related to performance, multi-threading, transaction management, security, etc and fixing these issues before they become a major headache. Just being a techie alone not enough. One needs to have good technical skills complemented with excellent soft skills and good domain knowledge to scucceed in his/her career. So, just piling up on certifications alone is not going to cut it.
These gestures will make you stand out from the pack and consequently can do wonders to your career. You don’t have to wait for 2-3 years to be what you dream of becoming. Just technical skills alone can be easily replaced. One needs to be well balanced with good technical skills, domain knowledge and soft skills to succeed in his/her career.
Get more career tips http://www.lulu.com/java-success