Letzgro Refactors Codebase for Convetit

Convetit.com is a web based application for creating think tanks to make decisions, develop web content, monetize insights, engage stakeholders, make impact.

Managing Technical Debt in Early Stage Startups

Case Study

[callout_box]

logo

Client:
Convetit
Location:                                                                                                                         Palo Alto, California
Technology:
PHP, MySQL, symfony 2, twitter bootstrap, responsive design, github.
Keywords:
B2B, SaaS, online collaboration, consultancy

[/callout_box]

 

thomasomalley[testimonial name=”Thomas O’Malley” position=”Founder and CEO” company=”onvetit”] I identified Letzgro being strong development talent shop at first glance, and their recommendations and guidance on each stage of the development only proved it.

 

[/testimonial]

 

 

 [testimonial name=”Ihor Pidruchny” position=”CEO” company=”Letzgro”]  find Thomas a uniquely talented business development ihorpidruchnyprofessional. We obtained strong belief in his project and Tom’s ability to run it to success. It created a good base for tight mutually supportive business relations

 

[/testimonial]

 Audit

andriysyniuk[testimonial name=”Adrew Syniuk” position=”Senior Software Developer” company=”Letzgro”] One of the challenges that we encountered in the project is technical debt. It is the issue of every project which is being developed under pressure of deadlines, and we had to solve that problem. I have run through the codebase and provided my strong feedback that though it is totally possible to continue on the current version, freezing the project and refac-toring it in accordance to the Symfony 2 concept, as well as OOP and MVC in general, would yield in better ROI, velocity in new features development, and project maintenance [/testimonial]

[callout_box]

Technical Debt

Wikipedia provides this definition of Technical Debt:

“Technical debt (also known as design debt or code debt) is a neologistic meta-phor referring to the eventual consequences of poor software architecture and software development within a codebase. The debt can be thought of as work that needs to be done before a particular job can be considered complete. If the debt is not repaid, then it will keep on accumulating interest, making it hard to implement changes later on. Unaddressed technical debt increases software entropy.”

What Causes Technical Debt

Usually reasons for technical debt include may be one of the following

  • Wrong architecture of the product, caused either by poor technical decision making or misalignment between product management and development departments;
  • Frequent redevelopment within constains of deadlines; frequently chang-ing requirements make developers change separate components which are now interconnected and were built with a thought of initial require-ments;

It needs to be mentioned that technical debt is practically inevitable aspect in software development process. It is the issue of every project which is being developed under pressure deadlines, and we had to solve that problem

Managing Technical Debt

Letzgro proposed approach to manage the accumulated technical debt with the following suggestions

  • Finalize the targeted scope of features on current code base, given the businessside goals that could not be postponed:
  • Initiate the new version which based on totally new architecture which would inherit some components and UI the current solution;
  • Freeze development of new features on old codebase once business wise critical list of features is implemented.

[/callout_box]

 

Supporting Refactoring Period

Couple of things happen when you have decided to run the code refactor:

1.No noticeable progress.

You will not produce new features during the refactor period. Thus it is impor-tant to ensure understanding from other departments why suddenly developer’s work is not reflecting in visual results.

2. Additional resources allocated.

Being in production and servicing your customers, you will want to finish the refactoring as soon as possible; thus consider allocating a bigger team onto it; apparently it will require additional budget. Be sure to explain your business department that this is an investment that shall improve velocity of further development and reduce total cost of ownership

 

kristinashcherba[testimonial name=”Kristina Scherba” position=”Project Manager” company=”Letzgro”] I find it tricky to explain the technical debt to business by just showing the code. Couple of  things that would really help getting understanding are (1) using metaphores, like with a detective story. What happens when you change your screenplay is that some parts may not work well together. When you finally realize that the idea has got too far from ideal one, it is much easier to rewrite the whole story instead of figuring out how we can now make Mary a victim and not a killer. (2) Gathering statistics on time taken for development and assumed time it would take to develop the same feature based on cleaner code might help. Try showing financial projections to your team [/testimonial]

 

Collaboration Process

As usual, these tools are part of the process:

  • Daily skype calls;
  • Task and time tracking through JIRA;
  • Github for code repository and version control; daily commits; Emailing list with every team member included on the list;
  • Friendship between business and development departments.

[testimonial name=”Ihor Pidruchny” position=”CEO” company=”Letzgro”] At Letzgro, we want our clients and partners to have the ihorpidruchnyfeeling as if we are in the next room, irregardless of distance. It is achievable through extensive usage of project management and communication software, as well as scheduled calls with all the team on them. We nurture feeling of ownership within all of our specialists. Only talent, organized with discipline and combined with devotion can bring true high result

[/testimonial]

 

Technologies

We use:

PHP, MySQL, symfony 2, twitter bootstrap, responsive design, github, Bower, Doctrine, LinkedinApi, Composer, jQuery, hird-party Bundles, other cloud services, and cloud hosting. An important aspect of the project development is Scrum.

Scrum is an iterative and incre-mental agile software develop-ment framework for managing software projects and product or application development.

 

ihorpidruchny[testimonial name=”Thomas O’Malley” position=”Founder and CEO” company=”Convetit”] Working with Letzgro is a pleasure, I am impressed by their professionalism. The work they do is always top notch. Project managers ensure continuous communication with develop-ers, and their transparency leaves no place for doubt when it comes to the excellence of the work on the project.

[/testimonial]