Creativity, empathy, listening, vision: The skills of a perfect developer aren’t only technical. Many tech companies believe that the ability to write good code—that makes a product come to life—is at the heart of their success. The current emphasis on these skills seems totally rational, but what companies forget is that this won’t be true forever.
In the future, computers will take over more and more of these tasks, including programming and data crunching. What can’t be replaced in any organization in the imaginable future is precisely what seems overlooked today: liberal arts skills, such as creativity, empathy, listening, and vision.
So, a good developer should not only have great technical skills, but also the right behavioural and “human” characteristics such as:
Developing applications shouldn’t be just a job, but a passion.
Be driven by creativity: a good developer doesn’t work only 8 hours a day. A good developer never gives up before the process/job has been completed.
Thinking outside of the box.
Listening to advice by more expert developers.
Always be open to learning, from the beginning to more senior stages.
Always ready to get in the game.
Be customer oriented.
Willing and eager to share knowledge, to get involved in new projects, and be part of the team effort in streamlining the tools/practices.
Don’t fear the reaper: Always be ready to throw away some legacy stuff (even if it’s yours), or start from scratch, to improve the quality of the project.
Important technical skills:
Computer science: data structures and algorithms, as well as object-oriented programming.
The app life cycle and thread management: multithreading (queue, dispatch, operation), main thread, etc…
Good knowledge of UI guidelines, frameworks, sensors (platform-specific).
Persistence, ER basic concepts (helpful to model the application domain), basic concepts about architectural patterns (e.g. MVC), and some basic concepts of enterprise design patterns (e.g. version number pattern).