top of page

Software Development for Non-Engineers

Updated: Jul 14, 2020

How does someone without a software engineering background go about developing software? The answer is pretty simple, it requires vision and technical expertise. Beyond that you need to have resources that you can outsource development to, and of course capital to fund the endeavor. Luckily, we live in interconnected world, with lots of resources readily available to outsource software development. It's a trade that lends it'self well to remote work, so the distance generally isn't an issue. By outsourcing the code, you just have to lead the development to make high level decisions and set functionality requirements.

So in essence, all you need to develop software solutions is money, vision, and project management. Sounds simple?

Case Study - Lab Automation Control Dashboard

I've been involved with applications engineering in lab automation for a few years now, but last year I undertook my first software development project. The goal: to create a dashboard web application capable of monitoring and controlling my lab instruments on a calendar based schedule system.

There are many options for outsourcing code, and it's important to find a team that you trust. Need a suggestion on who to work with? I recommend a San Diego based company called, Integrant. The engineers were Egyptian, based in Cairo. They are extremely talented and reasonably priced. In fact, the weekly rate for an entire team is less than my weekly rate. And they are experts at their trade. We rely on this partner to provide expertise when in comes to application architecture, IT infrastructure, and development of features.

What they do not provide is the scientific context of what I'm doing. None of these engineers had ever used any of the devices in question, but they have worked on lots of different types of Apps. This actually is a massive bonus of outsourcing the development.

Rather than being limited to experience of your in house developers, you have an entire team at your disposal to generate ideas and provide feedback based on real engineering experience. So as long as I properly guided them through the details that are not computer science related (for example context regarding chemistry experiments or drug discovery processes), and they provide real solutions for how to get there.

Understanding the basics of code helps, but not necessary. All you need to do is adequately convey the functionality needs of the software. Good software engineers will find solutions to complex issues, but that being said 'complexity' itself is not ideal for software solutions. Functional specifications are a must have, to document the intended purpose of the software and outline a strategy for functionality required by the users / managers of the software.

The result of that endeavor is invaluable to our lab, because we have a custom software interface that nobody else has. One might even use the term, competitive advantage. Not only had we succeeded in developing a fully functional web application that is now used by larger teams of people, but we confirmed proof of concept in our software development strategy. With another win added to repertoire, fortified by our track record of success, we then turned around and sold a budget for over 2 million dollars to further expansion of my application and development of another custom software project next year.

Like all ambitious projects, it's good to start small and build on that. We had to prove our concept to management before we could get our real ambitions funded, and that took about a year of setup and proof of concept. This is pretty common with smart managers, as it's a good idea to be weary of dumping money into IT solutions before you are sure that you have a solid plan in place. When it comes to ambitious technology infrastructure problems, having a plan for incremental development and success is the best call for sure.

The main part of the puzzle other than vision that one needs to provide to develop software like this is project management. There are tons of resources for how to properly manage a project, but from my professional experience I have a few simple rules that I follow. Document Everything. Lead meetings with an agenda, and take notes diligently. Keep communication open with stakeholders and manage expectations transparently. Ask experts for advice, and listen to what they tell you.

This is a service that you can pay for, but if you are particular like me you probably won't be happy with how your projects are run. A project manager must play an important role of middleman of info to keep all the stakeholders in your software happy and informed, and it's important to provide adequate functionality expectations from your team to the developers. If you keep communication flowing freely to the right teams and keep pressure applied to the right places, it's amazing what you can accomplish by collaborating with experts like Integrant.

6 views0 comments
bottom of page