So you want to become a developer?
This piece discusses the essential traits of successful developers: a disposition toward rational thinking, the ability to emotionally attune oneself with others, an organized and systematic approach to life and tasks, the ability to summarize facts and observations and derive insights from them, and the strength to push through confronted to whatever setbacks may be thrown our way.
All too often, blog articles and other media lay claim to unveiling the definitive list of skills a programmer needs to be successful β and all too often the list consists of a number of languages and tools most in demand at the time of publishing. Very seldom, however, these outlets discuss a more fundamental and enduring aspect of programmers' arsenal that less apparently, yet most decisively impacts their long term chances of success: their personality traits.
Personality traits refer to the less malleable aspects of one's way of interacting with the world, gathering and interpreting information, making decisions, and relating to others.
Some of these traits are apparent, they are the stuff out of which stereotypes are made. But some others may not be: Very much against the imagined archetypes, successful developers need to have at least some abilities that fall outside the loop of a control structure in order to thrive.
First, the Fundamental: A Rational Mind
What we cannot understand, we cannot solve: A programmer's ability to process information is fundamental to determine their potential in the field. His or her ability to comprehend, internalize information and then find the logical cobwebs that connect the different pieces of code and information is what allows them to troubleshoot problems successfully and creatively.
Rational oriented individuals will also tend to strive for efficiency in the solutions they provide, being particularly adept at recognizing which parts of code are superfluous and which are truly essential for achieving the task at hand. This is because a rational orientation favors the creation of logical shortcuts (both in programming and in every day situations) that make for better, more efficient code.
People with this orientation will also tend to be happier and more successful following technical leadership positions as opposed to managerial roles.
Second Only to Rationality, Empathy
It is not only what you do, but how you do it: A healthy balance between emotion and rationality is important. This is because in today's world of teamwork, communication and interrelation, those with at least a moderate ability to work well with people will have the distinct edge. Empathetic developers will stand greater chances of thriving as they will use their diplomatic chops to navigate the complex world of human interactions.
In software and web development, the ability and desire to put yourself in the shoes of others you work with affords you a broader view of the challenges faced by the team. Empaths are also more skilled at changing the vibe of any given social situation, making them particularly adept at managerial positions later in their careers.
This much is true, even for those working entirely on their own. Even without coworkers or bosses, the need to communicate with clients, mentors, and the development community at large requires that one attunes himself to the feelings of others.
3.1.1 Systematicity and Structure
Decision-making style also impacts the potential success of a programmer. Individuals who think systematically and create structures out of the information that is presented to them will have a distinct edge. Thorough decision-making guided by rules and protocols may sound a little dry, but without structure complex systems of interrelated pieces of data can grow unwieldy.
By virtue of their thoroughness and organization skills, the people who make decisions based on patterns and plans, who like making lists, connecting the dots and tying lose ends, are best positioned to thrive because they are more likely to carry the project through to the end with fewer mistakes.
The Power of Intuition
Rationality, empathy and systematicity matter. But to be truly exceptional, to truly stand out, a well developed intuition is absolutely necessary.
Consider this analogy: Just as frameworks simplify the task of creating large applications by packaging discrete parts of code and layering them so as to make them more manageable, intuitive minds working on those frameworks too, have an edge in doing the cognitive packaging and layering of data, ideas and rules to make the process of coding more efficient. Why?
Because a strong intuition allows a programmer to form patterns, theories and ways of conceptually understanding problems. A strong intuition makes abstract thinking possible. It allows us to reach conclusions from massive amounts of past observed concrete facts, facts too numerous to be considered discretely at any given moment.
Intuition is like the logic that underlies a framework, it summarizes bundles of experiences (classes, providers, objects) allowing us to reach conclusions (actions) which would otherwise be impossible to process (execute) β due to the sheer amount of elements to consider.
So long as they are able to express themselves adequately, programmers with developed intuitions will easily communicate problems in strategy and process because they can unconsciously -not whimsically- understand complex problems.
The Importance of Personality Traits
Rational, empathetic, systematic, intuitive programmers with a go getter attitude are the ultimate rock stars of the programming world. They are the ones that make successful careers, rise to the top and teach, by communication or sheer example, how things should be done. They are skilled, diplomatic, grounded visionaries any manager will want to have on their team, and any team want to be led by.
Cultivating these traits is a complex and long term process and investment. It can be done however, and the benefits of doing so will percolate into every aspect of one's life β not just programming.
Such investment and effort requires perseverance - the fifth, last, and perhaps most fundamental trait of any successful programmer or professional. Whatever the field.
This article was originally published on LinkedIn on May 1, 2015
Top comments (0)