November 26, 2015 Management & HR
Polcode’s (not so) secret recipe for an efficient software development process
After smooth and professional negotiations with our Sales Team you have decided to sign a deal with one of the leading software houses out there – Polcode. What comes next? What can you expect from working with our development team? In this article I will show you the backbone of every IT company – the workflow. During nine successful years on the market and after hundreds of conducted projects we have developed an incredibly efficient software development process. Welcome to our world.
Each successful project starts by encouraging our clients to share as much information about their desired system as possible. At this point we have conversations, conduct webinars, exchange emails and share existing documents, mockups, wireframes or graphical designs, even if they are still in draft status. We can help with mockups and wireframes if needed.
Definition of Scope
Whilst we gather all relevant pieces of information we naturally use follow-up questions in order to clarify your end needs. With your help and feedback, we find out more about your business and your user base. Together we describe how user interface works, how information is presented, how forms are processed or validated, and at the same time we identify and define system workflows that can be triggered automatically or when the end-user interacts with your new system. All of that information allows us to set the borders of that system and define the scope of work.
With all the project deliverables known, we analyze optimal business solutions, most relevant technologies and most trusted configurations. Internal consultations result in several benefits for our client: most cost effective techniques, least time consuming development processes as well as most reliable and verified components, including third-party integrations where required or recommended by our experts. This part of the project process gives us a chance to select the best development teams for the job, which in turn allows us to set preliminary resource allocations that ensure timely project kick-offs.
Project Proposal, Statement of Work and official agreement
The completion of our analysis constitutes a foundation for our official Statement of Work and Service Agreement. We work with our clients to confirm our cost estimates and explain the framework of our cooperation, right up until the successful completion of the project. After this stage, all involved parties are aware of their responsibilities and general due dates.
Confirmed resource allocation
Once we receive the client’s approval regarding the Service Agreement, we are ready to finalize our development resource allocations. In some instances, that is also when the development activities can start. That way, right after the requirements are finalized and signed off on by the client, our developers can hit the ground running.
In order to best organize the work and monitor progress, a specification of requirements is compiled and confirmed with the client. This document defines a list of modules in the new system, their interaction and interdependence, if there are any. It also lists the attributes of the components, functionalities, formats, capabilities, limitations and all other definitions of the system to be built.
Confirmation of specifications
The confirmation of specifications is simply the client’s agreement with the content of our proposed specification of requirements, but it’s a very important milestone in the whole project that deserves to be emphasized individually. The sooner we receive that confirmation, the sooner we can proceed with specific development efforts and get much closer to the first progress review and the client’s verification that we are headed in the desired direction.
System environment configuration
There are several environments in which we work during a project:
1) DEV Environment is where the magic happens – it’s here that our development team creates new modules of the client’s new system
2) TEST Environment gives our clients a chance to check the progress of our work and perform functionality tests, including operations on sample data, mainly entered by test users
3) STAGING Environment allows for verification of functionality and performance using real-life-like data
4) PROD Environment is a live environment where target end users gain access to all new components
Our system administrators cooperate with development teams to optimize the configuration of these environments, comply with industry standards and the client’s requirements as far as backup, security and performance are concerned.
Development & verification
The Head of Programming or Team Leader oversees the optimal choice of technology for all of our projects. DEV Environment allows us to ensure that any newly built functionality is ready for the next phases. With successful results of our internal checks, we encourage client review and ongoing inspection with regard to our progress in TEST Environment. We work in parallel – as clients report their findings in our web-based project tracking system, our DEV team churns out more, bigger and better chunks of functionality for our clients to verify. Module by module, ticket by ticket, we iterate periodic verification phases whilst at the same time addressing the feedback from previous review sessions to arrive at the completion of the development phase.
The Approved Specification of Requirements document is a basis not only for the completion of development efforts, but also constitutes a foundation for what test cases to perform during the testing phase. At this stage, overall test cases ensure global cohesiveness of new deliverables. We cooperate with client, provide support during tests and the handle testers’ input.
When building new systems, usually cut-over activities are limited to a minimum. However, when implementing extensions or large upgrades of existing systems (especially in public domain) carefully designed cut-over activities ensure smooth transitions into new versions. Data migrations as well as conversions may take place. With a proper sequence and precisely timing all planned cut-over activities, implementing changes to already existing systems should be seamless to the client’s end users in live production environments.
Approved test results from previous phases and intermediary system environments allow us to proceed with implementing the clients’ systems in live (production) environments. At this point, new changes are available on designated servers, cloud systems or any other specific location defined by our client.
Client’s verification of Prod implementation
One last verification phase in live environments with real-life data in real-life situations provides final confirmation. That information reassures the client on making the final call about the system’s readiness for prime time.
Product / release stabilization
We realize that making a decision about going live with a new system or significant changes to existing offerings is no easy pill to swallow and we have no intention of leaving you hanging. To relieve some of that stress, we offer assistance during the stabilization phase. In fact, our hope is to minimize dependency on this phase and instead put stronger emphasis on all testing efforts before we arrive at such a late stage of our project process.
The project wrap up ensures that everyone involved in the project is satisfied that the identified project deliverables and outcomes have been achieved. Closing meetings summarize the coherence between project deliverables and project outcomes. This leads to a formal project sign off.
We hope that you don’t mind if we follow-up proactively to check-in, ask about room for improvement or celebrate new success stories. At the same time, we would like to share our comments about possible upgrades or verified patches that may benefit the backbone frameworks applied in your systems.
At this point we have made a yet another project that both parties can be satisfied with. After reading this article you know almost everything there is to know about any software house. All there is left for you to do is to answer this: “Hi, this is the Polcode Dev team. What can we do for you?”.