With 38 years of software development we get to the bottom of difficult issues quickly. Our clients appreciate the fact that we have a long history of working with the tools and programming languages that their businesses depend on.
We hope that the following will give you a sense of the kind work we are able to perform for our clients.
Embedded systems development has been our bread and butter for many years. This includes help with bringing up real-time operating systems, writing device drivers, helping with board bring-up and checkout, supporting development tools including JTAG and other debugging technologies, etc.
Our programming language expertise is what you would expect for this kind of work: C and C++, assembly language and language runtimes, RTOS kernels, scripting languages, etc. Once the system is up and running we can also assist you with finishing “the other half” of your embedded systems project.
We can help with desktop applications and back-end applications written in languages like C, C++, Perl, Python, Ruby, etc.
Note that we are not the right choice for user interface work or web development in general.
We are at our best when it comes to maintaining an existing system architecture and extending it or helping to complete a desktop application that is in development.
Tools and Automation
Software Development Tools
Much of our work over the years has been helping customers to select and deploy the tools they need to be effective in the kind of software development work they do. We can help you establish a great environment for software version control based on Git, whether you’re self-hosting your repositories or using cloud-based providers like Github, Bitbucket, Gitlab, etc. This includes both determining effective software workflows, branching strategies, etc., as well as the more concrete tasks such as establishing commit triggers, etc.
We can also help you with systems like Jira and Confluence from Atlassian and other tools of this kind. Effective tooling is critically important and we can help you put in place and/or maintain your existing systems. That being said, tooling alone is far from enough; managing the human side of the development / engineering work is not less important.
Finally, we can help with the tools needed to produce high-quality documentation for both internal use and customer use. The tools here are many. There are some thorny problems here as well; for example, how can we produce customer documentation in an automated manner when preparing a customer release so that our documentation is correct in the details and yet not time consuming and burdensome to produce.
Software Process Improvement
Process improvement in general is a passion of ours. Have a look at our journal; this is a topic we often write about. If you like what we have to say please give us a call and let’s have a relaxed discussion.
The bottom line is that we are prepared to help teams work in a collaborative manner to greatly improve both flow and product quality concurrently. Development teams can have both high productivity (high flow) and high quality concurrently. The idea that development velocity and quality are inherently contradictory is not correct.
If you need help with an existing project or want to be better prepared for your next one, contact us today to discuss how we can help you.