Nov 10, 2010

Don't be afraid of Failure

Your CV didn't get short listed; you didn’t get the job you hoped for; you didn’t get the raise you deserved. Don't be afraid of failure because

"Edison failed 10, 000 times before he made the electric light. Do not be discouraged if you fail a few times." -- Napoleon Hill

Failure can help you grow stronger and motivate you more to achieve your dreams. 

Successful people know that things won't always go as planned. They also understand that self-doubt, indecision, being over cautious, and procrastination, etc are symptoms of fear that can stall their progress.  It is through doing, trying, and experiencing things you never did before that you grow and develop.

Failure can make you think differently or take a different path to get to where you want to be

Ask the right questions -- what did I do wrong? how can I do it differently?, what changes should I make?, what can I do to improve?, what are my strengths and what are my weaknesses?, where can I get help?, etc.

Failure can teach you valuable lessons of "what not to do" or how to identify potential pitfalls.  

Sometimes you tend to learn and experience more from your and others' failures than successes. For example, I learned about the importance of writing effective resumes and presenting myself more effectively at the job interviews after being unemployed for more than 16 months since completing my master’s degree. I thought I was easily employable due to my post-graduate qualifications. I failed to understand what the prospective employers were looking for. I also more vividly remember my interview failures than successes. I also learned a lot about software development and the importance of good understanding of the key areas like security, performance considerations, scalability, memory considerations, transaction management, etc from others' and my failures in getting them right or at least being aware of how to detect or identify serious issues that can arise from not understanding these key areas.

Always give what others need before you take what you need.

If you have not failed means you have not pushed yourself to the next level. Motivate yourself to continuously improve your competencies. I am a strong believer of the following quote from

David Maiser.

The people who win are not necessarily the smartest people, but they are the people who are able to sustain drive, commitment, passion and engagement


Nov 9, 2010

Why Java certifications are alone not enough? Is Java certification for beginners only or both beginners and experienced professionals?

Certifications are a great personal achievement. But the true value of a certification to a prospective employer is not the certificate you receive, but your ability to apply what you had learned and the steps you take to achieve your certification(s) -- set goals, learn, research, and practice and the qualities you exhibit like commitment, motivation, and taking pride in your accomplishments.

For Beginners

Certification may be a good start for beginners,  but at the end of the day, it is what you know and not what some documents declare you to know is what matters.. If you think that obtaining a certification will automatically get you a job, then it's not so. Certifications are alone not enough for you to do well in your career or stand out from your competition. If certification is the only stand out item in your resume/CV, the prospective employers won't be interested.

How to get an entry level Java developer role? 

For Experienced Professionals

There is no substitute for hands-on experience. The prospective employers are interested in hiring candidates who can get the job done by assessing his/her past achievements, experience, technical skills, soft skills, and personal attributes. Certified or not, you will be grilled in job interviews. Prospective employers understand that lots of great Java professionals are not certified, and also not all certified professionals are good at getting things done. In interviews, your technical skills, experience, achievements, passion, confidence, soft skills, and personal attributes will be under scrutiny. So, it really pays to apply what you learn technically and non-technically to acquire the much needed hands-on experience. Some candidates look great on paper but are terrible at conveying ideas in the job interviews or team meetings. Prospective employers, especially the larger organizations with multi-disciplinary teams favor hiring clear communicators with decent programming skills than hiring a superb programmer with terrible communication and interpersonal skills.

Technical skills, experience, education, and certifications are of no use, if you can't sell yourself better than your competitors by citing how you added value in the past, and convincing how you can contribute and add value in the future by solving business problems with your technical skills, soft skills, and personal attributes. Employers value your past on the job accomplishments. Primary focus of job interviews is not to ascertain if you can arrive at a perfect solution or memorize answers to the technical questions, but to ferret out

-- how you would go about solving problems
-- how you would go about engineering a solution
-- if you can think logically
-- if you can code
-- if you can communicate your ideas effectively
-- if you can work independently as well as a team
-- if you know the core concepts and key areas of software development
-- if you can learn quickly and passionate about what you do
-- if you can lead, mentor, take inititives, facilitate, organize, influence, and motivate
-- overall if you have the right skills, experience, and attitude to get the job done.

