What kept me from either turning this down outright or starting the whole process with a programmer is that I can’t (yet) see what’s overly complicated. I have with other projects — I’m aware of my limits — but I’m not there (yet) with this one. What am I missing?
Database Creation/Normalization
I can’t see this needing more than two tables linked in a one-to-many/inner join relationship. Table One will hold a primary key, document location, document name, and four immutable fields (trust me on their inflexibility. For example, until Gondwanaland reforms, regions will stay the same). Table Two will hold its own primary key, a foreign key, and a keyword field. I’m aware of and practice naming conventions, and am quite liberal with comments.
Setting this up in Access took about fifteen minutes, and that’s including time to plug in fake data for testing. I was able to write (in SQL, not using the Access query pane) a handful of queries to pull data in each and combined fields.
Public Page
Having created survey pages to collect data, I know how to get PHP to display lists, combo boxes, buttons, etc., and how to tie those to a database. I’ve written a few pages that dumped data to the screen, but those were based on permanently defined queries. In doing so, I’ve read through (but not practically implemented) methods to create custom queries based on user input. This is part of the learning, but given that I’m working with so few fields, it doesn’t seem a Herculean challenge.
Internal Page
The data input part of this will work just like the survey pages I’ve done — entering user input into the database. Data validation will be minimal, as the user will be restricted to dropdown boxes and there is no real rule to validate their keywords on. If some do arise, I’ve validated email, telephone, date, and a few other fields before, so I’m aware of how they work and what my options are. Other functions (e.g., delete, change) of the page should function similarly, with just a different type of query behind the button.
Security
I’m not sure where security fits in (now how ‘bout that for a red flag). For the publicly available page, all database connection information will be coming from a non-accessible include. The user will be restricted to dropdowns or checkboxes, and the only text field will be escape-cleaned, etc. What comes back to the user will be a list of links and descriptions, with no other opportunity for input.
Because the internal page will be located on the organization’s intranet, anyone who accesses it will either be an authorized user or their own security problem. Even still, simple validation (are your sure?) is in order, but the client explicitly turned down the idea of tracking who made what change.
So what the heck am I missing? Yes, there are some oversimplifications. Yes, this is not like working in Access, so it would take me more than a couple hours. Yes, I don’t use commands like isset on a regular basis, so refreshing proper placement and use will clearly take me longer than someone who does this all the time. And yes, I fully expect to get into a few areas of oh, now waitasecond… that’s not supposed to be happening. But I’ve done much more complicated things before, (e.g., For a gargantuan United States Cabinet-level agency, I created a property tracking/auditing database distributed to fifteen nationally traveling teams, with a slew of bells and whistles (random selection, forward and reverse audit lists, custom report generation, tons of validation, consolidation of team reports into a final statistical and textual product, etc.) so I’m familiar with what can be done and what I can learn.
Which brings me back to the OP: How to hire someone?
Option 1: Hiring outright
[ul]
[li]From where? Does rentacoder.com work as well as it seems to? [/li][li]How much would something like this take? [/li][li]Am I right in assuming that for an experienced programmer, putting this together would take an hour or two? (I kind of base this on my own experience. A different client wanted us to create a survey for them, after I’d gotten over the initial learning curve. Putting it together, including all formatting took no time at all compared to the first go-round. [/li][li]What do I need to watch out for in the process? Asking for heavy commenting is a nebulous request, but what more can I do?[/li][/ul]
Option 2: Hiring a tutor (for lack of a better term)
Before turning anything over to the client, I’m going to have to understand and be able to work with whatever I turn in. This is where the outright hiring would need lots of comments. I’m not playing with the client’s money (it’s a bulk contract, mostly for editorial and design work, and not hourly), so how I budget my own time does not affect them (as long as we meet deadlines!). And as I’m very confident I could do this completely on my own (with some posts, and lots of book/searching time), this option will help with the speed and frustration-limitation.
I’d love to have a lawyer/accountant-like arrangement with someone. That is, someone who says, “Sure, you can call/write me as much as you want. I charge $X an hour in fifteen minute increments. Before you’re first call I’ll take a few minutes to understand what you’re trying to do.” Does this type of service exist? Someone whose patience is tempered by the notion that they’re being paid for their time. Didn’t something like Keane or Keen or something like that exist once?
So thanks so far, if you can point holes in my thinking I’ll be very grateful. I don’t mean to be argumentative vis-à-vis my capability versus a “real” programmer, it’s just that I can’t see where this stretches my ability to adapt past it’s breaking point. A single major hole will certainly give me that out.
Thanks, especially if you’ve read this far!
Rhythm