My idea of a software engineer is that of a person who uses software and technology to provide solutions to problems in businesses/industries.
The general conception of
Software Engineering Equals Coding,Coding and more codingis absolute bullshit as far as I am concerned. An engineer must be involved in the design of a solution and implementation of the same using the right tools and technology.And, to aid the engineer in building his solutions quickly/easily/efficiently an industry itself thrives to provide tools,frameworks and platforms. A lot of big and small players are involved in this industry,with varying degrees of success and market penetration. Each player remains in market owing to some specialty they are able to provide to their customers which the others are not able to match.
Now,from the point of view of an engineer who is interested in developing products/solutions for solving a set of problems,lets observe the requirements of a tool he/she would want to acquire.
1)Ease of use
Intuitive UIs,complete and concise manuals
2)Features that aid reduction in production time
Methods to accelerate commonly used operations
3)Facilities to let developer focus on business logic
Abstraction of internal technological details(left to developer to choose)
We see these things implemented with varying degrees of effectiveness in the various tools,IDEs,frameworks and platforms that are popular in the market.
The whole idea is that the developer's brain,effort and time has to be devoted only to solving the given problem logically and not in fiddling with the tool/technology itself. Its for this reason that companies are ready to invest on costly development environment like the ones ###@#@$*** Microsoft sells. But .NET and its accompanying tools are so royally messed up that a developer ends up wasting almost half of his/her time circumventing some technical issues or hacking it(as it is called). And it has to be done so frequently and in inexplicable ways that if the software moves to a maintenance team,the developer will have to make sure not to come in contact with that team(if he values his life i.e).
If I start listing the stupid and frustrating bugs that come up with Visual Studio, I can fill pages(that too in this short period of exp).
Another fact that I would like to point out here is that,though bug circumventing and hacking of tools are needed in other platforms as well,a few well placed Google searches can place you at a good position in those cases. In case of M$, for most of the crazy problems, you can only see questions been posted by poor developers like yourself. No official solution or usually ANY solution at all are usually present. If something is present, it might be either someone saying "I too have this problem..Please Help!",or someone pointing to something that does not work at all or some troublesome suggestions like reinstall framework/IDE or even OS :D :P.
So now I am getting to know in First Person why M$ development environment is royally ****ed up. They should realize that developers are people with brains and should let them utilize that more to solve more and more problems with more efficiency. The current state of affairs only aid in frustrating the developer and stealing his valuable time and clarity of thought. They should seriously stop imposing the junk technology on smart people.
Maybe they are just afraid that once people use their brains more,they will migrate to other platforms :P :P