Software Development

Creating software is not just about hands on keyboards. It is about controlling the entire development pipeline, stretching from brainstorming through to support. JustPlainSimple takes a holistic approach to software development, optimizing each part of the pipeline to increase throughput and decrease costs.

Your company's needs are unique, so please contact us to see how we can optimize your workflow.

Requirements Gathering

Gathering requirements for a customer's request involves speaking both the customer's language and the development team's language. JustPlainSimple is experienced in working on both sides, ensuring that customers are asked once for their specifications, so that the development team can start the design and implementation stages quickly.

Team Formation

Whether it is team leadership or finding and interviewing candidates to make a team, without the right people there is little chance of successfully delivering a product. A good team looks out for each other and knows what done means. JustPlainSimple has experience in forming and leading cross-functional, highly-technical Web development teams.

Design and Architecture

Just about every application needs to move or store data. A badly designed system will make it difficult for the application to run efficiently, as well as report on that data in a timely manner. We have experience architecting relational database models to store millions of records. We also have designed systems that are robust, fast, and cost efficient to manage.

Onboarding

The most expensive component of software development is the developer. A new developer needs to be setup and working quickly in order to maximize their effectiveness. We have experience in helping remove the common roadblocks associated with new team members on projects, by identifying and resolving common issues. With these common issues identified, we create automated processes so that the new hire can get their development environment configured without explicitly knowing how it all works. This allows them to reduce setup errors, start working immediately, and learn about the system on their own time, not on the critical path.

Technologies we have used in this context are: Linux, OSX, Ansible, VirtualBox, Vagrant, Git, and various Wiki software.

Implementation

We can write features. We can also fix bugs.

However, the largest roadblock that stop teams from writing features involve legacy, unreadable, spaghetti codebases. We work with developers to refactor and simplify the codebase so that more features can be written.

Here are just a few technologies that we work with to optimize this stage: OSX, Linux, Git, SVN, Ruby, Java, Python, HTML, CSS, SASS.

Testing

Creating software quickly is always a good thing, but without quality there is no point in delivering it to customers. Testing helps ensure identify and measure that quality. We have experience in ensuring tests are run on the software before it leaves the development team's hands, but also that the software is fully tested when it is delivered to the testing teams. We have implemented continuous integration systems, performed performance testing, and written custom test scripts to fully exercise a software product before it is released to Production.

One last piece of the puzzle that JustPlainSimple solves is to ensure active, and collegial relationships between the development and testing teams.

Deployment

Your Web application has to live somewhere. That means there need to be automated deployment processes in place not only to create server environments to host the Web application, but also configure it with the latest version of software.

At JustPlainSimple, we work with system administrators and operators in a DevOps approach, to build systems that are scriptable and malleable. We have built systems that use the leanest technology stack possible to host a Web application, in order to reduce the amount of complexity when troubleshooting.

Some technologies we have used are: Linux, OSX, Git, SVN, Ansible, Puppet, Ruby, Bash, Python.

Support, Feedback, and Reporting

When things go bump in the night you want know about them. You collect a lot of data, we have written scripts and built tools to help identify patterns in the data. When something happens in Production, we ensure that the end users can report them back to the development team, without taking that team away from writing the next version of software.