13 Commandments of Web Development Process At Romexsoft
With a good 100+ high-performance software systems under our belt, things may get busy at Romexsoft.
While most assume we are a huge corporation, we actually prefer to keep our team relatively small and neat. So, how do we manage to develop enterprise-size software without expanding?
In short, by using a smart mix of the latest automated technologies, using the agile methodology and hiring happy (thus productive) people to our company. A longer version featuring our main software development rules, commandments and work principles is available below.
1. Our Development Methodology is Agile (SCRUM)
The Agile methodology for software development lays out the core principles of self-organization, teamwork and iterative development at our company. In fact, our manifesto is built around the essential Agile principles we all vouch for.
To put it simple, the agile approach to project management drastically reduces the amount of development processes and improves collaboration between different teams at all stages of development. The core principle of agile software development methodology is that instead of pulling each string separately, our teams work close side-by-side to achieve better results with fewer hours spent. The overall agile development process runs more smoothly, with less bottlenecks and interruptions, thus resulting into continuous development.
For ongoing development we chose to go with SCRUM, the most commonly used Agile framework. For support and urgent tasks we use Kanban method. We prefer working in two-week sprints and do build on production or staging every 2 weeks.
2. We Use JIRA For Task Management
For managing ongoing chores, time reporting, progress visibility and overall monitoring of the software product development process we use Atlassian JIRA.
This tool allows us to manage our development workflow more efficiently and it’s an ideal fit for SCRUM framework. JIRA allows to you to get a quick glance on who’s working on which task, plus schedule and monitor individual and team’s performance at no time. Each team member reports their activity and hours in JIRA and we send out weekly time sheets to our customers to review. Thus, both sides can easily stay on stay on track with the project development life cycle and review step-by-step progress.
Also, we have something special at Romexsoft – a custom-developed JIRA plugin called rTeam – a nifty add-on, which allows to report the time spent on tasks and offers a possibility to analyze and leverage the effectiveness of the whole team or each member based on their performance at all the software development stages.
3. Our Source Control System is Bitbucket
We manage our code base using source control system, which is served by Atlassian BitBucket on the cloud. Bitbucket allows software engineers to participate in the project both by committing code to it, reviewing pull requests, determining whether or not a pull request should be merged, if it should be rejected, or what areas should be changed prior to merging the request.
Every new commit triggers a CI build with the help of Jenkins in order to ensure that code can be integrated and the new commit does not break any existing functionalities. We also use static analysis tool SonarQube to get additional insights when there are some inconsistencies in code and security bottlenecks.
4. We Use Unit Tests To Guarantee Better Product Quality
We test the product quality on the unit level to ensure sub-par quality. Unit testing is aimed at identifying code defects on the smallest level and testing each feature/function individually.
Romexsoft offers the Test-Driven Development approach, meaning we first create an automated test case, which defines a new function or planned improvement; test-drive it with a minimum amount of code and afterwards refactor the new code to acceptable standards.
Using this approach, we’ve managed to achieve extremely test-coverage a.k.a. the percent of your code, which is being tested automatically meaning less bugs, less hours billed and higher quality of the product. TDD drastically reduces the likelihood of bugs in your tests, which can otherwise be difficult to track down.
5. We Use Static Analysis To Improve The Code Quality Even Further
To prevent errors and improve poor code practices we practice static analysis.
While there’s a bunch of static analysis tools available, at Romexsoft we prefer to use SonarQube. This robust tool collects and analyzes source code, suggests improvements and measures its quality and provides detailed reports. Running SonarQube is a simple automated solution for efficient static code analysis, which eliminates hours/days/weeks wasted searching for magic bugs, design inefficiencies, code duplication or lack of test coverage. Instead of manual nitpicking we power the process with technology.
6. Ongoing Code Review For Each Project
Though we are rather confident in our developers’ skills, we still encourage peer review and shared responsibility as an integral part of our software development process model. Each developer is always assigned to another subproject or a subcomponent, where he acts as the main code reviewer. Yet, there should always be one more team member (not necessarily a team lead) to take another look on the code.
This system of checks and balances allows us to have are at least two reviewers for each pull request and all team members participate in code review process. Each pull request is small enough to review in one quick sitting, yet large enough to provide you with context of the feature, bug fix, or update. If there’s any issue discovered, the reviewer creates a dedicated task, which is addressed for approval. This way we can dilute suggestions & discussions from actual fixes.
Having another pair of eyes to triple-check everything is always a good idea.
7. We Stand For Continuous Integration
The CI practice we use allows all the team members to integrate their work frequently and an automated build verifies each integration with a test to detect any errors rapidly. Every pushed commit goes through Jenkins:
· Jenkins tool to run unit tests
· Static code analysis with SonarQube
· Peer-to-peer code review
· Automated tests by QA ninjas.
Once all the Jenkins steps are passed without detecting a single failing test, we proceed with merging to the master branch.
If there’s at least one failing test and the commit fails to reach the next step – we drop what we’re doing and rush to fix the existing bugs first. Everything must be fixed before we proceed to the next step.
8. Automated Testing
We believe that testing software can be a breeze, when you do use the right approach to it. Ours is automated testing. Depending on the project scope, we’ll choose the best tools and create a library of test cases to test-drive each and every function of your product.
Automated testing has helped us to reduce time to the market by twice and create a 100% human error-free environment. New builds can be rolled out faster, the dragging routine is over and you receive a flawless custom software product for a lower cost, compared to manual testing.
9. We Stage Regular Production Deployments
We’d like to keep the releases fast to avoid any doubts about our commitment to production. We stage beta version demos in SCRUM and send it over to all stakeholders for approval. After we receive thumbs up, we move on to production. Another advantage of partnering with us is that we also conduct a series of performance checks to see how new changes affect the current system.
10. We Use Efficient Project Communication Channels
For business communication between teams and managers we use two main channels – Separate Slack Channel + Hipchat by Attlassian.
Everyone can customize what type of notifications they need to receive instantly or daily, thus nothing important ever gets lost in the chat threads. We do realize how crucial efficient communication is when it comes to outsourcing software development.
11. We Vouch For Productive Time Tracking
The benefits of working with us include accurate timing and prompt reporting. Everyone at Romexsoft use our homemade rTeam plugin for Jira to report the time spent on tasks. It’s simple and flexible enough to suit all our custom needs. Additionally, we use Toggl to accurately track the time and workflow of tasks. This tool helps us to assign tasks and projects for different periods and prepare transparent reports about the exact flow.
As a customer, you’ll receive a more detailed report on a weekly or bi-weekly basis on all the time spent and results achieved. We use the time & material model and charge only for the developers’ services, thus we’d like to keep you closely updated.
12. A Dedicated Customer Portal For You
Currently, we are in the process of developing a dedicated Customer Portal – your hotkey access to a one-glance view of the project state.
You’ll have a dedicated dashboard with graphs, tables and charts featuring the latest updates and current progress. You will be able to quickly review the amount of tasks completed, bugs found, features tested and so on.
Our smart analytics tool will feature the key project indicators including the correlation of planned and spent hours, planned vs. closed tasks, found bugs vs. fixed bugs and more details on our development strategy. Your detailed report will be just one click away.
13. Impeccable Communication Across Time Zones
No matter which time zone you reside in, you will never experience any difficulties with keeping in touch with us. To keep all the stakeholders well updated and keep the communication workflows smooth, we use the following array of tools:
· SCRUM for daily stand ups, demos and retrospectives.
· Instant Audio and Video screen sharing during video conferencing.
· WebEX or Skype video calls.
· Slack and an array of automated Slack bots.
· Jenkins tool, integrated with Slack and Google Drive.
· Dedicated Slack feeds.
· Any other communication/file-sharing tool you prefer!
So, here are the core organizational and workflow principles we use at Romexsoft to build better software products for startups and large enterprises. Tested and tried on over a 100 of successful projects during 10+ years in operations.