Development strategies, standards and techniques have changed at a brisk pace and are no way near to what they were a decade ago when I began my career as a software programmer. The number of methodologies and rulebooks for defining development processes are far less in number compared to the number of existing programming languages and development platforms.
Streamlining the development strategy has become the need of the hour for IT organizations as the technical challenges, requirements and ever changing technologies have made software development process more complex.
My experience in software development over the last 10 years has given me an opportunity to have a close look at the highs and lows of development process monitoring tools and the takeaways of this opportunity have come in handy while I plan to instill a new development idea.
As a Technical Manager at Contus, a Chennai (India) based web, mobile and cloud solutions company, I’ve initiated reforms in the development practices by inducing management tools like Git, JIRA, to name a few.
The need for streamlining development process:
Way back in 2008 when Contus was a startup, rapidly growing in full throttle with projects pouring in, the developers were the lot who faced troubles. Meeting the project deadlines became a rarity and the rush towards project completion posed a series of challenges in the quality of our deliverables. Creating a clear, simple and easy-to-use development process became the need of the hour. This was the time when we started considering project management and development tools like GIT and JIRA.
Using JIRA we were able to allocate tasks in a planned manner.Resources were proactively allocated to tasks which demanded additional effort. On the whole we were able to make the best use of the available resources to smartly get the work done within specified timelines.
GIT served as a resource that hosts various levels of a project. This helped us in keeping track of various developmental phases of a project, served as a checkpoint for ensuring quality of work at each level and as a valuable future reference for developers. Moreover, GIT also helped in delivering minor change requests from client side as and when they are made.
Using GIT we were able to create an integrated project management environment in which any number of technical brains could work together at various levels of a project in a sequential flow without lapse in communication.
We were able to fragment the project into different tasks and deploy developers accordingly. The development phase was distributed into various branches with developers, quality analysts and project leads being allotted their respective work.
Post the coding stage, it was quite easier for us to move it to the next phase, the quality analysis. Post the testing the part, the final outcomes were released to the client’s server environment. Using hotfix, all the minor changes and queries from the client side were addressed then and there.
This transition of the development process which ate up a lot of time while using our primitive methods, turned into a breeze using GIT. The key achievement we would say is the successful establishment of a sturdy multi-developer environment which took off a significant amount of additional load off every programmer’s shoulders.
For client request handling, we had PCR into play which played a crucial role in getting the required changes done in the coding at the developmental stages. This saved us a lot of time and helped in achieving complete customer satisfaction.
Our next major concern was to slice off the additional responsibilities of our developers by providing a better alternative to perform the JIRA and GIT updating tasks. Here is where Source Tree, a UI provider for GIT came into play. Using Source Tree’s interface, developers felt it easier managing, sharing, and reverting their updates on GIT.
The next development was made possible by implementing Eclipse. This tool which provided a real-time sync for developers with GIT and JIRA, in the development environment, helped in slicing off lot more effort and time.
These management and hosting tools were instrumental in developing a multi-developer environment in which more than one developer could easily interact, communicate, share and develop projects quite easily without clutters.
However, the course of implementation did have a few rough patches as adopting a new process in development was a tough task for many of our technical brains as it was disrupting the existing work flow. So the implementation needed proper planning and strategy.
On a general note, I’d like to share our own experience in successfully introducing an alien practice into the development stream and turning it as an integral part of our regular practice.
While considering the odds we would face while introducing a technical reform, the approach of our familiar team players towards it was the first hiccup we faced. While the new recruits considered it as a part of adapting themselves to a new environment, our seasoned campaigners had a mindset to dodge it away. It is this challenge which we had to overcome in the initial stage.
Our first and foremost step was to perform an extensive analysis on various factors that govern our existing development culture. This analysis gave us a clear idea on the areas which required improvements and helped in choosing the right development strategy, tool and management services that best suits the products we build.
Defining the process
Before defining the process we created a rule book for it. According to it we decided that the new process we define should be adaptable towards projects of different sizes and easily implementable.
In order to define such a successful process we started identifying the various phases of our existing development process and the tasks associated with it. We had a keen focus on picking out the internal transitions of the development process as these links collectively contribute to the sequential flow of the software on the whole.
Feedback on real-time complexities
A plan that looks perfect on paper might churn out issues when taken into practical implementation. Programmers are those who do the real time work and face challenging scenarios during the course of software development and so it becomes a necessity to consider their inputs.
We had a detailed discussion with our team leads and project leads to jot down their feedback. We sketched our plans based on these inputs to make sure their every single query is addressed. Such an approach helped us in ensuring that there aren’t any possibilities for issues to arise during the
course of development by implementing the newly defined process.
Once the implementation is done, the key factor which determines its success is the monitoring process. We created a hierarchical flow of monitoring process in which each lead would scrutinize the technicians they handle and made sure that this practice was followed from the top to base level of the chain.
We conducted daily meetings with our team players to know the real-time feedbacks on what’s happening and their regularity in making use of the new development techniques. We had this practice into play for a certain time period post which it became a part of our development culture. Though the initial stages consumed additional time the accuracy of the results made us feel that it was worth doing so.