How do I know what kind of programming skill to ask for in a project?
November 18, 2017 9:52 PM   Subscribe

First off, let me begin by saying I'm out of my depth here so I will try to present this question as clearly as I can. I have basically no tech skills/knowledge, and the only reference point I would have for this project would be a database (relational?) like Access running queries to compare subsets of information against each other to come up with a report that integrates info from different databases and questionnaires.

One example of a simple function of this project would be like how the Drugs.com database functions, in which you look up a drug and see which drugs it interacts with. I assume that it's a simple type of database query that is being run.

Now say it was multiple databases that was analyzing/comparing info to come up with a report or profile, and the comparasins/analyses would have different kind of parameters (like lengths of time, quiz results) and this different subsets could cross check each other when asked for.

(I hope this is making some sense). So if I wanted to make a fairly complex system that did this, what skill/ language/program would I ask for in a programmer/engineer?

I'm just trying to find a starting point where I'd figure out my next steps.

thanks for listening.
posted by GospelofWesleyWillis to Technology (10 answers total) 1 user marked this as a favorite
 
Can you clarify whether you’re hiring an employee or a contractor, or whether you’re asking more informally? Your description makes sense at a high level, and it may be premature for you to jump from your preliminary sketch of project needs to implementation details like programming languages or database design.

You may find some helpful information from the GDS Digital Service Standard, a UK Government guide to producing digital services written for people in a similar position and level of experience/anxiety to yours. Right now, it sounds like you’re working on your user needs (point 1) and you need to do some research (point 2) in order to figure out what kind of team to put together (point 3).

Instead of asking for a programmer, can you ask for a researcher? They might help you hone your problem definition to determine whether you’re asking for something complex, and they might also help you figure out your users’ needs to determine whether something simple would do just as well.
posted by migurski at 11:57 PM on November 18, 2017 [1 favorite]


Response by poster: Thanks for answering. This is basically a sort of pipedream project for which at present I have no funding, but a possible source. I was actually going to approach students and see if they might be interested as a project with the possibility of pay. But at this point I'm just doing preliminary research to see if this thing would even be doable. I have never, ever done anything like this, so I don't even know where to start. But I'll take a look at your links, those might be good starting points.
posted by GospelofWesleyWillis at 12:22 AM on November 19, 2017


This'll be an explanation by analogy: You're very much in the position of a person with money who wants to build a house.

Since you don't know how to build a house, you're not really competent to hire or directly oversee the people that will build a house. You would generally need to hire a "general contractor" to do that.

