After working as a professional software engineer for
10 years, I want to share what I think is a good software job here.
(1) The opportunity of trying different stuff.
You have the chance to touch the different technology, not necessarily the newest. E.g., after working as an application engineer for one or two years, you can make your hands dirty on kernel. Be bored of using
C++, it is time to have a taste of
Go. All in all, keep freshment is an important factor to motivate you.
(2) Contribute to FOSS.
No one will deny that both the tech giants and start-ups depend on FOSS (Free/Open Source Software) greatly now (Even Microsoft “loves”
Linux). If your employer encourage you to contribute back to the project rather than only exploit it, it is really beneficial for community, yourself and company. “A stone kill three birds!”
(3) Sponsor you attend tech conferences and training.
Attending tech conference can expand your horizon, know more new people, and be aware of what other companies are doing and concentrating on in your area. If you can give a talk on some famous conferences, it will earn reputation for both you and your company. Besides this, life-long studying is important for software engineer, so it will be fantastic if your boss is willing to pay money for your enrichment.
(4) Encourage innovation and knowledge sharing.
It will be a great favor if you have
~10% work time for your own project. Actually, the company can select and cultivate seed from these projects, and it may bring potential success. The classical example is
gmail. On top of that, Knowledge sharing is a good section in team meeting in which you can learn skills from your colleagues.
Besides the aspects mentioned above, I think there are some other factors. For example, salary, welfare, promotion, etc. Since these are not software job exclusive, and a little complicated among different industries, companies and even countries, I won’t elaborate it here.