3 ms·
Thanks for such a well thought-out response. To be clear, I'm most comfortable working in the .NET framework (~5 years experience), but while I can see where yo
by kohanz 13y ago
Thanks for such a well thought-out response. To be clear, I'm most comfortable working in the .NET framework (~5 years experience), but while I can see where you're coming from, I still disagree with the overall perspective.
The "jack of all trades master of none"
To me, the trade in question is software development/engineering. If we are tradesmen, then .NET is one of the toolboxes available to us. Yes, it's a very advanced and developed toolkit, but I don't view it as an occupation. Now if you constrain yourself and simply call yourself a .NET developer and not a software developer, I suppose that would be an exception.
Will .net last forever? I don't know. Older Microsoft technologies are still around and .net is still in active development. I don't see Microsoft giving up the massive investment they have made in .net any time soon.
My experience is mostly on the desktop side (application dev for medical devices) and it has been the opposite. Look at technologies like WPF and Silverlight for example. I don't think you can honestly say that Microsoft developed these to maturity and didn't to some extent abandon them.
Your language/framework defines the outer capabilities of your application, the performance of your application (read: scale), as well as what parts of your application can be reused from parts made available by others. They are things to be mastered. .Net takes a long time to master. The "jack of all trades master of none" attitude is what pains me. Show me that ruby is better for me in an area that .net is lacking and I'll learn it. Show me that it's better in all of the areas I care about and I'll master it. That will be a hard sell. .Net is a fantastic platform; well organized, discoverable, consistent in quality, exhaustive in scale, performant, and still growing.
I think it's a bit contradictory to say that you need to master a language to understand it's capabilities, yet you won't explore other languages unless it's proven to you that they have capabilities that .NET lacks. That said, I think your viewpoint is mostly valid if you have full control over what technologies you work with (e.g. starting a startup, or only applying to .NET companies). However, that is true for very few developers and this is where the whole idea of fretting over the future of .NET comes from.
In my field (medical imaging and devices), I have used plenty of .NET, but I could never rely on it entirely. The foremost medical image processing and visualization frameworks and libraries still reside in C++ and although there are .NET wrappers, they are almost always limited, several releases behind, and with a much smaller community (there are a few exceptions).
To be clear, I love .NET and even moreso Visual Studio. However, if I'm asked to propose a technology for a product, I'm going to do my research and pick the one that I feel is best-suited for it and not let my .NET experience be a guiding force in that decision (unless this is an extremely time-sensitive project and I represent a significant amount of the developing team, then of course it needs to be considered).
- computerslol 13y agoThank you for a well thought out response. One of your up-votes is me. I understand where you're coming from and I don't see your viewpoint as wrong. Mine is different. I see programming as part of an art, the way applying paint is part of creating a painting. It is by-far not the only part. I totally agree that a good programmer should branch out and gain a better understanding of the world, but I believe the branching out should happen in a different direction. To call someone that writes books a writer is an oversimplification of their job. Writers, like programmers, specialize. One writer might write non-fiction books in English in the murder mystery genre for an adult audience. This writer has had to develop a solid experience in and handle of the English language. They have had to research and understand murderers, the law and police. They need a solid handle on psychology to be any good. They need to understand the implements of murder. They need to understand the standard plot points of their genre, and how far they can be bent (to interest readers) before they break (and turn readers away). They need to understand pacing, and how to capture an audience's attention consistently. How to keep their material accessible to expand their audience as much as possible, or how to narrow their focus to be a must read for a certain niche. They must know how to get published and avoid getting swindled. Putting words on paper is only a very small part of their job. If our hypothetical writer is going to branch out into new areas, he's more likely to gain success writing a sci-fi novel (where he can reuse most of his skill) or starting his own publishing company than he is in learning French to write books for the French audience. Learning basic French is not hard, but it is very hard to know French like a native French speaker (an expectation of your French readers). If he is thinking in English and writing in French, his efficacy is already compromised. If you are writing for the French audience, you will have to take French customs and the French psyche into account. French readers are likely very different from the ones he’s used to, so he needs to understand the psychology and mind-set of his audience and his characters. Publishing a book in France is also likely completely different, with different ways to lose money in a book deal. Learning basic French will only help our writer when he needs to integrate a French character into one of his books. It would be a little silly to tell a writer that he needs to identify as an English writer if he doesn't know French. I make consumer products. I am a .net platform developer. I started my career as a designer 14 years ago; and soon realized that there is too much compromise in just graphic design. Every design I submitted at the company I worked for had to be changed (often dramatically) to fit within technical limitations. My designs were created to appeal to my audience, and due to technical limitations, that appeal was compromised. I had already been programming at home for a few years, and decided it was time to become a professional. The second month at my design job I asked to be put on the programming team as well. At the time, we were writing in legacy ASP. I never had a design compromised by technical limitation ever again. When .net was made available, I jumped on it immediately. I loved the ideas behind it and I couldn't wait to be a part of it. A year or so later, I started realizing that the database design for a new product I was building was hampering my ability to write clean software (also due to “technical limitations”). I asked to be added to the Database team as well. I became a DBA. I was still a designer and developer. A year later, I became a PM as well, and so on. At this point I have held the titles of senior .net architect, .net team lead, senior .net developer, senior MSSQL database architect, senior product manager, creative director, senior graphic designer, business analyst, and research scientist. I am always a .net developer, but in every job I've had at least two other titles as well. Each of these roles interface with the others, and knowing the others makes doing each of them much easier. My job is to make quality consumer software. My job is to appeal to an audience. I learn whatever I need to in order to better appeal to that audience. As a whole my audience doesn't care what the software is written in. They care about whether or not it’s easy and pleasurable to use, whether or not it’s fast, intuitive, and solves their needs efficiently. Now I have my own software company. ----------------------- WPF works, has a number of great features and tricks, and it’s fast if you’re using it right. I assume the developers on WPF moved to the Metro dev team when that ramped up; I don’t know. Maybe they’ll be back. My only issue with WPF is its half-hearted 3D support. Silverlight was an experiment, and it showed. It’s still possible to write great stuff on Silverlight, but the limited audience keeps it from being a solid solution unless you’re doing something that can’t be done as well using something different (DRM video for example) or you are creating an intranet application and have control over all of the machines that will be using your application. It’s a shame, but that future was easily foretold when it was announced. ----------------------- I don’t think you don’t have to master a language to understand its capabilities, but woe to he that tries to exceed them without having a solid understanding of what’s going on under the covers. In my experience, .net shops are .net shops. Maybe I have been lucky. In my experience it’s pretty easy to write your own wrappers for C++. What sort of projects (other than projects targeting non-windows machines) have you encountered where you suggested not using .net?