Mrinmoy Das
7 min readApr 15, 2020

--

The path to an Awesome Developer!

Hi everyone,

I am working as an Engineering Lead and an Architect in an organisation — BDI Plus, a company based out of New York and Bengaluru (soon to be expanded further). I joined the company as a Senior Front-end Developer, but over the years I have moved around across multiple technologies expanding both from front-end, back-end and even a variety of databases. I am a part of the Dev-Sec-Ops team too. My responsibilities working with the team includes creating and deploying application that are production ready, I work on multiple public cloud providers and take part in providing cost-optimised solutions to a system, both existing and new.

My growth has been exponential in this organisation because of the support of my peers and seniors. They believed in me, and kept on pushing me into tasks which were beyond my comfort zone. While leading a team, I realised that there are a very points that every developer needs to keep in their mind while creating any application from scratch. Thought of jotting them down here so that it not only helps them, but also me in return.

Here it goes —

  1. Documenting is the key — Your mind is a place of many thoughts and flows. There might be times when you might be thinking about a certain flow of code and later forget about it. For this very reason, it takes an ample amount of time to study someone else’s logic and carry out any changes to it. The best way to tackle this problem is documenting your thought process when you’re creating the logic. I found, that mentioning a single line of comment to the starting of a function often makes it easy to understand the purpose of the written function. Again, if you’re looping through a dataset, mention why that loop was required and what are you expecting off that result. Trust me, when your code base becomes huge, it will be really easy to understand what your thought process was during that phase.
  2. Indented code is a bliss to work with — Imagine you’re sitting at a work desk that is highly unorganised. You do not know where your pen is, where the notepad is, the screen of your computer is very dusty. How do you feel working in that environment? The same thing happens, when you do not have your code-base properly indented. As you might be aware, programming language uses brackets (of course, that you’re not a Python developer) to manage the scope of a functional execution and that of a variable. When you’ve multiple loops and conditions within a single function, it becomes very difficult to understand which function, loop of even an if-else statement ends where. Have your code properly indented for better understanding and readability.
  3. Name your variables correct — Declare your variables in a way for which it was created for. A variable named ‘x’ makes a lot less sense when compared to a variable named ‘resultOfGetNameAPI’. Please do notice how I have written the variable name as, in camel-case. Many developers use ‘_’ or ‘-’ to separate out the words from a variable. If you’re a Python developer, hyphens might not work !
  4. Modularity makes you tackle issues easily — I found the best way to manage a module which is comparatively large is to divide the program into smaller modules. For instance, you have a function that converts a string into its base64 equivalent across multiple parts of your code-base. Instead of writing the same function over and over, one can simply write a common function to be imported across all the modules, keeping in mind the relative path to that file. This not only helps in easy management of code but also helps in a sense of encapsulation. You can encapsulate the entire function of conversation to base64 as convertToBase64.
  5. Rewriting code is a sin — This point is a continuation to the previous point. If you rewrite a code in every module, the number of lines increase and it becomes exponentially difficult to manage specially once your code-base reaches a point of increasing complexity. The solution? Having a modular code-base which not only makes the code easy to read but also helps a developer to pin point the file/function he needs to change when an issue occurs.
  6. Think from an user perspective — This is what I have noticed working over the years. Developers seem to be focused completely on the requirements/tasks that are assigned to them and often ignore how it will work when it is deployed for a real user, who is unknown to the complexity of the application he is using. He believes simply how easily he can do the task. One must think from the perspective which makes the user experience better even if it requires diverging from the original requirement. Have the courage to speak in a discussion about the idea you have in your mind !
  7. Premature optimisation is the root of all evil — If a developer wants to write a piece of code which is optimised from the very first day, he will realise within a few weeks that he has progressed nowhere. With time, a developer understands the business requirement of a module and realises that, his initial thought process needs to change. He needs to quickly adapt to the new changes and make the module work, specially when his code is deployed for production usage. Thinking about optimisation at an initial stage might cause a delay in the deliverables. However, optimisation is a part of programming to comply with the system that it is going to deployed in and should not be ignored. The order the developer should follow is — writing the base code > optimising the code for deployment. For example, a user might not use an application that takes 3 minutes to load!
  8. Understanding the need of a system — A developer often ignores how their code is going to work inside a certain environment. Even if it works on their local machine, where their code-base might be the only service running, in a different environment, the same code needs to run with hundreds of other smaller pieces of codes, databases and even the scheduled tasks of the system. Specially when you’re working with a micro-service architecture, your code must adapt to the limited amount of RAM and CPU that it will assigned with. A much understanding of the system is essential for every developer.
  9. Configuration files goes to the top — The best way to manage your code? Keep all your settings, including color, font, endpoints that your service needs to connect with, inside a single file. No matter what you’re developing, front-end, back-end, or even a simple CI/CD, keeping the properties of the service in a single place is a mandatory task. This not only helps the other team members to understand the flow, but also plays a role when you want to implement a complex task like — implementing dark mode for your application !
  10. You’re a creator; not a typist — The worst decision that you can make while tackling an issue is to start coding as soon as you hear about a problem. Listen, calm your head and think of a path that you’ll take to solve the issue. And no matter the diversions you’ll face following that path, work on that path to adapt to the changes instead of changing the flow altogether. A structure, a plan often makes things a lot easier.
  11. Frustration will lead you nowhere — I will mention something from my experience. I spent 2 sleepless nights figuring out why my call to an external domain was being rejected, only to realise an extra space at the end of the token I was using to make the call! Let me tell you something quite frankly, “It will never work if you get frustrated!”. You’re a creator, a developer, an orchestrator of a complex problem that needs to be solved and being irritated or even frustrated is the worst thing you can do. Keep a steady head, think when you face some issue and read about it online about how to solve these issues. Solving a few difficult (next to impossible) tasks will give you the confidence and the positivity that no issue is big enough to be solved. You just need to think correctly!

These points do not follow any chronology. The points mentioned are things that I faced working over the years and leading a team of developers to completion of projects. The foremost thing among these, is to have a lead, a manager who allows you to expand beyond your current grasp of technology and understanding systems. If you are already working ‘with’ someone having this trait, feel yourself lucky. Surround yourself with people, who pushes you forward.

To end, have pride being a developer, be passionate in every line you code. You’re an artist that uses technology as a medium to create something from scratch. When you code, have the feeling of a winner within you. You’re doing something most of people cannot even understand. You’re unique in your own way! When I sit in from of a computer, coding for hours, I feel that I am ‘God’ — I can make or break a system in any way I feel like. I proudly call myself a technician, a developer and a problem solver, have the same pride within YOU!

Feel free to drop in any more points and a few claps if you like the content !

--

--