As software developers, most of us implicitly assume gaining strong technical skills might make us successful. Many of us assume being good at cutting edge technologies, mastering keyboard shortcuts, being able to work on front-end, back-end and infrastructure etc etc will make us successful in our careers.
Yes, the above mentioned skills definitely help, but just being good at tech skills might not make us successful. There is more to it.
Let me share you the story of my friend who restarted her career after a break of 3 years. I would say she really did amazing, and I would like to share her story.
She started her career as a software developer few years ago, primarily worked on a commercial product. While using that product she never had to use any of typical programming tools and technologies like HTML, JS, CSS, Git, Java etc. She is a software engineer who likes to work from 9 to 5 and doesn’t like to spend rest of the time on computers at all. She had to take a break from career for some personal reasons, and meanwhile the product she used to work on went out of business too. After 3 years she thought of restarting her career and want to pick a stream which has more job opportunities.
She asked me to help her to figure out which technologies to learn and if possible to teach her those technologies. I suggested her to learn Java, SpringBoot, ReactJS because there are more job opportunities for these technologies.
I started teaching her Core Java, HTML, JS, CSS. She was able to pick up these fine. Then I started teaching her Maven, Git, jQuery, NPM etc and parallelly giving a 30,000 feat overview on Java frameworks like Servlets, Tomcat, Hibernate, Spring. She got overwhelmed by the number of technologies, tools required to build a web application.
That is the time I realized that I didn’t get overwhelmed by the number of technologies because I learned all those things over the years. But, nowadays if somebody wants to get into software development it’s really hard due to the number of tools and technologies to be familiar with.
After 4 months of daily practice she started looking for a job and luckily she got a job opportunity as well. She started working on a project in which they used Java, Groovy, SpringBoot, AngularJS 1.x, ReactJS, Vagrant, Git, Maven, Mockito, Postgresql, Docker just to name a few.
Just imagine how intimidating it would be for someone who is new to software development to pick up these many technologies!! In the beginning she couldn’t even understand what they are talking about when the team was talking about Vagrant, Git Cherrypick, docker volumes etc.
Fast forward 6 months, her team lead gave feedback to her that:
If a task is assigned to her he can forget about it and hope it’s done. If she is in the call with client he(team lead) doesn’t pay much attention because he is sure she will get all the required details to do the work". And, most importantly client side folks prefer talking to her because she grasps things so fast and so well.
If this is not an amazing thing what can be!!!
So, how this magical transformation happened??!!
Let us take a step back and think about what management(Manager, team lead etc) expects from a Developer?
In big enterprise organizations, developers don’t work on shiny new things every day. The challenge is not in learning cutting edge technologies, or mastering all front-end, back-end and DevOps tools. The challenge is in getting things done with the limited available resources in given short time. Many times we might not have enough documentation, the SME’s might not be available all the times. We might need to follow up with SMEs, business folks, talk to other teams in order to get the information required to do our job.
Based on my observation, following qualities made her a good software developer.
Learn on need basis: As and when she come across new things (at day to day work, team discussion etc) she noted them down and came back to me to learn about them.
Don’t hesitate to ask questions: When she is in calls with team or clients, she won’t hesitate to ask for more details, repeat something if she couldn’t understand what they said until she is clear about the requirement.
Don’t compromise on timelines: Good luck trying to convince her for less timelines. She is very very careful while giving estimates. If she is not sure she can complete the task in given timelines then she openly say it without any hesitation.
Though occasionally her team lead got pissed off at her about not accepting for less timelines, but later slowly he realized that those tasks actually needs more time and appreciated for being strict about timelines.
Get things done: She is a task master. Once a task is assigned to her she will make sure that it is moved to DONE lane. She follows up with the people, gather more details, ask lot of questions, seek other’s help and finally get it done.
Who wouldn’t like to have such team members??!!!
I can’t express how happy I am to see her growing in her career, and I wish her all the best :-)
Though strong technical skills definitely help, to become a successful software developer you no need to be someone who is passionate about technologies, works on pet projects off the hours, master the IDE shortcuts. Overall, what I am trying to say is “Persistence is the key. Getting things done mentality is what management looks for in their team members”.