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.
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.
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.
Labels: Java career