Code District is a high-end technology company specializing in delivering cutting-edge solutions and thought leadership for custom web and mobile application development through multiple technology stacks.
We have also worked with companies like Neilson, Maxwell Forest, Bank of Montreal, FIFSG, Barclays, Family Dollar, AstraZeneca, NBC Universal, Groupon, etc. You can view our detailed company profile deck here.
To also get an overall idea of the quality of the services that we offer, you can view our clutch profile by clicking here.
We have also been recognized by Clutch as its top development partner by getting the Top developers award in the US
both in 2019 and 2020.
“Delivering software products beyond expectations on time and within budget.”
Core values & how they impact work
We are a full customer-centric organization providing absolute value to our prospects and clients by being very thorough and vivid in our dealings from the very beginning till the end. Some of our core value propositions are listed below:
- Transparency: We believe in full transparency from day 1. We have a saying around here, ‘Devil is in the details. So to pull that hidden devil out we put in billable hours free of cost at our end, for our potential clients, to do a very thorough requirements gathering and feature breakdown. We do not club 40+ hours together on a single feature instead show you a very transparent breakdown of where little effort is being put in.
- Open Upfront Communication: When estimating any project we take it as putting our company’s hard-built reputation on the line. We never haggle over unrealistic expectations or pricing just to lure you in, as we have a name and reputation to protect and would not risk delivering a low-quality product. If something is beyond us or we see clients making a mistake we are very vocal about our thoughts on it even if it means losing money on our end.
- Intriguing Q&A Sessions: We always like to go all-in with our project in consideration and are never afraid to ask all the right questions at the right time. This greatly helps the clients in fine-tuning the project details and requirements. It’s not always about following exact instructions but about having a thought-provoking and invigorating mindset. We passionately come up with optimal solutions rather than blindly following instructions.
- Hire the top talent: We have a very stringent recruitment process to ensure that we only provide you with top talent. It's a combination of a quick on-the-spot coding and problem-solving marathon followed by detailed soft skill interviews.
Services that we provide
- Keep pushing the bar: We cultivate a culture of punching above one’s weight class to encourage high-performance standards.
We are an end to end custom development company offering a wide range of services in the technology space, which includes:
Industry awards received
- Web and mobile apps development from scratch & upgrade
- Product Conceptualization
- UI/UX Design
- Development (both frontend and backend)
- Quality Assurance & Testing
- Product Launch
- Support & Maintenance
- Enterprise-grade level solutions
- Business process automation
- Dedicated teams of specialized designers, developers, QA experts, and project managers
- Emerging technologies like Data Science, AI/ML, IoT, Big Data, AR/VR
We have received the following 3 Top Developers in the US Awards in three consecutive years:
1. Good Firms “Top Developers in the US Award 2021”
2. Clutch “Top Developers in the US Award 2021”
3. Clutch “Top Developers in the US Award 2020”
4. Clutch “Top Developers in the US Award 2019”
How do we assess project needs and requirements?
We usually engage with our clients using 2 different engagement models. One of them is the Risk Buster approach to software development where we get a 10 thousand feet overview from your side of what you want to get done. Following the initial discussions, we do a detailed discovery workshop in which we prepare a clickable prototype, prepare a functional specification document, do the technical evaluations and eventually prepare a detailed estimation and delivery plan before sending the project off for development. Once the project is done, the final step is to launch the product. All of the above-mentioned steps allow us to avoid any of the client’s budget overflows, fluctuations in the timeline, and the chances of the product’s expectations not being met.
Our second engagement model is the Dedicated Teams Model. In this model we provide companies extra hands through our Dedicated Teams Model on a short- or long-term basis, to assist them with their workload and save them from the hassle of having to recruit more people. The process involves first understanding what kind of resources the client needs. Based on that, we provide the resources with the necessary experience along with a Project Manager to supervise the work. We have a trial offer by the name, "POC" (Proof Of Concept). In that, we let you test run our engineers for 40 hours for free to review our capability. Once reviewed, only then you can decide whether you want to move forward with us or not.
We dive deep into those requirements and have a couple of Q/A sessions with you to better understand the product, what needs to be built, how it needs to come together, what are the possible solutions and once we think that we're at a stage where we have a significant amount of understanding, that's where we put together a detailed feature breakdown document and put in the estimated number of hours against that and present to you a tentative quote that based on our initial understanding, we think that this project is going to take somewhere between x to y dollars and somewhere between x to y hours to build all this.
UI/UX Design standards
We follow the industry standards coupled with best practices to make sure that we give our clients the best and most creative designs consistently. We make use of the modern minimalistic approach and methods to maintain a flawless user experience.
- The first and foremost important thing is to understand the requirements and create all possible user stories based on the requirements. These user stories lay the foundation for modern, simplistic, and easy-to-use UI/UX design.
- We have certain processes in place to make sure that all the designs produced are coherent with and as per your branding guidelines.
- Even though we vouch to include uniqueness in nearly all of our designs we don’t advise our clients to risk reinventing the wheel which saves them a lot of time as well as effort. That is why we make use of libraries like ANT design and Tableau and others.
- Design flow and layout are of utmost importance and our design experts are trained as per industry best practices to design the most user-friendly, aesthetically pleasing, and consistent flow to make sure that the users can reap the best possible experience.
We have a 1-4 weeks discovery workshop process to fine-tune requirements, create UI/UX design clickable prototypes and mockups, outline detailed technical feasibility of the project and share a detailed project delivery plan.
Project Acceptance Criteria
We usually make the project completed if:
The system delivered has 5 or fewer minor bugs and 10 or fewer trivial bugs. The client will release the final payment as soon as the system stands accepted OR Two phases of final UAT have been performed as described above.
Definitions of bugs:
- Critical: The defect affects critical functionality or critical data. It does not have a workaround. Example: Unsuccessful installation, complete failure of a feature.
- Major: The defect affects major functionality or major data. It has a workaround but is not obvious and is difficult. Example: A feature is not functional from one module, but the task is doable if 10 complicated indirect steps are followed in another module(s).
- Minor: The defect affects minor functionality or non-critical data. It has an easy workaround. Example: A minor feature that is not functional in one module, but the same task is easily doable from another module.
- Trivial: The defect does not affect functionality or data. It does not even need a workaround. It does not impact productivity or efficiency. It is merely an inconvenience. Example: Petty layout discrepancies, spelling/grammatical errors.
If you have any questions in this process, please feel free to let us know and we can discuss.
How would you architect a Canonizer to be massively scalable?
For an application to be massively scalable, we need to make sure of the following:
- The application must have zero downtime
- The application should be able to support millions of users at the same time
- The application should be able to scale down and scale up automatically based on the load on the website
- The application should be able to support spikes in usages
- Add multitenant architecture with the multi-tenant database can be used as well
One of the best approaches for this is to use Dockers with AWS Elastic Container Service which is a highly secure, reliable, and scalable way to run containers. All of our containers will be managed through the AWS Elastic Container Registry service. Running containers would ensure that there is zero downtime even when there is a new code deployment. Plus we will configure the AWS Elastic Container Service to automatically upscale and downscale so that if there is less load on the website, the server should scale down automatically and reduce the cost and vice-versa.
We will be using AWS Managed Relational Database Service (RDS), as our primary database. This ensures backup of the database every single day and we can also encrypt any part of the database if required.
Logs are extremely important when working on a live project. Therefore we will be utilizing AWS CloudWatch to log every action on the website so that we can always pinpoint bugs even when millions of users are using the system.
All assets will be stored in AWS S3. AWS Load Balancer with CloudFront will be used for the efficient delivery of all of the website pages and assets. We will also be utilizing Redis cache and SQL indexing for even more efficient delivery of data to the end client.
What type of team management or prioritization tools are normally used, if any?
As far as our delivery process is concerned, to ensure that you are well informed and updated regarding the progress of your project, we employ multiple things:
- JIRA (or any PM tool of your choice): Tasks are maintained and updated on a daily basis. This allows you to get a quick overview of what’s covered and what’s left, basically a snapshot of where the team stands.
- Email / Slack Daily Updates: Each team member also posts a daily update on email / Slack. This includes what was done today, what’s planned for tomorrow, and if there are any blockers.
- Weekly Live Zoom Demo Calls: On every Friday, we give you a live demo of work done during that week over a Zoom video call. Besides this, we also set up daily / weekly scrum calls, depending upon how involved you want to be.
What is your philosophy on code reviews by team members, or strategies such as team or pair coding?
- Bitbucket: We primarily use Bitbucket as a repository management tool but we’re also open to using GitHub or any other tool as per the client’s preference.
We configure GitHub or BitBucket in a way such that whenever one of the team members pushes the code to the repository, a pull request is created. This pull request is then reviewed by the team lead who can either accept or reject that pull request. Upon rejection, the developer who created the request goes back to take necessary action on it.
Furthermore, we will develop three environments:
- Development (For internal testing and development)
- Staging (For client approval and testing)
- Production (For end-user use)
These environments will be configured with a CI/CD pipeline such as Github Actions or Bitbucket Pipelines such that:
What experience do you have setting up and maintaining systems that are 100% continuous delivery enabled, including automated tests that prove 100% of functionality still works with each modification made to the code, along with automatic deployment of such fully tested changes.
- If the code is pushed to the “development” branch the CI/CD pipeline will automatically deploy the code in the Development environment
- If the code is pushed to the “staging” branch the CI/CD pipeline will automatically deploy the code in the Staging environment
- If the code is pushed to the “production” branch the CI/CD pipeline will automatically deploy the code in the Production environment.
In order to ensure that the work is successfully done, we make use of the DevOps approach which is described below:
- Build Automation: This is a fast, consistent and reliable practice that involves the automated code preparation to a live environment
- Continuous Integration: This involves frequent code merging and unit testing which allows early bug detection and encourages the use of modular code.
- Continuous Deployment: This is a frequent and dependable process that involves small code changes to production.
- Infrastructure as a code: In this, IT provisions are managed through code and automation.
- Configuration Management: This is a time-saving process that involves managing and changing the state of infrastructure in constant and maintainable ways.
How can we contribute to improving Canonizer and its goals:
- Orchestration: In order to save time, increase scalability and stability, we make use of this process to support processes and workflows.
We have certain coding standards that are followed through our company to eradicate any inconsistencies within the written code, thus, creating no gaps for any possible bugs.
- Consistency: It is also made sure that the variables labeled in the source code stay consistent throughout in order to reduce any confusion or crashes. Also, we divide the code into different components instead of writing a whole paragraph to ensure that the code can be proofread and corrected whenever needed.
- Comments: Code District makes use of the maximum required amount of comments when writing new code as it helps the whole team working on the project to stay on the same page instead of assuming variables and practices.
- Test Cases: We make it a must to include a lot of test cases while writing the code in order to decrease any possible lead times in figuring out the code errors.
- Documentation: Our engineers always document the code being written so the workflow and direction can easily be understood by anyone reading the code to make sure the code logic and architecture are never mistaken for anything else than what they had envisioned it to be.
- Detail-oriented: Developers are often instructed to write as little code as possible to make up for more work hours. However, we follow the exact opposite rule as we believe that while it does take more time to write a detailed code, that code will always be easier to understand and interpret and can also be reused whenever needed.
Do you have any examples of times when you went beyond what was being asked of you by your immediate supervisor to further the goals of the company or humanity as a whole?
- Security standards: Code District’s information assets, encompassing hardware and software are managed in accordance with the information asset protection objectives established in the Asset Management Policy throughout the life cycle of the information asset; from acquisition to disposal.
We make sure that we don’t overcharge our incoming clients with exaggerated estimates as we believe in establishing long-term relationships with our existing clients rather than one-off engagements.
We also understand exactly what challenges the client is facing in order to provide the most optimal solution. Apart from that, we also are open to making suggestions to our clients on a continuous basis throughout the process to ensure that the client gets the maximum benefit because it is never wise to reinvent the wheel for something that has already been tried and tested.
A good example of this would be a client who had approached us a few months back with the intention of having Domo integrated into his system. The client was paying a sum of nearly $15000 a year and wanted a custom solution. We instead pitched Tableau with the same level of functionality that was initially required which saved him thousands of dollars.