I'm going to be developing an Intranet site for my specific plant, and our company standard for web-development is IIS + ASP.Net + VB.Net + Microsoft SQL Server (note that we have about 10+ plants). The Intranet site will only be used by my plant, and I'm the only one who will support it. I'm much more proficient with a LAMP setup, and I could do development and problem solving much more rapidly with PHP than I could ASP.Net. Even though the company "standard" is ASP.Net/VB.Net, most of what the company does as a whole is to purchase third party software (which is usually Java based), and very, and I do mean very few people in the company even know VB6, let alone ASP.Net/VB.Net.

That being said, is it better to violate the company standard and go with the setup that I can support better, or is it better to go with the setup that the company can support better if I ever were to leave, even though no one currently in the company can support their own standard anyway?

Some additional factors to consider in my personal case:

Again, this is only for my plant, and I'm the only one who will ever be supporting it unless I leave the company, and then my replacement would be supporting it. Not someone else already in the company.

The company does very little development with their standard anyway.

Hardly any of the companies existing software uses their standard.

If I choose the company standard, then I have to use the Express version of Microsoft SQL and a Windows 7 OS. From my readings, the Express version is okay for business use, but the database size is limited.

The key word here is violate. You've chosen the right word, and just reading your own question should tell you that this is a pretty dumb idea. They've chosen the standard for a reason. If you disagree with that choice, you should channel it upward formally.
–
Joel EthertonDec 27 '11 at 2:03

3

"I do mean very few people in the company even know VB6, let alone ASP.Net/VB.Net." I don't really see what that has to do with anything. VB6 is ugly legacy code- the fact that nobody knows it is a really good thing.
–
DeadMGDec 27 '11 at 2:31

1

@DeadMG, The issue there is none of them know VB.Net either. So, what's it matter which language I use? They'd still have to hire someone else to support it if I left.
–
druciferreDec 27 '11 at 2:38

3

SQl Server Express supports up to 4gb databases. That is usually enough, if it isn't then some other database is needed and you should probably take that up with the relevant people (IT guy, superiors etc.)
–
HolgerDec 27 '11 at 9:47

3

@Baboon, yeah, it's not like sites like facebook would ever use something so unbusiness-like
–
SWekoDec 27 '11 at 9:49

7 Answers
7

Again, this is only for my plant, and I'm the only one who will ever be supporting it unless I leave the company, and then my replacement would be supporting it. Not someone else already in the company.

1 -- Don't Assume you're the only one who's going to support this. You do like your sick time and vacation, right? What if you need to take extended maternity/paternity leave or something? Who's going to support your app then? Also, what if you'd like to talk to someone about technical problems specific to your company? What if you'd like to have code reviews? Or need help with a tricky bug? In all these cases it helps to be amongst others with insight into the technology you're using -- specifically how it can be applied to solve your company's specific problems.

The company does very little development with their standard anyway.

2 -- Just because some document exists doesn't mean its really the standard or means anything. It may simply mean that there's a group of politically influential individuals advocating this approach, and it may turn out there's other sub groups taking different approaches.

Your problem may simply be that the "standard" has evolved to some de-facto, undocumented state that conflicts with the documented "standard". Or there may be many little unofficial groupings of people using different "standards" -- with one of those groups managing to make their "standard" made official. You probably need to ask around to figure out what others in your group -- who might also support you and your app -- consider best practices. Ask what they feel comfortable with you using. Map out the real technology landscape of your company and figure out where the know how is. Just like any good piece of evolving tribal knowledge the only way you're going to know how to proceed is to talk to people.

3 -- Don't pass up professional opportunities to learn new things. You have to guard against being pigeonholed in this industry. Be nimble. You may have an opportunity to gain some breadth and learn a new way to solve a problem. Not to mention you're gaining new skills for your resume. It can mostly only help you to have to step outside your comfort zone to do something new. That being said, if the different/new thing is so extremely niche that you don't think you or any future employers will get any value from those skills, then maybe this isn't such a great opportunity. But getting a chance to be both an ASP.net and LAMP expert will certainly open your eyes and can only help your career. There's nothing like a real project with a deadline to force you to really learn something.

So my advice, don't go it alone. Figure out where people really stand and decide where you can best fit in. If you need to step out of your comfort zone, use this as an opportunity to grow professionally.

+1: You will be supporting this as long as you work there. However, if you leave, someone else will be supporting it.
–
unholysamplerDec 27 '11 at 3:17

1

This is a good answer, but I would add that the OP should speak to his/her manager about the tradeoffs to see how strict they consider the standard, and whether they'd approve his/her use of another stack for this project.
–
Mike PartridgeDec 27 '11 at 14:51

Don't Assume you're the only one who's going to support this: also, this way people can re-use code from eachother, instead of re-inventing the wheel every time we need something that rolls.
–
KonerakDec 27 '11 at 15:09

2

The quickest way to become stuck in a position is to make yourself irreplaceable. If you cannot be replaced, you cannot be promoted.
–
Burhan KhalidDec 27 '11 at 18:55

That being said, is it better to violate the company standard and go with the setup that I can support better, or is it better to go with the setup that the company can support better if I ever were to leave, even though no one currently in the company can support their own standard anyway?

It is a management decision. Make them know your concerns and insistformally on changing.

That said, a language is a tool and you must choose the right tool for a job; make them understand that you don't screw a screw with a hammer.

Important to note that, in the context of the question (given the level of detail available) ASP.NET and PHP are both the right tool for the job in that both a very capable platforms
–
MurphDec 27 '11 at 14:05

