Is it project fraud or saving the client?
screamingatmyscreen.com
screamingatmyscreen.com
How do we feel when people figure they know better than us and makes decisions on our behalf? Hopefully we don't experience this to often after we grow up (except by our governments ; ) and we shouldn't do it to anyone else.
And: What if the developer WAS mistaken? The client was smarter than he thought, just didn't tell the dev about future plans because of business secrets? If the developer makes decisions behind the customers back I'd also be fair for him to be prepared to pay the customer if it turns out that Rails was in fact needed (3.rd party integration etc.)
If I hire a contractor for to put in lead pipes and I get copper pipes that's fraud. Lead is bad and its my job to help them, but if they insist I can either do the job or leave. For all I know maybe they need lead cause they are a lab and the lead does something for them.
Fraud consists of five elements:
The making of a false statement;
With knowledge that the statement is false or with reckless disregard as to whether or not the statement is false or true;
With the intent that the listener rely on the statement;
With the result that the listener relies on the statement;
With the consequence that the listener is harmed.
He's just missing the last part: proving he was harmed. This might come later when he tries to hire someone to maintain the app; or when he finds he can't outsource the hosting of the app; or he can't integrate it with some other software he needs; or some other problem because the developer didn't use RoR.No? Well then it seems by saying that it's definite fraud, you've made a false statement with reckless disregard as to whether or not it's true, with the intent that someone reading these comments would rely on your statement and form a conclusion which would negatively impact and defame the developer in question here.
Now of course what I'm suggesting is ridiculous, but no more than your completely unfounded statement that this situation is "definitely fraud." You don't know what you're talking about, your URL citation makes that inherently clear to anyone who does and it's just unnecessary to comment like this.
The biggest fix is to have good communication--clients should be willing to explain why they want a particular framework ("I can find Rails devs more easily than x"), and providers must explain why they want to go against stated preferences ("This is a really, really dumb API endpoint. Sinatra is the simplest way of getting there from here.").
If people won't be open, well, that's when bad things happen.
I hope he is prepared for: 1) the possibility that the client will refuse to pay; or 2) sue him later, if he finds Sinatra cost more to maintain than RoR or finds he has to have it redeveloped because he really did need RoR.
Why even risk it? Why do you even care what language it is THAT much? It's not your project.
There's no language that I love so much that I would risk a lawsuit over it.
Perhaps the non-technical person had a trusted friend who is a Ruby on Rails expert -- and this person was not available at the time of initial development, but available later to maintain the app?
You wrote a super fast OLTP system in forth? Great! You're a god, but no one can support it or extend it to meet future needs.
Perhaps Bob had reasonable expectations that he'd be able to organically grow this app over time. Not being technical he chose a platform which seemed to have a pool of talent available to him.
In the small, this was a trivial technical decision. In the large, business picture, that decision might have major negative effects. Bob should have been consulted, and had the decisions explained to him.
On the other hand, Bob could have explained his longer term intent to his subordinate and allowed her to make a reasonable decision as long as the tradeoffs were communicated back to him.
We don't work in a bubble - our decisions have impacts long after we've ended our own contract with clients. Clients should be given exactly what they're expecting. If you think the client should go a different route, then you should explain that to the client, and document exactly what the final product will be.
Even if the difference doesn't make you 'ill', it is simply unethical to sell somebody something they're not expecting - whether you believe it's better or not.
(In this case the code is well documented and from a technical point of view below CRUD.)
But as a broader point, how much information should you be giving your clients about technical decisions?
I mean, RoR is rails is omakase so there's a bunch of stuff you could change around to make it quite a different framework. Like switching the template library or ORM around. This might make it difficult if they had a second developer in mind to pick up the project in the future if they are not familiar with these.
I've had situations in the past where I've developed software with PHP5 and taken advantage of the features and then had clients who got annoyed when they tried to migrate to a cheaper web host who only supported PHP4 and not PDO etc.
I explicitly list the technologies I use for a project. Let's say a webapp: Django (Python 2.7), HTML5, CSS3 (SaSS), JavaScript (jQuery) together with two short sentences explaining that the (to the time of development) current versions of the libraries will be used.
From this point there are two possibilities: The client has objections or doesn't care. If there are objections it is likely from someone who will maintain the code. If he doesn't care I wasted 4 lines.
I once had a client which was convinced by his nephew (he recently started studying CS, so he obviously knew what he was talking about) that I did everything wrong using Django, I should have used Node.js. Even a discussion if I would have to rewrite everything in node emerged.
I prefer to explain to my client what I will use and put it in the contract. Those 4 lines saved me a lot of trouble.
Minor version updates are communicated with the sysops if they exist. If we host the project there is no extra information.
The client hired you to do X then you should do X. You can suggest to do Y and if the client clears it then you do Y, but only if the client tells you to do Y. If I was the client I would be furious. If the client or I want to shoot ourselves in the foot by building the project on framework A or language B then it is our right to do that.
One thing that separates a good programmer from a great programmer is to recommend technologies and explain why, but no matter what you build what your told to. A great programmer will warn me and explain why, but if that programmer is told to do it anyways then they damn well better do it as they were told.
What if everything has turned out great for the client and he loves the result? Is it fraud if you "harm" someone, but they don't care?
Verified on Firefox, Chrome, and Opera.
I am not entirely sure how common it is, but it should be a small fix and won't hurt to support smaller resolutions on the desktop as well. Thanks for the feedback.
On mobile devices there shouldn't be a fixed sidebar. The content should use the whole screen with ~45 characters / line.
I had a surprise when I powered the phone back up (having left your site in the browser when it powered down). The second screenshot shows what happened after that power-up. I'll assume that when it re-rendered, it used a different media type ... or that you somehow caught it after the fact? I guess I'm also assuming this is how the mobile site is supposed to look (scrolled all the way to the top).
Now, it still isn't a good idea to substitute frameworks, but without it being contractually agreed upon, it would be hard to argue fraud.