The general contractor builds things from plans, but you don't have any plans. You're going to have to hire an architect (if they're heavy on design) or draftsman (if you are going to act as your own architect), to draw up plans for the house in sufficient detail for the general contractor to build from.

Getting those plans for your house is often a long and detailed process, with a lot of interaction between you and the architect or draftsmen.

It will be the same with designing and building an app or website or other software object. You will need to spend significant time with someone who provides software architecture consulting services. This will be an iterative process: you may discover that your initial desires are too general, too large, or too expensive, and find ways to address those problems. You will have to be excruciatingly, painfully detailed about what you want, and you will have to work through concrete examples of any function you want your product to perform.

Once you have your plans, or your specification, you might find one or more people willing to generate your software product, for a price. This may be a group associated with your software architect, and it might not. You will be very concerned about the quality of the people from whom you accept bids to build your object, because of the frequent cost overruns or outright failure of software construction products. You will have to evaluate their reputations and prior work very carefully.
posted by the Real Dan at 12:27 AM on November 19, 2017 [5 favorites]


Response by poster: very useful reality checks & things to consider. thanks for your input.
posted by GospelofWesleyWillis at 1:12 AM on November 19, 2017


Python. Not because there is anything special for your problem but more that it's a contemporary language that has a large number of proficient people familiar can be used to prototype quickly.

But that's really not the first thing to think about. Run your process by hand, a number of times, record each step in detail with your thoughts at each point. Seeing that detail will give a developer the best idea of what tools will be good to solve your problem, relational db's are a fantastic tool but not the only one. There are also steps that seem obvious to a person that are really hard for computers and of course vise versa.

Also do extensive hunt for open source tools, there are amazing packages available.
posted by sammyo at 5:25 AM on November 19, 2017 [2 favorites]


And maybe you're not building a house with an architect: maybe it's a woodshed with a handyman.

Amplifying Sammyo's excellent advice, there are ways to come at a problem from the bottom up, and "Run your process by hand, a number of times, record each step in detail with your thoughts at each point." is the way to start right now matter what else.

Apply Sammyo's process for each discernible capability that you want your software to have, on your own, as neatly and completely as you can, and carry these well-organized notes to your Architect or your Handyman, and see how they respond.

If they don't want to read your notes in detail, then they're not person for your job. If you get your software written, your notes will form the necessary (but probably not sufficient) minimum baseline for acceptance (and full payment) for said software.

One final piece of advice: before any work occurs, have a meeting of the minds, write down the obligations of both of you on a piece of paper and the terms of payment, and both sign it together, with a down payment. This will be an informal contract, and it can help protect you both, and establish that you own the work and the contractor has no part in its success or failure.
posted by the Real Dan at 10:24 AM on November 19, 2017 [2 favorites]


The house construction metaphor is a great one! The project sounds like something you might have money for but aren't yet certain and it’s not yet a fully-baked concept. A full architect + general contractor approach could be risky: they will move forward quickly on the assumption that you know exactly what you want, but costs balloon with change requests and unforeseen snags. The UK GDS was founded in response to tech projects which had failed after massive cost overruns; Dan Milstein’s excellent article on the futility of cost estimates for software explains why.

There are other house-building styles that can reduce your risk of burning a lot of money building the wrong thing.

You could approach this as a log cabin (on preview, similar to the Real Dan’s answer). It’s a personal project, a bit of a pipe dream as you say. You know generally what you want but nobody’s breathing down your neck and you can take a bit of time to figure it out. You could learn how to do some of the basics yourself, which will provide you with valuable feedback on difficulty as you go. Maybe find a trusted technical friend to help who’s comfortable with the up-front lack of definition. I’d second sammyo’s recommendation of Python for this; it’s an excellent programming language with a ton of users and a “batteries included” philosophy. You might use a database like Postgres, a framework like Flask or Django, and a platform like Heroku to host an evolving hobby app for free as you learn.

Or, you could also approach this as a kit house. Find an existing thing that does most of what you want, trust someone else to have done the hard work of designing it, and hire a carpenter to put it together for you. This might be a better fit for a university-style funding model, and if you’re considering hiring students to do the work it’ll also fit more predictably within their school-defined schedules. Many people choose Wordpress for this kind of thing. It’s a blogging program but there’s a wide variety of plug-ins, themes, and reasonable-cost professionals available to make it do anything you might want. Since you're talking about databases, mefi’s own simonw recently created the low-level Datasette tool to build and host database APIs.

Good luck!
posted by migurski at 10:39 AM on November 19, 2017 [2 favorites]


I would strongly recommend that you define your project requirements *first*, possibly with someone who has a little more experience doing projects like this. Programming languages and databases are just tools. The tools in this case are used to complete your requirements or business objective. There are certainly times where your existing systems can affect the tools you use. However, you don't go looking for a construction contractor because they use Craftsman tools. You look for a contractor who has successfully completed the type of projects you want to do. Same with programmers/contractors/project manager for a technology project.
posted by cnc at 4:28 PM on November 19, 2017


Please check out Airtable. It will allow you to do most of what you are describing, if not all. It is self-described as a way to organize "stuff" or "ideas" but that's really underselling it - it is actually a fully featured relational database with pretty UX on top and you can do data manipulation using cell "formulas", from super simple to quite complex (and yet fairly intuitive even to a lay person - if you grok advanced Excel, you will grok Airtable). It's cloud-based so you don't have to worry about the inevitable grind of housekeeping such as hosting, user management, backups, etc. and it's $25/month for the pro version so you can't go wrong as far as price and convenience.

As far as hiring students, as a software engineer/software architect, and business owner who's done a lot of project management and hiring, I would advise against it. Good students in computer-related programs have no shortage of internships that pay a pretty decent amount per hour so you won't really save all that much compared to then having to be a slave to their school schedules. In addition, these students tend to be great coders but they naturally need a lot of direction so expecting them to give you direction is not realistic.

If you do go route of hiring someone, you can find an experienced software architect on Upwork.
posted by rada at 9:13 AM on November 20, 2017


Response by poster: thanks again guys. I was a little scared of the answers because it's so daunting but you gave useful info without making me feel like an idiot.
posted by GospelofWesleyWillis at 11:14 PM on November 25, 2017


« Older Not Ready to Dive In   |   Deducting closing costs in off-market home sale Newer »
This thread is closed to new comments.