The start of any significant journey in our lives is always riddled with lot of buzz and questions that goes on in our head — How things will turn out to be? How I am going to handle situations? How will the environment be? Some of us also go through anxiety and sleepless nights. But, when we get past this initial phase, we always wish that, had we knew better — it would have helped sail through easily.
I started my career as a software developer at Nineleaps, one of the top 10 startups in India. In the past six months working here, I learnt six critical lessons that I thought of sharing with my fellow readers, which might help you overcome initial apprehensions, stumbling blocks and smoothly navigate your career landscape.
# Lesson 1: Don’t be afraid to look stupid in-front of other people. Ask questions.
I am sure you would have come across this situation in your life many times, especially when you are just starting your career. There are times we may not understand various aspects of work -it could be related to the way the team operates or a certain strategy they follow or simply some code setup issues. While we may have questions, we tend to shy away from asking our team mates because who wants to look foolish in-front of coworkers right? Or for the fear of being perceived as someone who does not even know or understand basic concepts. Trust me, get rid of this apprehension, because there is always a first time and therefore it is perfect to ask questions. In fact, it allows you to gain better insight and accelerates your learning process. And most importantly, it is any day better to not know and ask at initial stages than making mistakes and silly error due to lack of understanding at a later stage.
#Lesson 2: There are no ‘know-it-all’ programmers.
I hear something quite often from a lot of my friends in the industry — ‘That guy in my office knows everything, give him any kind of problem, any tech stack and he will do it no time!’ Sure, there are good programmers, who have solid grasp on the subject matter and deep insights into their domain — but such in-depth knowledge is built over years of experience, problem solving, lots of pulling out hair, debugging and teamwork. So, to reach that level you need to code a lot, solve problems from different types of domains and continuously read and update yourself about the changing technology space. Beside knowledge and domain expertise, teamwork also plays significant role in solving most complex issues and driving innovation. Moreover there could be more than one approach to solve a problem and you need to decide which is best for the problem at hand. Even Linus Torvalds was not alone in developing Linux OS — there was Brian Kernighan, Dennis Ritchie, Richard Stallman whose work inspired to what became Linux -that too after a large community of Open-source jumped in and made it what it is today!
#Lesson 3: “Given enough eyeballs, all bugs are shallow.”
Eric Raymond dubbed this quote as Linus Law -and it is a self-evident statement. Unfortunately, many people just don’t know what to look for. Debugging is as important as coding, it is two sides of the same coin. So, if you keep your code to yourself which no one else has access to, you may end up with a bad code or a bug that you may not be aware of. Instead, if you work and discuss with more people, your code can improve tremendously. Everyone has a specialization in some or the other domain and their input can definitely help improve your code and perform better. In fact, many coding environments now have peer reviews, although they only look at code quality and best practices most of the times. Instead, I would suggest that the scope of peer reviews should also include suggesting a better solution or a different approach with room for optimization.
Successful software is an inherently collaborative activity.
#Lesson 4: Learn to take feedback in a positive way. It is not criticism.
There is a difference between code that works and code that is good and it works. Now I understand that good code is a vague generalization, but here I am mostly pointing towards efficient and readable code. Coding efficiently is a learned skill which comes with experience and exposure to complex scenarios. So, don’t get yourself all riled up and upset on those not so good peer reviews/feedback. Take these positively and try to improve and increase your proficiency and widen your approach perspective. Feedback actually provides an insight into your peers’ or mentor’s experience and enhances your knowledge across various aspects of coding if done right. I was really lucky to get a great mentor who helped me with overall process of becoming a good developer and I quote him:
“Even if you are not applying it(concepts), or can’t implement it due to project limitations- you should be aware of it!”
#Lesson 5: Failure is also a way of learning.
Just like we read, watch or listen to learn something — failure also teaches you a lesson. Trying and failing is a way of learning. Don’t let setbacks hold you down ever. Whenever you face a failure, don’t freak out — instead document what happened, what you learned from it, what can you do next time to remedy the situation/error and lastly what steps will you take proactively to not let it happen again. So, next time your code or your decision ends up in a failure for you or your team/project- accept it, take responsibility and move on to resolving it.
Remember that if you fail fast — you learn fast!
#Lesson 6: Grow with your team, enjoy with your team — Make it a fun place to work.
Last but not the least — enjoy the work and time with your fellow team mates. We spend major part of our day at work so it is only recommended that we get comfortable and try and make it our second home. Interact, engage, get to know each other, help and grow together. Today, we are in are world where people refrain from talking to the next person but be talking to other person on phone who is miles away. Connect and collaborate with your co-workers in person. Make office spaces interesting and as lively as possible and see the tremendous positive impact it can have on team as well as individual performance.
“If everyone is moving forward together, then success takes care of itself.”— Henry Ford