Today I was listening to an older episode of Advanced Selling Podcast which was Income Inequality--How You Can Be At The Top End of the Income Scale. One of the most important messages of this episode was the idea that in order to be successful (i.e. get more income) you need to acquire some important knowledge and skills.
Although Bill Caskey and Bryan Neale produced this list of most important skills to develop with sales person in mind, I believe that it is quite applicable to software engineering as well:
- Communication skills. Verbal and writing. No-brainer. You must be a good communicator to be successful in any area, period. Most of software projects are done in teams and teams always depend on communication to perform efficiently.
- Problem finding and solving. As an engineer you deal with problems solving every day, but what distinguishes great engineers is an ability to look deeper and spot problems. Not sure if you can learn this anywhere.
- Sales and marketing. This one is a bit tricky. Many engineers believe that they are never going to need this. But they are involved in selling more often than they might think. They sell ideas and designs to their colleagues, designs and recommendations to their managers and so on. And again success depends on how well they do that.
- Financial side of business. Unless you are a novice junior developer (and even sometimes if you are) you make decisions that influence your project and you need to understand possible financial underpinnings of those decisions. This is especially applicable to development leads and managers.
- Planning. You build plans to make sure you have an idea how to make something happen. This again is applicable to any area you may work in.
If you are looking new inputs for self-development be sure to check out Advanced Selling Podcast.