1

ASP.NET is arguably more capable, it's just that the op knows php better.
–
KevinDec 27 '11 at 16:57

1

@Kevin, The only reason I could ever argue that ASP.Net is more capable than PHP is that it integrates with AD/Windows security better even though it is still possible to integrate PHP with AD/Windows security. Outside of that I have seen no advantages of ASP.Net over PHP.
–
druciferreDec 28 '11 at 0:19

By your own admission you know php much better so it's not surprising you would say that.
–
KevinDec 30 '11 at 5:29

Do you have any aspirations for promotion, or working on other projects? If so, I suggest that "doing your own thing" will have two negative effects almost certainly resulting in (paraphrase) "I will be the one supporting it, until I leave"

Because you chose not to follow the company standards shows you are not particularly suitable for more senior roles, as you are unable to follow simple instructions.

Because you chose not to follow the company standard, it will be your problem that no one else in the company can support your code.

If you choose to use the standard, it will not be your responsibility to continue to maintain the product when (if) an opportunity for promotion or another project arises.

The other way to look at a ludicrous analogy. I move to a country where they drive on the left, however, I am much more used to driving on the right, I prefer to drive on the right, because of this, I am better at it and can drive faster. Should I drive on the right?

+1 for the last paragraph - especially as in terms of capability of the platform you can't really make a case for choosing PHP over ASP.NET. There may be an argument for changing the standard based on capabilites of dev teams...
–
MurphDec 27 '11 at 14:08

Companies have standards for a reason, if there is a formally stated standard that says to use x, then youu need to justify y.

This doesn't mean that you can't use y, it does mean that you should understand the reasoning behind the standard and and get approval before violating it.

Perhaps after you understand why, you'll no longer want to violate it, perhaps you'll see that it needs to be changed or scrapped, or that it doesn't apply in this instance so that using y isn't a problem.

If it applies, then unless you can get it changed, you should follow it. Company standards aren't quite on the same level as direct orders, but your employer has a reasonable expectation of you following both unless they violate the law.

@Mister Smith Even so, you still need to talk to your manager or somebody with decision making power in order to verify those reasons. See my answer on this question.
–
Mike CelliniDec 27 '11 at 15:52

1

@MisterSmith: valid marketing reasons are just as important, if not more so, than most techinical consideration. If you don't know the reason, you don't know the validity of the reason.
–
jmorenoDec 27 '11 at 16:12

Yes, but reading the question I had the impression that there's no manager on top of him for this project, and that no one really cares about enforcing standards. If that were true, I see no reason to blindly follow standards instead of just chosing the better-known technology.
–
Mister SmithDec 27 '11 at 17:20

@MisterSmith: It's not blindly following standards, it's blindly following company standards. There's a difference. And if no one cares, then it should be easy enough to get permission to violate or even change the standard.
–
jmorenoDec 27 '11 at 18:25

-1 This is, imho, terrible advise. You might as well go telling people to write ugly, incomprehensible, obfuscated code with no (or worse: wrong) documentation just to make themselves indispensable. Know that if you make yourself indispensable, you will never be able to move up in the company, but be stuck doing what you were doing and maintaining your own (crappy) code for ages!
–
KonerakDec 27 '11 at 15:14

@Konerak Well, you are right. I was not being serious about it. I will edit my question to keep you happy.
–
Mike NakisDec 27 '11 at 16:39

Sorry Mike, I didn't get the irony part ;) I was glad to see an answer about indispensable, because it gave me the opportunity to react and people would read about it.
–
KonerakDec 27 '11 at 19:37

I think that you can anticipate many of the problems that could arise from this and make a detailed plan for if and when you ever had to leave the company.

One problem that could gum up the works would be if you left and HR had to search for your replacement. Given they either actively try to understand what you did and hire according to the skills needed -or- simply look at the original document that spec'd out the policy of IIS/ASP.NET/etc. and blindly hire someone with those skills to maintain your LAMP code (on the "because it says so" principle), I think the latter is much more likely.

The easiest thing (in the long run) is to do what fabianhjr recommended and change the standard. Change it to include both Microsoft and LAMP if they are resistant to a full switch.

@druciferre All the more reason to respec everything then. If this project becomes a large part of your job responsibility and there were some eventuality where they would rehire based on your original job description, they'd be up a creek (not that you'd have to care at that point, but just for their sake).
–
jonscaDec 27 '11 at 2:57

In this case you need to follow the standard. If the standard doesn't seem to apply, you need to talk to your manager about doing it in a different language.

Of all the standards to follow in development, I personally feel that language choice is the most important. Ignoring the standard language choice in favor of one you are more comfortable with leaves co-workers and/or successors up a creek without a paddle, because they may not have the skills to work on your project. A company's hiring decisions are based on language choice so decisions like these can have a major impact. Introducing yet another platform/language may force the company into a tight spot when they start hiring other people.

Beyond the language you have to consider internal support for the LAMP server. Who is going to administer Apache? How about MySQL? Does the company's software run on a different database? Will the administrators be willing to administer a new platform. Even if you plan on administering these services, the duties could eventually fall on somebody else. If you plan on administering the services, will the network/server admins allow you to do so?

The ramifications of introducing a different platform can be wide and deep. Not following the standard may end up affecting many people besides yourself. Even though you are more proficient in LAMP than ASP.NET, building on that platform could end up costing your company much more in the long run. Key here is communicating with your manager and understanding the effects of the final decision.