This is tangentially related to my previous question regarding using a "fringe" technology. I am the "IT Manager" (read: sole IT person) for a tiny company with 5 other employees including the owners. As such, I'm in charge of everything that goes on as it relates to technology. I am in the process of initiating a complete, ground-up rewrite of our existing ERP system, which was hacked together using VBScript and SQL Server about 5 years ago and is quite literally a cesspit of horrible code and bad practices.
Let me first say that the business I work for is incredibly cheap, and my budget to do anything is pretty much $0.00; I cannot hire additional people to help me out (unless I want to send modules to a site called AffordableProgrammers.com that outsources to India for $10/hour), and I cannot requisition any technology components. I don't even have a copy of Visual Studio in the office (not that I need one, since all the current maintenance work is done in Classic ASP). Our company has a single license of SQL Server 2005 that runs our database(s) but it runs on a two-processor server because the company won't pay for an additional license, saying the $5,000 price tag is "ridiculous" and that they already spent $5,000 on one license.
My programming skills are, I admit, mediocre at best. I know a little C# but haven't touched it in around 2 years; most of my day job right now is either patching stuff in the terrible VBScript code or writing SQL queries to aggregate/load/query data. Before I get too into architecting a new database schema and gathering requirements for the new application, I need to determine what technology stack I'm going to use. The biggest issue here, of course, is that I have zero budget since my boss(es) are unwilling to spend money even on something relatively trivial.
I'm not terribly proficient in any programming language, really - 95% of my career has just been doing maintenance of existing programs, and I've never been in a situation where I can actually develop a brand new application from the ground up, my way. I'm not sure which route to take as far as picking a technology stack, because once I choose one I want to stay with it. While the logical course of action would be to use ASP.NET/C#, the application cannot be scaled properly due to zero funds to get additional equipment; for instance I would like (and we really need) to have a small data warehouse spun off of the OLTP database (the current database mixes the two together and runs slow as molasses because of it) for reporting, but with .NET and SQL Server this would require at least another $7,000 or so which just isn't available for use. The benefit of course is an easy-to-use interface, since a lot of my activities involve importing data from Excel and manipulating them via SQL Server - it's something I want to get away from and implement some actual workflow processes, but we routinely have tight deadlines due to the fact we update our product listings every 3 months; our main (only) customer is the government and we are only allowed to update our prices quarterly, so each quarter is a rush to get data updated, processed and loaded.
My options here seem very limited, and compounded more by the fact that I'm by no means an expert at programming (I admit I'm trying to improve my programming skill). I've been increasingly looking at open source to cut costs without sacrificing efficiency at the hardware and application level, but I'm still a little reluctant to do it on the software level even though the price is right for my bosses because I would have to learn a new list of technologies simultaneous with writing an ERP application (although even with that, I would be able to write it better than my predecessor) for what I call a "VSE" - Very Small Enterprise (as we are a really small business but require a lot of "big boy" features). I have too many choices that can fit the bill, but the one logical choice is nearly ruled out because it costs money that the company is not willing to spend, no matter the benefit they would obtain. Technically speaking, I own an MSDN subscription but I can't use the stuff included in that for work (as it's licensed to me as a person and I'm an employee of the company, not a consultant) and even so I couldn't use it for production systems.
Should I look at and evaluate open source technology stacks, since I know for a fact I won't be able to requisition any money to spend on new development? At this point in time I can't just up and leave the job, either, I'm stuck for the foreseeable future and I want to make a difference at this small company that has never had a knowledgeable technology person who wants to automate/document/do things properly.
EDIT: We aren't an ISV nor a startup, so I can't make use of Empower and/or BizSpark to get free/reduced cost Microsoft tools.
EDIT (10:22PM): I was originally evaluating use Ruby on Rails for our applications, since speed is always of the essence with this company. However, Java is another good alternative and would let me leverage my C# skills as well as be less restrictive as Rails; the current implementation has a lot of weird quirks that seem tacked on, and there are quite a few workfows that need to be implemented; not being an expert with Rails (I admit I've done little more than a couple of the tutorials) I'm not sure if Rails would be working against me to implement things of a more "enterprise" nature such as workflows and custom logic such as 'authorization is required to override shipping costs on quotes for more than $500' or 'if the item added is one of a specific group of items that must be substituted for another equivalent item and the customer type is government, replace the item entered with the equivalent; if no equivalent item is found show a warning and do not add the item to the quote'. Since we're a federal supplier there are is fair bit of somewhat complex business logic.
I think Rails would be a great idea for the customer-facing storefront, but maybe not for the ERP/CRM/Fulfillment system in the back end, where the real "enterprise" stuff has to take place. So maybe something like Rails for the front end, where it shines, and then Java for the back. As long as the database is the same there should be no problem, and if I really had to I could run Windows/Tomcat/Postgres/Java (WJAP?) on one server for the back office system, since we already have a Windows box, and a Rails front end on a cheap Linux box and have it talk to the Postgres database. I need to investigate Rails as a solution a little more, since there will be existing data from our supplier to use and it doesn't quite fit into Rails' assumptions and conventions. Python is another option, as well, and more customized with something like the Django framework, although I'm less familiar with Python/Django than Ruby/Rails.
FINAL EDIT: After a great deal of thought and topics discussing it, I've ultimately decided to stick with what I know, that being the Microsoft stack. I see a lot more .NET jobs in my area than I do open source (or anything other than .NET, actually) and I feel that my best move, career wise, is to brush up on .NET while earning a steady paycheck, and then head for the hills as soon as I get a better offer. As much as I'd like to turn this company around, it's nearly impossible without buy-in from management and my bosses don't seem to care about anything apart from turning a quick buck.
They don't just not want to spend money on IT, they don't want to spend money on anything related to this business - for example, they only buy residential DSL, won't pay for a water heater (so there's no hot water), won't let us turn the heat on when it's cold, etc. However one of the owners has started 4 additional businesses in the time I've been here, including two non-profits and spends 90% of his time focusing on those (he runs them all out of our office - he's in the conference room with his non-profit partners right now) and talking about how it's going to change the world.
FWIW we are a supply company that sells products to the government, so the reason for my "enterprisey" tone is because we have a lot of compliance rules to follow and the owners want to have it all automated since right now I get dumped some spreadsheets and have to manually load data from them together, usually 4 or 5 times because my boss isn't sure exactly what he wants to do.
I think my best career move is to leave, because my skills are stagnating here.
Thanks everyone for your advice!