Software Productivity Tools: A must for product sustenance and success
Software product development companies in their early years are synonymous with a small team of core people who are all hands on and capable of churning out master pieces of code. Processes and tools are perceived as a hindrance, so they are either left unused or conveniently ignored. After the initial hiccups are overcome and a sufficient number of customers are acquired, the product team starts to expand in size. At this juncture the complexity of managing the code really starts to affect productivity.
The main reason tools and processes are ignored initially is due to the relatively heavy investment required in purchase and maintenance and not necessarily due to a lack of awareness of their benefits. With the growth of the company, what was once considered luxury now becomes necessity and time and money become essential to create the paraphernalia surrounding the product development landscape.
Many companies in the past have taken the route of setting up an internal team which worked on building tools that assisted in managing the production line. This is a cat and mouse game as the tools have to be kept abreast with the changes in the technology stack of the product. Such a team requires a set of highly skilled professionals who are constantly growing in their expertise in the technology to solve the complexities associated with the changes cropping up in the programming languages. The focus of such teams is to create, maintain and integrate a landscape of tools which bind together in all aspects from design to delivery. Sacrificing a core team of high skilled developers on a non core area is a challenge and also a costly exercise.
As always time has solved this problem with many options made available to companies such as ready to use tool sets for all functions from Planning to Release. Deciding on which productivity tools to use depends heavily on the technology being used for building the core product. The technology landscape is majorly divided across Java, .NET and Web Technologies (PHP, RoR etc..). Java and Web Technologies have many tools in common, however, with .NET the only route is Microsoft based tooling. There is good news though:a lot of mature and robust development tooling options are available now, unlike in the 90s and early 2000s.
For any company setting up a new release or a new product team, it is prudent to paint the tooling landscape along side the product landscape. Enabling these two to go hand in hand allows for productive and high performing software development teams. The software productivity tools should ease the processes related to Definition, Design, Development, Testing, Deployment and Manageability.
Some companies that are providing for tools across the landscape are:
Atlassian, IBM, 37 signals (mostly for collaboration) and Microsoft.