There are many who feel the excitement of being part of a software development team where you get to create something, solve problems and get to learn new technologies. Just like a coin has two sides, the experience and the excitement in software development can become a little too much and change to frustration just as easily. Some of the reasons for frustrations are beyond your control but some can be dealt with as you get more experienced in your domain. Here are some of the extremely frustrating aspects of software development in no particular order.
- Ambiguous requirements are the bane for a development team. It is difficult to produce software when there is little or no clarity on what has to be developed.
- Concentration on process but not on actual development is something that happens easily. Some teams when adopting a methodology like Agile or Lean make a common mistake to focus more on planning or meetings. This diverts their attention from using those meetings as tools to increase their productivity.
- Maintaining legacy code that’s poorly documented or of low standard is another aspect of software development that is disturbing. If you talk to any development team, you will find a couple of members who have worked with such code and the problems they faced.
- Performing too many manual steps from coding to creating a build. This could be because of the tool or the process used in the company but can be annoying anyway!
- Using third party API’s that has little or no documentation. So if you encounter a problem there is no one out there who can help you. Instead, you will find that there are others who are looking around for the same answers as well!
- Having work sitting in a queue, either waiting for the system to complete some processing or waiting for other dependencies to resolve can be quite frustrating. This is especially true when queries are run on huge databases or codebases made on certain technologies like Microsoft Dynamics AX etc. are being built.
- Proprietary/open source software upgrades that happen during development always cause nightmares. All the planning you did has to be redone to incorporate the hot fixes and/or upgrades.
- Believe it or not, some people swear by the CTRL+C and CTRL+V key combination when working. But when others work on the same code, they would usually find that the original context/code was not changed. If you are not careful to check on the code that you are going to work on, your tests will fail and so will the build.
- Working with individuals rather than the team can be extremely frustrating. Ever met a person who puts his or her own needs before the commitment made as a team? Such individuals can bring down the team morale and sometimes, even the team/individual productivity gets affected.
- A typically frustrating day in a developer’s day will include his/her monitor flashing at least 50- 100 errors on code compilation. This happens sometimes with some intrinsic or automatic software updates that took place or when another person worked on that piece of code without your knowledge.
The list mentioned above does not cover all frustrations that are normally experienced. It can be baffling at times to deal with tools, people and also the work culture of companies. But do not worry; this need not be the case every time. Try taking up the following points to see an improvement in such cases.
- Plan, plan and then plan some more! Try not to take up more work than what you can complete without compromising on the quality. The more work you take up, the more you may fluster and the poorer will be the quality of the developed product.
- Communicate!! This is one aspect where there should be no compromises. Your questions, conversations and mails must be clear and to the point. Explanations must be given when situations demand and again, it is imperative to be clear in expectations.
- Get clarity on requirements as much is required for you to start and complete work.
- As much as time permits, do your research on the upcoming tasks so that not many surprises come up.
- Find time to keep yourself updated on the latest technologies or new ways in which your domain works. This way you can troubleshoot any problems that the tools or the company processes throw up.
- As much as possible, be a trouble shooter and share your knowledge with your peers. This would prove that you are a team player and care for the team and in turn, your company.
Have a positive attitude and adapt the tips above to overcome your frustrations!