Development Workflow

Development Workflow Tools

In this post we will take a look at the minimal set of tools we found that were absolutely essential in order to implement a proper software development workflow. This post will look at these tools mainly from the perspective of a PHP programmer. Some suggestions for other languages will be put forward as well. But the same or equivalent tools should be available for almost any other language you may be using. We make extensive use of open source tools with a sprinkling of proprietary or hosted solutions. If you are running a small to medium level development shop and are missing any of these tools or their equivalents, we suggest that you start using them soon as the benefits are too great to ignore. Most of these tools are useful even for single-developer setups.

Version Control System

If you are not currently using a version control system, then stop reading this and go and implement a proper version control within your development workflow right now! Even today, I see development shops using the copy and paste method of managing code. This is the worst possible way to manage code just above not managing your code at all! The reasons given invariably are that too much effort and training is needed to set it up and get employees to follow it. We found that once the advantages of a version control system are explained, the employees are only too happy to start using it. The advantages of using a version control in your development workflow cannot be over-stated.

There are many version control systems to choose from that includes open source technologies such as Git, Subversion and Mercurial. For us, Git stands out as the best for our purposes. It is distributed in nature and there is great support and activity around the project. Plus, it is used to manage one of the largest and complicated software projects: the linux kernel. Github and Bitbucket provide great code hosting solutions for git so that you can easily share code among a team. In addition, we make use of the post commit hooks coupled with Git’s amazing branching mechanism to do one step code deployment to production and testing servers. This helps us to completely eliminate unnecessary and hard to discover deployment related errors.

Version Control

Frameworks

Rather than re-invent the wheel, many developers use frameworks to build applications rapidly and efficiently. Frameworks abstract away many of the low-level concerns. They provide helpful, easy-to-use interfaces to complete common tasks improving your development workflow in the process. Frameworks are not only available for server side coding, but is now very relevant even in client-side development efforts.

Frameworks are available in most languages. PHP has a wide variety of frameworks to choose from, of which some of the popular ones are Symfony, Zend, Laravel and Yii. Ruby has a de-facto implementation of a framework for web applications: rails. Java has Spring, Grails, Struts, etc. Python has Django, Zope2, Web2Py, etc. When it comes to client-side frameworks, CSS has many including Bootstrap and foundation. Javascript has many frameworks including jQuery, Angular, backbone, etc. depending on the kind of application you are developing.

Frameworks should not be considered as a solution to all your development problems. Instead, frameworks should be considered as a starting point for standardizing your coding practices and making best use of your coding time to actually solve your client’s problems. Most frameworks provide tools and extensions to eliminate redundant and oft-repeated tasks. Contrary to popular belief, a good framework does not (should not) get in your way. With a deep enough understanding of it’s working, you should be able to do anything with it that you will also be able to do with the underlying core language.

Issue Tracker

The main benefit of a issue-tracking system is to provide a clear centralized overview of development requests (including both bugs and improvements), and their status. Issue tracking is the single most important way to improve the quality of your software. Without keeping track of your bugs, there would be no way to maintain control of what each person on your team works on, fixes and finds problems with. Bugzilla, JIRA, Mantis, Redmine, etc. are just some of the more popular open source issue trackers available today.

JIRA Issue Tracker

An issue tracker should be given due importance in your development workflow as it not only tracks bugs but your features and with some setup, it can even track time spent on each issue. Nowadays, for small to medium projects, Github and bitbucket can also be seen to be used as an issue tracker. Such a setup has the added advantage of reducing the total number of tools in your development workflow if you are using either of those for your code hosting.

Dependency Management

Package and dependency management is also an area that we have seen to be neglected often within a development workflow. For smaller projects it is not a huge problem. But as the size of a project increases and the number of libraries that the project depends on increases, it becomes harder to manage all these packages across team members. It also may quickly descend into what veteran coders like to call “Dependency Hell”.

There are dependency management solutions available for almost any programming language. Depending on the specific solution you use, you just have to specify the package name and the version number and the package will be downloaded and configured for auto-loading on each developer / production system. Some of the more popular ones are listed below against the specific language it was developed for:

Automated Testing

If quality of your end product is of concern to you, then you just have to have a proper automated testing system in place. There are at least two types of testing you should ideally target: unit testing and functional testing. Unit testing tests an individual unit, such as a method (function) in a class, with all dependencies mocked up. Functional testing tests a slice of functionality in a system. You can think of functional testing as a robot that will simulate a user interacting with your application at your command and reporting any errors it comes across. This will test many methods and may interact with dependencies like Databases or Web Services. In addition to making use of testing frameworks in your development workflow, you also have to make sure that it is possible to run the entire test suite in one step.

You can pick from a wide variety of solutions for automated testing. For PHP, the de facto unit testing framework is PHPUnit and two of the most popular functional testing tools are Selenium and Codeception.

Are there any tools that we missed out on? Do you feel that there is some other tool out there that does a better job than those we have listed here? Please do let us know below…

Proper Development Workflow Tools

3 thoughts on “Proper Development Workflow Tools

  • December 22, 2014 at 12:25 pm
    Permalink

    Compared to other web languages that require a
    bit of study, PHP does not require one to spend a lot of time researching a
    manual. Thanks to the syntax being logical and command functions describing
    exactly what they do, one can easily get right to the part of creating and
    optimizing the application.If you have programming experience in both Perl and
    C, then learning PHP will be quite easy, as its syntax is based on these
    languages.Since PHP is an open source web language(http://cedarsoftware.co.uk ), it’s completely free of
    cost.Depending on how you code, PHP can turn out to be an efficient web language
    to use. In fact, PHP is known to be scalable when writing code as well as in
    creating applications and is very reliable when you need to serve several web
    pages.If you get stuck or are getting started when using PHP, one of the best places
    you can find information about the language is php.net apart from php
    pros from numerous websites and forums that are available over the internet.

    Reply
  • January 12, 2015 at 5:22 pm
    Permalink

    really nice.thanks for this blog.Better software development company can help you with developing custom websites with any kind of CMS and framework.It is a trusted firm providing professional web development services High quality works in creating ecommerce systems and content management works.Ex post:I recently got an e-commerce website built by Cedar Solutions. And i was really satisfied. It was completely responsive and showed on google’s first page and they charged me just 15,000 Rs.

    Reply
  • April 8, 2015 at 3:07 pm
    Permalink

    Our oracle database syllabus desined by oracle certified experts which includes basic and advanced level training. At the end of the oracle database course students can clear oracle global certification exams like OCA, OCP ,OCM.Trainingbangalore povides latest oracle version training like 10g,11g,11g R2.Our training center equiped with high level lab facilites. Visit Us, Oracle Training in Bangalore

    Reply

Your Thoughts: