Services
-
Adopting an Agile Process
Extreme programming is a term that scares most managers. The reality is that agile development practices are sound, and focus on communication and planning to produce working software even while requirements are changing. We have found that introducing agile practices at the developer level is a great way to introduce the new ideas, and we focus on three areas that will benefit any software process being used:
Testability:
Increase confidence that code is working as expected, and that new features and refactoring are not breaking existing code. By adopting unit testing developers will start to develop code differently, and the result will be a more maintainable and loosely coupled application.
Continuous Integration:
Accelerate development by providing predictability in producing deployable artifacts, provide trust by knowing that the application is always fully tested and ready to deploy, and provide management feedback by producing code-based metrics.
Process:
Just as code needs to be continuously tested, so does the software development process. By performing periodic reviews and updates, you will ensure that the software process continues to match the dynamic of your team, providing a streamlined and optimized path to correctly implemented and working software.
From Down & Around, Inc. has helped companies, even in highly regulated industries, adopt agile development practices to increase productivity.
We can help you by evaluating your current agility readiness, identifying those areas that need attention or changes, develop a migration plan, and manage / implement the solution. Additionally, we can help to kick-start unit testing by evaluating the existing code base, introducing unit testing examples, and mentoring developers. For a complete package we can also work with your team to create a customized process that fits your individual development environment.
-
Team Leadership, Architecture, Design & Development
We can provide a variety of staff augmentation options for your project - from leading the entire software development effort, to providing specialized knowledge in various positions such as architecture, design and development.
As well as on-site options, we can provide offshore and nearshore team members. You control the day-to-day activities, and we ensure quality by interviewing all candidates and periodically reviewing the work deliverables (for quality, correctness and adherance to requirements).
-
Integrating Open Source
There are many different levels involved in using open source software: varying from not knowing that libraries exist, to using open source projects, to providing custom extensions and accessing provided integration points. As users, contributors, and committers on open source projects, we can help you take full advantage of what open source has to offer.
We can help you identify where custom code can be replaced with open source projects, evaluate the open source projects (including maturity and licensing), assist in interfacing with the development teams through the community, and manage / implement the integration of open source into your application.
-
Architectural Adaptation
Over time, during periods of aggressive development, and through changes in functional requirements and business goals, an application's architecture can become lost, confusing or outdated - increasing the amount of development required to implement new features. Just as code needs to be refactored to keep it focused on the here and now, so too does the architecture of your application.
We can help you identify architectural goals, identify those areas of the architecture that require attention, develop a plan to address the problems, and manage / implement the solution.
-
Project Audits
Auditing projects are a great way to determine your projects health and quality. When performed by an outsider, audits provide an objective and independant evaluation of whether the project is meeting its goals.
For optimal results audits should be performed regularly, and we suggest performing audits at the following times:
- Before development starts
- At project milestones or significant releases
- Before QA or acceptance testing
- When deadline are missed
During an audit we will review non-functional requirements, functional requirement, use cases, as well as architectural and design documents. We will interview team members, project sponsors and managers, and we will examine the code. Finally, we will cross-reference the result with previous audits and present the results to the management team.
-
Training, Coaching & Mentoring
As experienced team leaders, architects, designers and developers we work along-side your team. This allows us to impart knowledge on process, language or technology first-hand, and on the problems that need to be solved now - not a theoretical or simplified example.
Using this approach we find that learning is accellerated, as new ideas are reinforced by continuous practice. And when there are questions, they can be answered quickly when the problem occurrs.
