Fog Creek Software
Discussion Board




Client wants source access...

I'm a college senior who was recently employed by a professor in the Mechanical Engineering department to rewrite a system done by some students in a "Senior Project"-type course.

The goal of the system is basically to let professors create surveys, send them to students, get feedback, and make project teams based on these surveys. It's implemented in PHP with a SQL backend. We recently finished up coding and are just ironing out a few bugs and usability issues.

Today at our second-to-last meeting, the professor (who's basically just a client at this point) says "What I need you to do is show me how to open up the code files and change the prompts if I need to". I was puzzled at first - "Why would you need to do that?". His motivation was that if at some point a particular message was unclear, he would just go in and change the string to make it more clear.

We argued this point back and forth for a bit, with his main point being "Well I can just go find those strings right?" and my main point being "You're going to break it, this isn't something you need". What I'm really concerned about is that firstly, his ideas for what text should be in certain places is not what I'd consider ideal.

For example, when creating a new question, the question needs a unique title. He was concerned that users wouldn't know which titles were already taken, so suggested we just add a drop-down box that shows all the existing questions. I had to explain that it's not good interface design to have a UI element that looks like input but doesn't actually do anything.

I'm also very concerned that he's going to put a double- or single-quote in the wrong place and cause the PHP to not even run, confuse SQL with strings, misplace a TR or TD and destroy the layout, clutter the page with excessive verbiage everywhere, or take the next step to "How hard can it be to edit the code a little?" and start breaking everything.

He is a Ph.D., but I've seen him use a computer on many occassions and I know this is a bad idea. I'm pretty sure he's going to bring this up at the next meeting. Now, I'm more than willing to write down instructions for future developers, but how can I convince him that he shouldn't be editing the source?

Bewildered Coder
Tuesday, February 17, 2004

Break out configurable items into template files or configuration files. Document how they are to be used.
After that, compiled the PHP using a compiler (~USD$250 on the market and up)

Li-fan Chen
Tuesday, February 17, 2004

"For example, when creating a new question, the question needs a unique title. He was concerned that users wouldn't know which titles were already taken,"

hate to break this to you, but he is (at least partially) right.
relying on the title to be unique is a bad design in the first place, but now its done (hey, we've all made bad design decisions in the past) you _do_ need to provide some way of handling the case of someone creating a new question with a used title.
Depending on the # of questions involved Id suggest either a javascript verification, or a server side verification process before the question is accepted, returning a page with the error carefully explained if its appropriate.
you are right about the popup though :)

"but how can I convince him that he shouldn't be editing the source?"

I wouldn't even go there.  Hes a grown man and the source belongs to him anyway.  <g> tell him how, warn him that you are going to charge if he breaks anything and then point him at the code.  If he breaks it, charge him to fix it..eventually he will either learn not to break it, or get used to paying you to fix it :) either way you and he both win.

FullNameRequired
Tuesday, February 17, 2004

Just going to do some quick follow-ups to cover the situation. Executive summary: I'm graduating, the project is in pure maintanence mode now. I'd would _love_ to just say "Yep go ahead and break it" and charge him $100 per breakage but I'll be at a better paying job anyway

Li-fan: It's too late. The project ends this week, I'm graduating, and he only thought of this feature today. I agree with the implementation though.

FullNameRequired: Yes, the page does give you a meaningful error when there's a title collision. Having titles be unique is an absolute requirement! When a user is adding questions to a survey, they see a drop-down box with all the existing questions they're not already using. this box contains only the titles (since showing the questions in their entirety would be huge), so if multiple questions have the same title it's a crapshoot which you actually get. A "title" is different than a "prompt" - the title is only used to identify the question, the prompt is what's actually displayed to the user.

Also, the only place to get to the create question page is from a link right below the box of exising questions, so unless you didn't check the box for the question you were about to create you'd know there was no collision.

I do like the idea of a javascript verification feature - so many good features will come up when people are discussing this I'll probably sad I won't be around to implement any of them!

Bewildered Coder
Tuesday, February 17, 2004

"Having titles be unique is an absolute requirement!"

<g> trust me, thats an entirely different issue from whether you should have used it as the id for the question itself.

but its obviously working as planned, so Ill shut up :)

