Attracted by high salaries, strong employment opportunities, and a chance to build things that can change the world, more people than ever are choosing software engineering as a career choice. However, succeeding in this career requires more than just great coding ability. The best software engineers bring specific qualities and attributes to the job that make them stand out from everyone else.
Working well with others
There are many media portrayals of a lone-wolf that stays up all night coding furiously in isolation. This stereotype represents coders as exceptionally smart but emotionally stunted. Unfortunately this type of temperament doesn't work well in real life. Software engineers who know how to work well with others are much more likely to be successful in their careers than lone wolves are.
A software engineer's job is to figure problems out and to produce a great product, not just to write as many amazing lines of code as possible. That means communicating with other engineers, developers, managers, quality control people, customers, etc. and treating them with respect and understanding. The better your relationships are with your team, the better your own work will be.
Letting go of the ego
Not bringing your ego to work with you and staying humble can be difficult at times. No matter how good you think you are at what you do, it's inevitable that you will make mistakes along with some bad decisions. Accepting constructive criticism from your peers when errors are pointed out and accepting responsibility for your mistakes will make you a much better engineer in the long run. Possessing a humble attitude is the only way you'll be able to channel other people's feedback into improving, learning, and making yourself a better software engineer and person.
Not putting out mediocre work
Software engineers who pay attention to details tend to write higher-quality code. They tend to step back and catch mistakes, instead of rushing and cutting corners. Those that feel a personal sense of ownership and pride when it comes to their work tend to be more successful in this career. Putting effort into what you're doing wards off mediocrity and gives you that push to produce high-quality work and not get too complacent. Also, sharpening your skills by learning new languages or keeping abreast of any new data structures or algorithms can keep things interesting and fresh.
Being naturally curious and interested
People who love to learn are constantly improving and exploring new and better ways to do things. By listening to podcasts, reading blogs, or going to conferences, you can stay on top of the latest trends in software engineering and be looped into topics that will make you a stronger and more well-rounded engineer. By being open to new things, new ideas and approaches to solving problems may come to you that wouldn't have occurred to you otherwise.
Developing soft skills
Soft skills are fast becoming hard skills in this ever-changing world. It’s simply not enough to be highly skilled as a software engineer without developing skills that help you get along with your team effectively. These skills have a significant impact on a your attitude which ultimately ties back to your success. The skills for success tend to be fairly consistent - adaptability, problem-solving, self-management, attention to detail, creativity, communication, collaboration, work ethic, empathy, and organization are just a few. Keeping these qualities in mind can help any engineer improve, no matter how experienced.
Seeing the big picture
Understanding and balancing the day-to-day steps that are required to get to a goal yet not losing sight of the long-term vision is key to being a successful software engineer. By practicing this skill and thinking ahead, you will be able to see how each individual component will eventually contribute to the product as a whole and how each element will interact with each other. The ability to weigh out the long- and short-term outlook and see how certain decisions can influence the scope and direction of a project is a key attribute. Being able to adapt and prevent a project from derailing is what separates really good engineers from mediocre ones.