There are so many paths to succeed in your career, and what ever path you take, you must truthfully apply and experience what you learn with passion. If you can't decide what certification to do next, it might be a wrong choice. In my view, just one certification will do, unless you find yourself more disciplined and motivated to learn when there is a prospect of acquiring a certificate. Piling up on certifications might not be the best choice, when there are other better alternatives to boost your career like

  • Participating in open source contribution and taking up a self-taught project to acquire the much needed hands-on experience. There is no substitute for hands-on experience as it not only increases your confidence, but also looks good on your resume/CV.
  • Learning a new piece of sought-after technology/framework or  a soft skill that can help you sell yourself better.
  • Picking up a key area like design concepts, design patterns, concurrency management, transaction management, performance considerations, or memory/resource management, and enhance your knowldege and skills on it. Good understanding of these key areas can help you standout in your resume/CVs and job interviews. 
  • Taking up a voluntary work to acquire some hands-on experience in addition to above alternatives, especially if you are a beginner or finding it difficult to make a break.
  • Taking the time to improve your resume/CV, interviewing skills, job hunting skills, and networking skills to be able to open more doors for you by understanding what the prospective employers are looking for and presenting yourself in a better light.

Your focus should be on selling yourself as a well balanced professional who can provide technical solutions to business problems. It doesn't matter how you get to where you want to be, as long as you get there by understanding what your prospective employers are looking for -- "getting the job done well" and "adding value to their business".

So, before going ahead and spending your valuable time and money on acquiring certification(s),  see if you can take an alternative path of acquiring much needed skills and experience in sought-after technologies, frameworks, and tools will make more sense.

You may also like: Is the effort you expend on Java certification worth the results?

Labels: ,

Nov 3, 2010

How to earn more as a software engineer?

The blog entitled how to earn from additional income streams covered some of the avenues for active and passive income. This blog covers some steps that you can take to increase your earning potential.

Changing yourself

If you did not change in any way in the last year, it’s not very probable that you will get more money. Constantly expand your knowledge and skills. The skills expansion could happen not only through on the job experience, but also through pro-actively applying what you learn through books, blogs, online white papers and self-taught tutorials/projects. Nowadays, there is no such thing as real job security. The real job security comes from keeping your knowledge and skills current and sharp, presenting yourself in a better light in your CVs and job interviews, building a good online persona, and networking. Change yourself not only by acquiring the relevant technical skills, but also by demonstrating the right soft skills, business skills, and attitude. Research shows that the top five skills to have are -- analytical , technical, communication, interpersonal, and leadership skills. While you are at work or being interviewed, you will be judged on these skills along with other attributes like:

  • Being a change agent (someone who "alters system or human capability to achieve a higher degree of output or self actualization). In most of my assignments, I take the lead with the help of my immediate boss on an  initiative called "QuickWins".  The focus is to improve the overall effectiveness and usefulness of a system through small changes in a collaborative effort with the business. Workshops are conducted to list the top 10 or 20 things that can add real value to a particular system. This could be the look and feel of the system, ease of use of the system, responsiveness of the system, etc. A few items are prioritized based on its cost-benefit analysis.

  • Being a good facilitator ( a facilitator’s role is to draw out knowledge and ideas from different members of a group, to help solve problems effectively and learn from each other). Software development is a vast field, and you can't know everything. But you can be a good facilitator to bring out the best of other people.

  • Being a good listener (without the I am always right attitude), being a good mentor/coach, ability to motivate & influence others, being well organized, being a team player, and self-motivated. Even though you are working with the technology, in larger organizations with multidisciplinary teams, you need work with people to get things done. It can be more challenging to work with people than with technologies/frameworks.

Proving yourself as a great contributor

Build up a reputation as a “go to person” and a “person who gets things done”. You need to demonstrate this with the right technical competencies, soft skills, and attitude. Help others and point them in the right direction, but don't do it at the expense of not getting your work done. Helping others will also help you expand your experience and skills by learning from others' problems. It is also possible for this reputation to turn in to "I know it all" arrogance. If you are wrong or don't know something, admit it. Technology is a very vast area, and it is not possible for anyone to know everything. Good contributors are great facilitators as well.

Staying visible

Make sure that your contributions are noticed. Being a quiet achiever won't do you any good. Don't just get stuck behind the keyboard. Attend meetings and meet more people. Prepare prior to team meetings, and add value by contributing good ideas and effective solutions. Bring out your analytical, technical, communication skills, and domain knowledge. Don't over do, fake, or present others' ideas as your own. Give credit to others' ideas. If you are not ready, slowly build up your ideas and skills to contribute. Another area where you can promote your experience and skills are in the code review sessions. Try to earn thumbs-up in code review sessions through quality coding and application of best practices and right frameworks/tools. Another avenue to stay visible that is not tapped into very often is being proactive. Proactively identify potential thread-safety, scalability, transactional, and performance issues, and take the initiatives to get it fixed. Identify gaps in requirements, drawbacks in designs, holes in security, and inefficiencies in the processes, and take the lead to improve them. These are common challenges faced by most software development projects, and it really pays to have the right people who can identify and resolve them. Make sure that your immediate boss is aware of your findings and contributions, but never go around bad mouthing the software/application to the business users and others as to how badly it was engineered to earn more brownie points. This attitude can back fire on you. I have used this avenue very effectively in my career to get pay rise, and also motivated me to write the career companion that focuses on 14 key areas relating to software development. I also use these key areas in my job interviews to convince my prospective employers that I can get the job done by illustrating how I applied these key areas effectively to solve problems and improve the overall software quality in my current and past assignments.

Asking for more money.

Even if you are a great contributor, have changed a lot, and stayed visible, you will most probably not get more money unless you ask for it. Preferably do this on a Friday so that your boss can think about not losing you over the weekend :). Be prepared to tell your boss why you are worth more -- you can't say because you got certified or you understand the key areas and core concepts well after reading the career companions. These add value to you, but not to the organization. Employers are interested in how you had applied what you had learnt. So, you can say -- managing more people; accepted new responsibilities; fixed thread-safety issues; identified and fixed performance & database locking issues; closed gaps in requirements and design; good domain knowledge due to being involved from the inception of the project; being an only remaining member of the team who has been involved with the full SDLC of the product; etc. Be realistic in your negotiations. You should know what you are really worth by looking around or getting other job offers. Don't advertise about your other job offers in the early stages of your negotiations, especially if you strongly feel that you have a future in that company. Also, be prepared to tactfully and professionally handle any negative responses.

