Hashnode is a friendly and inclusive dev community.
Come jump on the bandwagon!
💬 Ask programming questions without being judged
🧠 Stay in the loop and grow your knowledge
🍕 More than 500K developers share programming wisdom here
❤️ Support the growing dev community!
According to me? that's hard.
I would say it heavily depends on the goal and the role you currently fill. There are some common things I like in other developers
- able to reason about her/his decisions (why, what, how)
- able to let the ego aside (team > me)
- able to communicate problems (to initialize change, not to complain)
- good logical thinking
- decent programming skills (it is training)
But I think I am currently biased, because of a work related problem. That's why I emphazise the communication skills.
Lots of good answers have already been posted, both for 'soft' skills (e.g. communication, empathy) and tech skills (e.g. coding, logical thinking, ...)
I agree 100% will all those answers, but I am surprised to not see 2 other skills which are, in my opinion, super important too:
- problem decomposition skills. This is the most important tech skill for me. If you’re able to correctly understand, then analyze the problem to decompose it in little chunks, then everything else will follow. (algorithm, coding, are only useful if the problem has been well understood and decomposed)
- pragmatic and forward thinking. I but them both together because you need both, and you need to find the best balance between them. Someone which will cut too many corners (not forward thinking) will often make the code hard to maintain or debug, or will not work in line with the strategy. On the other hand, if you only try to shoot for the long term goal, you might lose too many opportunities to ship fast, get feedback, learn from what works and what doesn’t work so well, etc. Trying the achieve the best balance between both gives you some code which has the most important characteristics of both: complexity is managed, it’s easy (or as easy as possible) to debug and maintain, it solves the current problem, it doesn’t try to overthink what might eventually be required in a hypothetic future.