The software development world is fascinating. When I started to write my first lines of code (back in 2010), I was fascinated with all the things that I would be able to do.
I think it's really normal to every software engineer (especially in the beginning of the career) to focus only on technologies, new frameworks, design patterns, different languages, databases and all the infinite stuff that technology gives to us.
In the beginning, the majority of us just care about to grow fast, to learn new frameworks as soon as they're released, to memorize all design patterns, to learn new languages, etc - I was at this same spot some years ago.
I believe that we must always keep evolving our hard skills. Technology evolves quickly and we, as good software engineers, must be aware of those changes and be prepared to always being learning and growing at the same pace (if not faster) that technology does. We don't need to know every new framework that is released but we should be always learning new things (people who don't learn are people who don't evolve).
However, if I could give one advice - specially for the ones that are beginning on this exciting journey is: besides the hard skills focus and put some energy developing your soft skills.
Hard skills are really important but at the same time are much easier to learn. It's kinda the natural flow of our career. We'll always have more senior engineers that can teach us, thousand of conferences, courses, videos, posts, etc.
All these available materials allied with the day-to-day experience (that is really important) are the foundation to improve our hard skills.
In the other hand, soft skills are much harder to be taught (I even risk to say that it's almost impossible). Soft skills are something that we should learn almost by ourselves, everyone has a different personality, past experiences, childhood, education background, political opinion and every aspect of our lives (professional and personal) that shape our soft skills.
After so many years working in awesome companies with awesome people I realized that almost every projects that failed (somehow) didn't fail because the team didn't know the programming language, the database or something related to the technology itself. They failed because we're humans and it's hard to "apply" soft skills in our day-to-day (communication, collaboration, professionalism, empathy, ...).
I personally prefer by far a person that knows less (technically speaking) but has stronger soft skills than a person that knows every piece of a framework/language but doesn't know how to share this with the team, how to collaborate and how to help more junior peers to grow.
Just take a step back and look at your company, I bet that the best team is not the one with only senior engineers living each one in their own silos.
This is the one million dollar question. However, if I could give some advices that worked and are still working for me (because improving soft skills it's a path without ending) are:
1. Know yourself
In my opinion, one of the best ways to start improving the soft skills is to know you better. It may sounds a little philosophical, but knowing your personality is a good starting point to know in which areas you should focus your energy to improve.
There are a lot of specialized companies that do DiSC assessment and other techniques that in the end have the purpose to know you better. If you want to try something more "informal" I'd suggest the 16Personalities (isn't a DiSC but it's cool to do the test and to know your personality).
2. Ask and give feedback
One of the best tools (and free) to improve is to ask and give feedback. I really encourage you to ask feedback to everyone, not only to your manager but also to your peers, the people who you mentor, etc.
Always try to look for good quality feedbacks (don't confuse good feedback with positive/negative feedback). Also, don't expect to only listen the positive points - if this is happening maybe you're asking to the wrong people.
After a while (and if you really care about feedback), you'll start to realize all the points where you can improve. Feedback is such an amazing tool 🙂.
I won't cover the aspects about feedbacks itself because there are a lot of good materials over the internet that may help you better than I would be able to. Some tips: be open minded, always be thankful and don't put yourself in the defensive mode (otherwise it'll be extremely hard to understand the other point of view).
3. Search for good materials
The internet is a golden mine of good materials about tips on how to understand and improve soft skills.
More than the internet there are a lot of awesome books about this subject. One of the greatest books that I've ever read (and it's a mix of programming and soft skills) is The Software Craftsman: Professionalism, Pragmatism, Pride by Sandro Mancuso.
Also, there is a really nice TED Talk about soft skills.
I could stay here suggesting tons of materials, but I'm sure that everyone is able to look for it and filter the ones that best fit your necessity at the right time.
That's it, hope you enjoyed! Let's keep evolving and building better and stronger teams (in all aspects) 🚀.