I have worked with multiple IT companies as their Business Analyst. My job entails bridging the gap between the client and the development team by understanding the former’s requirements and converting those requirements into development instructions for the latter. This entire process of managing the development side to match the result with the client’s expectations has helped me study the problems faced by the software developer.
As someone observing the complete procedure from the outside, I can say that a developer’s job is not easy. With deadlines and complicated codes on their mind, software developers often commit amateurish mistakes.
And for that reason, I came up with this blog highlighting nine principles that every software developer should keep in mind.
- IT projects are dynamic and evolving requirements are a usual part of the process. DO NOT blame people for bugs and outages; improve processes, and extract lessons instead. Playing the blame game does not provide any solution. On the other hand, it lowers team morale and impacts the work culture. Adapt to the changing requirements, take the setback as a lesson learned, and move ahead.
- Communicate clearly and unambiguously; confusion from miscommunication kills software projects. If and ever you are unable to understand the requirement document, please reach out to the BA or the PM to iron-out the confusion. It is better to ask ten times than to deliver the wrong project. Gaps in communication are the biggest reason for project failure.
- Always knock down big projects into small and workable units. You should favor small pull requests over big ones; they are less error-prone and easy to review. In this way, the project will not feel intimidating and will be easy to deploy.
- Coding is crucial, but not at the cost of delay in project delivery. You should know when to stop piling on tech debt in a codebase; tech debt can be used as a currency for variety, but too much of it leads to paralysis. The aim is to build a project that matches the client’s requirement and deliver within the pre-defined time frame.
- Many projects share common ground like login page, registration page, checkout page, etc. The question is – why repeat processes when you can update and use already written codes and save a hell of a time. When possible and sensible, automate; it’ll pay off in spades in the long run.
- Do not make product decisions because of engineering reasons (with some exceptions); the end goal is the product—not the code. It is not feasible to delay the project because of factors like a new language, technology, etc. Do not introduce changes until the innovation is impacting the product’s sustainability. The client expects a working software, not an engineering marvel.
- I’ve met many software developers who are way too possessive about their codes. This sense of ownership is good until it starts hampering your judgment. Never disregard more efficient and time-saving ways to code, even when it means changing or replacing the original code. Do not get too attached to the code you write; it’ll likely have to be altered or even deleted in the future.
- Unless absolutely necessary, don’t reinvent the wheel; most libraries and tools are popular for a reason. Make use of available technology. There are so many coding resources available online that can bring automation and save you a lot of time.
- Imagine joining a new organization as a developer and working on codes written by the previous developer with no explanations. It is confusing and irritating, right! Every software should document their codes and put statements explaining what result does a code delivers. It will create a code-rich repository for future reference and help future software developers. Document your code; future maintainers of the codebase, including yourself, will thank you.
I hope these nine principles will guide you throughout your journey as a software developer. I will not say that these principles are etched in stone. Like the ever-changing world of software development, these principles will also evolve.
If you’d like to add/share some of your own software development experiences, then reach out to me here. Have a great day ahead. Cheers!