"so unless you didn't check the box for the question you were about to create you'd know there was no collision."

right, so overall its pretty well designed anyway.

"I'm graduating, the project is in pure maintanence mode now."

In that case is it even your problem?

trust me...if you dont show him how to make the changes then hes going to try anyway the second you walk out the door.

its gonna be broken by him, thats unavoidable...what you should be asking your self is how to minimise that.you wont be able to avoid it.

FullNameRequired
Tuesday, February 17, 2004

You're probably right.  Your professor probably doesn't need to mess with the source code as long as you provide all the functionality he is looking for.

' He was concerned that users wouldn't know which titles were already taken, so suggested we just add a drop-down box that shows all the existing questions.  I had to explain that it's not good interface design to have a UI element that looks like input but doesn't actually do anything.'

You argued that his implementation for this feature is flawed, but you didn't address whether his desire for this feature is warranted.  Simply stating it would be a bad UI design doesn't cut it.  If you continued by suggesting an alternate, good UI implementation, then you'll probably have an easier time convincing your professor.

Your worries about your professor messing with the source code, be it PHP, SQL or HTML, will likely be dealt with in a similar manner if you simply provide the features your professor is looking for.

m8v316
Tuesday, February 17, 2004

Simple

Use CVS and give him a branch.

Damian
Tuesday, February 17, 2004

Wasn't there a thread some time ago where somebody (even Joel?) had successfully built  many systems on the basis of allowing the users to have the "perception" that they controlled the software, in this case the strings. Having read this, it was a life changing moment, and since then I have always coded to allow users to change text and control the style sheet. They are always so pleased to be able to change the wording and style that their "issues" about how the thing works is soon forgotten.

I used this tactic on one particular customer, and the diversion  worked so well that the design of the website was never challenged, and the project proceeded to plan.

And the time saved by not having to clear content changes can be a considerable saving to development time too.

Raddy Echt
Tuesday, February 17, 2004

Why are strings hardcoded? Why not put them all in a flatfile/xml file and let him edit those there? or even keep them in mysql?

fw
Tuesday, February 17, 2004

Since it's too late to change the design....

Show him how to access the source code. Once you've covered that, hand him a CD with the original source code on it.  If he breaks it he can at least install the product as it was delivered.

Rob H
Tuesday, February 17, 2004

Give him what he wants.  Don't make excuses for your bad design - only a fool expects high-quality from an undergrad.  Graduate, move on and count it as experience.

Bathmophobic skier
Tuesday, February 17, 2004

I can come up with a bunch of solutions, all of which are pointless.

Your goal, as I understand it, is to make it to May. So you're in the mode of nailing one board onto another to get there.

I'd say - tell him that yes it can be done.
Don't return his messages for a week.
Make an appointment to get together with him to show where the stuff is. Put it off as far as possible.
Be gone for spring break.
Come back, forget to check in with him for a week...

I think you get the general idea...

Philo

Philo
Tuesday, February 17, 2004

Yeah, use Philo's approach. Put it off as much as possible. Your prof might even get the hint and offer to pay you more to sort out his additional problem.

If you hand over the source, he will break your app, and then blame you. He will then probably hire someone else to fix up your shoddy work ( isn't this where you came in?)

I would say your prof is a typical manager of software projects. Not very good.

Must be a Manager
Wednesday, February 18, 2004

I can't believe you are advocating compiled PHP and closed source. Oh the irony.

Who gives a shit what he is gonna break? I say just give it to him.

trollbooth
Wednesday, February 18, 2004

Of course he will want to have it changed in the future. Have you ever heard of a system that was "done" (unless it was retired)?

You said the project ends this week, and that you are graduating. Does your graduation coincide with the end of the project? If you are still going to be around for some time, I can understand your anxiety. He'll probably hand the continuation of this code to someone as a "senior project" and give out your coordinates as the source for info. You will be in a constant "screw it" "I could explain but it is faster to just quickly do it myself" "should I start writing full documentation in the hope they will bother me less" mode. If you arestill dependant it will be a drag.

Dependencies in the academic world can be very strong. Are you leaving academia, or do you already have a postdoc at another university lined up, then you are off the hook, but if not ...

Just me (Sir to you)
Thursday, February 19, 2004

*  Recent Topics

*  Fog Creek Home