I was thinking a whole lot about the opensource solutions, .NET and alternatives. Actually, it took me a ton of time and multiple ongoing discussions on the topic to come to the better understanding on what I want to get from technology, and how it matters for me.
It seems to me that developers are stuck in the .NET Framework, and there’s not much chances of any open source solution to get into existing development process. At first, there’s no such thing as centralized repository. Best practices are stated out, but are still quite narrow.
Friend of mine, who’s always interested in Rails / Python, asked me about real reasons for him to switch technology. Being honest, I wasn’t ready to fight, so I started listening to what he expects. It turned out that essentials, such as migrations (migrator.net), dependency injection (Unity, Castle, Lin-fu), automated deployment (msdeploy can handle most of it), continuous integration (cruise control .net, team city), mocking frameworks, factory generators, mvc frameworks, orms (even thou i don’t like neither one of those), routing handlers, mailing systems, distributed caching systems, key-value storages, they all exist. So, basically, I there’s no way to tell, that you can’t do certain things with .NET. What’s the problem then? Hosting prices? You’re probably kidding me. That’s not kind of money you should really care about. Ukrainian outsourcing companies will take care of keeping the development cost low, so you’d be able to cover your costs for hosting.
Having all those fancy things, I can tell you for certain, that I learned most of them from other technologies, and just later on found out that there’s such things in .NET world as well. Still, I haven’t seen any project where all that variety of things is used, or even planned to be used. Maybe, that’s legacy issues. Just imagine a manager in an outsource company, who barely convinced customer to switch from CVS to SVN just 2 years ago, upgrade to .NET 3.5 from 1.1 just several month ago, trying to get the budget to start using Memcached in his project, or starting HTML/CSS generation with Haml/Sass. Hopefully, these kind of things do exist. I hope. Well, some people are stuck to Web Forms, and chances of switching to MVC are hazy.
Just recently I was really upset that some people in the place I work don’t know what Dependency Injection is and have barely ever written Unit Tests. Or one guy, whom I interviewed a year ago, who was having problems with combobox, who’s value was empty on every postback just because it’s contents were empty when the page was rendered, and he couldn’t solve it all with JavaScript.
You may say, that OK, but same exact things are happening in Java, Ruby, Python. Unfortunately, yes. They certainly do.
The only thing I can tell is that most of the projects I see here in Ukraine, are either trivial, or legacy, or enterprise. I’m more about the Public Web. And a bit more about open source.
Being a Web developer, or being an Engineer is a bit more than being a programmer. You should be a JavaScript-ninja, SQL-maniac, half-blooded sysadmin, usability freak, fancy architect, seeker, analytic, early adopter, open-minded person, technology geek, optimization monster, etc etc etc. That’s where I want to get. I’m a bit tired of having to do boring stuff whole day, and then digging into real tech for whole night. It’s demolishing. I really want to do some stuff that matters, be agile, and build systems, not just be a third-world support engineer. And, for some reason, I’m quite tired of .NET.