Changing jobs, especially if the above approaches had failed, your efforts are not recognized, feeling stagnated, and under paid. You are perhaps working for a wrong company. Insecurity of a new job, the change, more responsibilities, etc can be a fearful experience, but sometimes one needs to take a calculated risk to move forward. Not taking the necessary steps forward can sometimes even be riskier due to lack of marketable skills, experience, knowledge, working for a wrong company, etc. Also, shouldn’t change jobs too often as it can reflect badly on your CV. You could prolong your stay by motivating and challenging yourself with self-taught projects, tutorials, and open-source contributions. If you decide to move on, do it professionally and amicably, as building a good network must be one of your career objectives to get ahead in your career. You never know what the future holds. If things don't turn out as expected in your new job, you always have an option to call your old boss. You and your old boss may cross paths in a new company. I always would like to chang jobs with the parting words from my boss like -- "If things don't turn out as expected, let me know". Also, I make it a point to keep in touch with my boss and colleagues even if I don't want to go back there.

Getting multiple job offers

Getting multiple job offers and being in a position to negotiate and choose from competing offers. Take the time to prepare prior to your interviews. Go through your resume, and reflect back on your past achievements and experience. Brush up on the Java/JEE fundamentals. If you get multiple job offers, look beyond just monetary benefits -- How to choose from multiple Java/J2EE job offers? .

Taking the road less traveled

Becoming an independent contractor or consultant. You can mitigate the risk of being out of contract for a prolonged period by keeping your skills, knowledge, and experience current, marketing them effectively, preparing prior to each round of interviews, and networking. Starting your own company, if you have a great idea and know the right people. Working on the book that you always wanted to write or taking the overseas trip you always wanted to explore and expand your horizons. You hold the key to your career success.

Note: Always look beyond salary when considering your options. Don't base your happiness on money alone. Job satisfaction and opportunity to grow further are equally important. These are general advice only, and one needs to take his/her own circumstances into consideration in making his/her decisions.