Packt Publishing reached out to me and offered to do a book.
They pretty much want me to do any book and pre-agreed already. They gave me carte blanche on the topic.
(More or less, I doubt I can convince them to publish a vampire thriller set in a Silicon Valley startup.)
Funny thing is that I know the editor. He worked at Apress Media when I published my first book Practical Node.js with them.
I submitted to them my idea about a software engineering career book for junior developers. They liked it. It can become a book!
While thinking about the career in software engineering, I thought about top skills.
As in any profession, software engineers requires a combination of certain skills and techniques.
I’ve done software engineering for over 15 years.
I taught total beginners (in Hack Reactor) and professionals (in Fortune 500 companies).
The most important skill in a good software engineer is not smarts. No. It’s not how good he can write code.
It’s not soft skills either
Over those years I often observed these skills which make good software engineers:
- Logical thinking
- Pattern recognition
- Memory
- Reading
- Typing
- Tenacity
- Thoroughness
- Learning fast
- Social (soft) skills
- Technical (hard) skills
- Decomposition and chunking
- Prioritization
- Ability to focus
- Initiative
- Innovation
- Pragmatism
- Business alignment
- Curiosity
- Courage for change
A few bullet points such as initiative and learning fast are nothing surprising and true for other professions.
Some of the points require clarification.
Memory includes memorization of where to find things, domain knowledge, whom to ask and even what is the name of the class.
Don’t discount skills which seems easy and trivial such as fast typing. Fast typing and good memory of classes and method (of a programming language) can get you more milage to learn, solve problems and innovate.
If I got to pick, the most important skills are tenacity, logic and memory. Memory overlaps with fast learning, reading.