Agile without Refactoring is like Racing without Pit-stops May 11, 2011
Posted by vivekbohra in Uncategorized.add a comment
It is often said that: It’s easy to write code that the computer understands but an art, to write one that humans can
How many times have you reviewed software code and ended up wondering “Just how on earth does the complier understand this?” and wished you too could think like the compiler.
In today’s world, we find that, there is mad race out there amongst ISVs to hit the market first with their innovative ideas and products.
Life is a race! If you don’t run fast, someone else is bound to step on you and race ahead.
- Hence, it’s no surprise that ‘Agile Methodology’ has become the de facto standard for product development. There is no doubt that Agile has its own advantages:
Provides early visibility into the development activity
Ensures that features get implemented even before requirements can change
Continuous feedback ensures that there is no guesswork required
Product gets delivered in the least possible time (albeit with limited features)
Leads to a satisfied customer
But, there are a few inherent disadvantages of Agile:
- It does not emphasize on documentation
In the process to meet the sprint targets, the code often gets written only considering the current task at hand (without the holistic picture)
Here comes the savior: Refactoring. It is the answer to ensure code-quality is not sacrificed at the cost of speed. Consider the analogy of Formula-One race. The F1 team-manager has to determine the number of pit-stops that need to be taken during the race, by considering the fuel capacity of the car, tyre lifespan and most importantly the trade-off time lost in the pits versus time gained on the track through the benefits of pit-stops. Choosing the optimum pit strategy is critical for the success. As any unscheduled or extended stops in-between, such as, for a repair, can be very costly, as cars remaining on the track can rapidly gain distance on the stopped car.
It is a similar case with Agile development, as the code passes through multiple cycles through multiple developers eventually the code starts to smell, the Scrum Master has to decide when to take that Code-Refactoring stop in their SCRUM process. Before taking such decision, he needs to consider the most important trade-off of time lost in this cycle versus the time the team will gain due to the resulting improved code readability and maintainability while implementing new functionality with lesser defects.
Refactoring is the art of restructuring existing code by pursuing a disciplined approach, to alter its internal structure without modifying its intended external behavior, resulting in making the code-base more readable and maintainable.
Why Refactor?
Often code starts to smell, due to the following reasons:
- Developers are more concerned with getting their programs to work, then they are about future maintenance or future development
- New developers try to adjust their code-changes so that it does not impact any of the existing functionality
- Junior programmers implement code changes, without being aware of the original developer’s approach
Frequent such code changes lead to loss of original design, code duplication, and eventually results in an unmanageable code. You can get today’s work done today, but if it’s done in such a way that you can’t possibly get tomorrow’s work done tomorrow, that’s when you start to slow down and lose the race.
Refactoring code is essential to continue with the rapid development. Not refactoring the code may show quick progress initially, but it will soon slow the process down, as it requires increasingly longer time for developers to:
- Understand the application
- Implement enhancements
- Debug and fix code (without introducing new defects)
Therefore, it’s of utmost importance that a ‘refactoring’ cycle be planned intermittently to make the code fighting-fit again for the next SCRUM cycle.
Benefits provided by refactoring:
- Ensures adherence to OO-best practices / updated architecture
- Improved performance
- Increased code readability and maintainability
- Increased readability leads to the discovery of possible defects
- Help in smoother induction of new team members
So whenever you think of Refactoring, do think about the pit-stops, they are essential and an important step to ensure that you remain in the Race till the checkered flag!!
So guys, with this in mind, put the pedal to the metal… and make history in producing innovating software products!
Extend Enterprise Web Applications on to the Mobile May 3, 2011
Posted by Radhakrishnan R in Enterprise Next, Mobility.Tags: Mobility, Mobilize
add a comment
The rapid growth of smart phones and tablets along with bandwidth getting pervasive, cheaper and faster creates a perfect environment for Enterprise Mobility. Providing mobile computing power enhances the user productivity and brings improvement in the overall business operations. As employees spend more time away from their desks, the proliferation of smart phones allows them to stay connected and be productive.
Providing mobile solutions is now a key requirement in an organization’s ecosystem and enterprises have this in their top priority. Organizations realize the potential benefits that Enterprise Mobility can offer in the form of:
- Increase in efficiency
- Information anywhere
- Faster decision making
- Employee satisfaction
- Better ROI
- Effective resource management
Taking the ERP plunge? Be prepared to learn, unlearn and relearn April 21, 2011
Posted by vikas.khandekar in Enterprise Next.1 comment so far
BSIL had just won an order for an ERP implementation from a medium to large scale company. The implementation spanned across multiple departments and locations. Our Vice President was providing interesting insights into the organization as we were preparing ourselves for the implementation. He discussed the challenges that we could face, especially due to the varying degree of IT savvy users across locations and departments. He also apprised us about the strong undercurrents of inter-office rivalry, competition and sometimes downright non-ooperation. It all sounded like a heady mixture of a large organization going through an upheaval of systems change, calling for high degree of maturity and foresight to implement an ERP. (more…)
ESCape to Empower December 13, 2010
Posted by Ramashish Joshi in Enterprise Next.add a comment
The ESC platform, targeted towards small and medium enterprises in India, is built on BSI’s Visibility, Control and Optimize (VCO) vision for the mid-market space. The platform has elements like ‘Open Minds’ that will facilitate ideation, innovation and employee recognition across the SME enterprise in a highly organized and structured manner helping them to adopt best practices of their larger enterprise counterparts. Better information sharing will reduce duplication and encourage creation of information assets and their reusability, which will help medium sized enterprises gear up to scale up faster to compete in the current marketplace.
Portal built using this platform inherently carries strengths of fast paced and structure communication by way of Wikis, Forums and Workflows. It also utilizes the power of advanced search capabilities to easily locate any and every artifact including PDF, Word and Excel files in one click. In fact, Blue Star has also enabled the platform for integration with external systems like Oracle Applications and MS Office applications such as Word and Excel. Shared Calendars, Online meetings and effective workflows would enable geographically spread-out enterprises to work in a virtual office environment.
In the fast moving world of today, platform such as this is the right choice for augmenting cohesive collaborative efforts and talent within the organization. This also targets an in-built performance management system for the employees which can be utilized by the management for transparent and effective motivation.
The new platform helps build an “outward-in” culture by moving out closer to the external stake-holders (including customers) and enabling the portal sites based upon the platform, to easily customize the in-build applications to present the right internal culture within the organization. The “outward” vision of this platform reflects the out-going approach to reach customers thereby gaining more control and visibility over the internal business processes.
Most enterprises use the Intranet just as a portal to fill timesheets, post notices, news, events and other updates. However, with the advent of social IT, Intranet can become an effective platform that empowers employees by enabling them to innovate, build and share knowledge assets from their initial stages and eventually co-create offerings in collaboration with employees and even customers and prospects. The ESC platform will also empower enterprises to improve productivity of even their non-IT, non-core functions by helping them to participate in the overall co-creation and innovation process.
BSI has already implemented the ESC platform within the organization and it is enabling its 1000 odd employees to collaborate, innovate and co-create in a dynamic environment.
Migrating Traditional n-tier Web Application Architecture to Amazon AWS November 23, 2010
Posted by Tejas Bavishi in Distributed Engineering, Enterprise Next, Everything Under The Cloud, Open Source.3 comments
Current Scenario-
The current n-tier web application architecture has evolved over the past several years to meet today’s stringent Non-Functional Requirements (NFRs) like scalability, availability, security, etc. The traditional web hosting architecture is built around a common three-tier web application model that separates the architecture into presentation, application and persistence layers. The architecture is designed to scale out by adding additional hosts at the presentation, persistence or application layers and has built-in performance, failover and availability features. The n-tier web applications have to be deployed on cluster of hardware / software servers to meet the occasional peak loads in the internet user traffic. What this means is that these additional infrastructure is paid for when the vast majority of it is not used consistently. This adds to the low ROI and high TCO for today’s CIOs.