reWhy you can't be a good .NET developer
This post is in reply to Rob’s post, go ahead and read it, I’ll wait.
My answer to Rob’s post can be summarize in a single word:
In particular, this statement:
it is impossible to be a good .NET developer. To work in a development shop with a team is to continually cater for the lowest common denominator of that team and the vast majority of software shops using .NET have a whole lot of lowest common denominator to choose their bad development decisions for.
Um, nope. That only apply to places that are going for the lowest common denominator. To go from there to all .NET shops is quite misleading. I’ll give our own example, of building a high performance database in managed code, which has very little lowest common denominator anything anywhere, but that would actually be too easy.
Looking at the landscape, I can see quite a lot of people doing quite a lot of interesting things at the bleeding edge. Now, it may be that this blog is a self selecting crowd, but when you issue statements as “you can’t be a good .NET developers”, that is a pretty big statement to stand behind.
Personally, I think that I’m pretty good developer, and while I dislike the term “XYZ developer”, I do 99% of my coding in C#.
Now, some shops have different metrics, they care about predictability of results, so they will be extremely conservative in their tooling and language usage, the old “they can’t handle that, so we can’t use it” approach. This has nothing to do with the platform you are using, and all to do with the type of culture of the company you are at.
I can certainly find good reasons for that behavior, by the way, when your typical product lifespan is measured in 5 – 10 years, you have a very different mindset than if you aim at most a year or two away. Making decisions on brand new stuff is dangerous, we lost a lot when we decided to use Silverlight, for example. And the decision to go with CoreCLR for RavenDB was made with explicit back off strategy in case that was sunk too.
Looking at the kind of directions that people leave .NET for, it traditionally have been to the green green hills of Rails, then it was Node.JS, not I think it is Elixir, although I’m not really paying attention. That means that in the time a .NET developer (assuming that they investing in themselves and continuously learning) invested in their platform, learned a lot on how to make it work properly, the person who left for greener pastures has had to learn multiple new frameworks and platforms. If you think that this doesn’t have an impact on productivity, you are kidding yourself.
The reason you see backlash against certain changes (project.json coming, going and then doing disappearing acts worthy of Houdini) is that there is value in all of that experience.
Sure, sometimes change is worth it, but it needs to be measured against its costs. And sometimes there are non trivial.
More posts in "re" series:
- (19 Jun 2024) Building a Database Engine in C# & .NET
- (05 Mar 2024) Technology & Friends - Oren Eini on the Corax Search Engine
- (15 Jan 2024) S06E09 - From Code Generation to Revolutionary RavenDB
- (02 Jan 2024) .NET Rocks Data Sharding with Oren Eini
- (01 Jan 2024) .NET Core podcast on RavenDB, performance and .NET
- (28 Aug 2023) RavenDB and High Performance with Oren Eini
- (17 Feb 2023) RavenDB Usage Patterns
- (12 Dec 2022) Software architecture with Oren Eini
- (17 Nov 2022) RavenDB in a Distributed Cloud Environment
- (25 Jul 2022) Build your own database at Cloud Lunch & Learn
- (15 Jul 2022) Non relational data modeling & Database engine internals
- (11 Apr 2022) Clean Architecture with RavenDB
- (14 Mar 2022) Database Security in a Hostile World
- (02 Mar 2022) RavenDB–a really boring database
Comments
I agree wit you. I'm writting 95% code in c#. The other 5% is JS.
I agree that Rob's post is too harsh and I also agree that a lot of developers seem to enjoy always chasing the latest shiny tool and not doing anything hard.
Having said that though, I think the .NET ecosystem has a real lack of developers that are willing to build complex open-source tools. Compared to JVM land where a lot of really nice stuff originates all the time .NET is really behind. Even some of the more prominent .NET open-source libraries are just ports of JVM libraries to begin with (e.g. NHibernate, Log4net, Akka.NET). So in that sense I do think that .NET is rightly perceived as being skewed more towards "lowest common denominator" than "exciting".
I had the exact same reaction. How can an experienced developer (or consultant or whatever) says something like this ... I still think it's just a troll ! I thought these stupid debates "XXX users are just stupid" were over since a long time. And I don't think this kind of statement will help him if he wants to get freelance work in the future.
C# is just a language, what Rob says is basically the same as saying that good literature can only be written in english and not in french.
Yeah but how can I possibly be successful if I am forced to use tfs over git ;)
Actually I think Rob Ashton's post is spot on, sadly. My experience has been much more of The Expert Beginner variety that Eric Dietrich talks about. Or the Derpy developer Rob mentions.
However, I don't think it's just .NET. It's Java and any other language that might possibly be used in a corporate environment.
Sadly, I can also relate to Rob's post. It's not that C#/Java are bad, it's that those languages tend to attract devs that have 2 traits because they are popular. 1. They learn C#/Java to get a job (not because they like it). 2. They aren't willing to learn anything new outside of that language/platform.
When you have a developer on your team that is like this, introducing new concepts/skills/technology becomes difficult because when that person complains to management, management thinks you are making the project "harder" to maintain. And you will hear a manager say phrases like "I need to be able to hire developers that can maintain this". So basically, I can only use my time at home to hone my skills because my manager has decided that our "lowest common denominator" is the norm. Oh and as a side note, I am more productive using elixir than I am in C# only because the functional mindset "fits" my brain better, but this is very subjective and would not necessarily be true with all devs.
I'm torn between the two sides of this argument. I'm a C# developer who has done LOB and B2B apps, and I can empathize with Rob's obvious frustration. Some thoughts: - Is it possible that the same conservative enterprise mentality that caters to lowest denominator code and also informs the decision of what programming language and environment to use? In other words, you don't see the same lowest common denominator mentality with Ruby or Python developers because Ruby and Python aren't safe enough languages to use in a conservative, LCD enterprise? - Does Microsoft's financial need to have lots of C# developers drive their decision to make the barriers to entry for C# developers lower than they would be for a Scala or Erlang developers? Like the analogy of a moth needing to struggle to get out of its cocoon so it's strong enough to survive in the wild, does Microsoft favor quantity over quality? - Is it as hard to get a team of Ruby developers to use test-driven development or continuous integration, or switch to git, as it is to get a C# team to use them? I can state from experience that getting team ownership of these things has been historically difficult, and I'd suspect that a survey of developers would show .NET developers to be behind the curve with lots of industry best practices compared to newer languages. - Are there other platforms besides .NET where there are major coordinated releases done with much fanfare, and always focused on "the shinies" and things that make a developer's job even easier but even more invested in the Microsoft sphere of influence? The older I get, the less I feel like the hottest new release of Visual Studio is enabling me to get to more loosely coupled, SOLID, easily testable code.
- On the flipside, is a team of mediocre C# developers actually able to use these tools to churn out more ("good enough") code and be more productive ("productive enough"), albeit at the expense of code quality? Compared to, say, a team of Clojure developers?
The article that started the back and forth on Twitter is an interesting read, too, and strikes a chord with me: http://byterot.blogspot.co.uk/2016/06/after-all-it-might-not-matter-commentary-status-of-dotnet-dotnetcore-csharp-oss-fsharp-dnx.html
"If you think that this doesn’t have an impact on productivity, you are kidding yourself."
Well, as someone who DIDN'T leave .NET (starting with 1.1) for anything shiny i'd tend to call bullshit on that one, at least on the implication that said impact HAS to be negative. For an average developer, perhaps - they'd have to invest much time for little result but a newly learned syntax.
Looking at, say, your level and above, i'd assume the opposite: once you grok procedural, OO, functional and meta-programming at a deep level, what cost is truly incurred by switching languages, frameworks, ... and how does it compare in value to those little nuggets of wisdom and experience (the Easy Power of JS, Erlangs process/fault-handling, ...) that can (only ?) be gained by leaving behind the familiar shores of .NET ?
Perhaps it's simply a question of preference - does one chase technical excellency FOR ONE SELF at any cost or bows to the requirements of an actual, multi-person business ?
As for myself, Robs general trust hit the mark quite well and did in fact inspire me to stop merely READING smallish snippets of "foreign language" code but schedule some time to actually TRY the FULL experience of another programming language in its natural environment. Not differentiating between those two is a mistake i'd like not to repeat.
(He also got me with the wrist-thing: I've been positively happy with VS since VC 6 + VisualAssist, Resharper got me to the point where even the act of reaching for the mouse is an annoying interruption.)
I think Rob over-generalized, but I think you are being too quick to call BS. Don't forget, you work in an environment that you yourself control, where you make the product and development decisions for your team. The fact that you can effectively leverage .NET/C#/etc. in a high performance team is a tribute to both what the platform and your team are capable of. But in many ways your team is an outlier. I have no numbers to back this up, but I'd (confidently) guess that a significant portion of .NET developers work on enterprise/LOB applications. These are not the types of applications that require blazing fast performance, nor do such shops draw from the deep end of the talent pool. Such organizations are, by nature, resistant to change and platform decisions made by a random consultant ten years ago are difficult to change. Enterprise really is a much different beast that does, I agree with Rob, cater for the lowest common denominator.
If you can't learn a new technology at work, learn it at home. I am creating a for profit SaaS app in my spare time so that I can learn and use whatever technology I want, and make some extra money in the process.
At work of you're a senior or lead developer, you might have the power or leverage to introduce a newer more productive technology. Convince your manager that TypeScript or ASP.NET MVC or Angular 1 or 2 (insert your favorite new platform/tool/library here) have several benefits to the business. If the lowest common denominator developers are not happy about the change, THEY can leave the company.. instead of YOU leaving. They need to move up. Take charge.
While Rob has some points, his post is an exercise in lack of humbleness. He's basically saying:
He can't see that different people have different needs and preferences, and different types of development require different things from programming environments. If someone applied for a job at our shop with that kind of attitude I would veto that person after 5 minutes.
(No, we are not an enterprise shop although we do use C# for about 50% of our codebase. The rest is F# and Javascript)
I can not take anyone seriously who has frames existing on their homepage.
http://codeofrob.com/index.html
"The easiest way to progress is always to jump ship and leave" - this one is quite good So, does one really make progress through brownian motions? I'd say it's a good way of not making any progress at all but let's blame Microsoft, this always helps
Software has a purpose, in most cases it exists to serve the needs of the business, and often times if the software that serves the needs of the business was built by many many people over a long period of time. Architectural and other decisions are made with a combination of information about the use cases, and skills a team has at that particular time. Often times many years pass before anyone realizes a previous correct decision may now be a bad one based on today's requirements and available technology and resources. Modifying existing software to fit often radically different use cases is a challenge, often times it maybe much simpler just to write new software to deal with those new use cases, however that option is often overlooked, and assumed to be too expensive, so the legacy system gets more and more things developed in the old style, with the old technology added to it, whether or not the people updating it know better or not. I don't believe these scenarios are arrived at because of a particular language or platform, but because of the perceived cost of retrofitting the existing system usually seems lower than creating a new system, by the decision makers. In my experience, a lot of the primary software applications running large businesses are at least decade or more old, and rely on even older infrastructure technologies (databases, servers, etc). I believe that for most of what Hanselman calls "Dark Matter" developers this is their life. This isn't likely to change unless we developers can continuously prove that we have the skills and knowledge to solve new problems faster and cheaper, with new applications. The technologies we use, and learn about advance at a very rapid pace, where as businesses in general in regards to software, products, and sales do not. We need to help business continue to innovate in all areas so they can stay competitive and we can stay happy. Learn a new tech because you want to, not because it's impossible to be a great .NET developer.
Hey I'm one of those average c# enterprise developers. It turns out that I make too much money with to many bills to move jobs to a lesser paying job. If took a bunch of java classes then tried to get a job, I bet my salary would take a huge hit. I simple can't afford that. so I stick with what pays the bills. this discussion is a bit of an ivory tower point of view.
In a nutshell, Rob describes a decent way to hide yourself away from frustrations at work, and calls it progress. But no matter how hard you hide, you have to at some point deal with the other 99.8% of the population that don't think and talk exactly like you. Surely true progress is learning how to deal with a large chunk of that 99.8%, and the frustrations that can come with that, and not keep running to where the 0.2% is currently residing. In my opinion, that will progress you a lot better in your job, career and life in general. It may not come easy to him, but then he calls himself a smart person, he should be able to work it out.
@Roy Jacobs
It sounds like .NET ecosystem is lacking behind only because there are ports of JVM libs. But if you think about it, it is actually JVM ecosystem that is lacking behind. Because there are both ports and non-ports in .NET, meaning that the set of open-source libs is might be actually bigger: yes, there is NHibernate, but there is Entity Framework also, there is Akka.NET but there is Orleans as well. Ports are a good thing because they are just enriching ecosystem beside other non-ports.
@Dmytro, these were just some examples of course. Just take a look at all the stuff Apache and Spring is putting out, this is orders of magnitude more than anything in .NET land.
Giscard, To start with, there is a git bridge to tfs, so you work with git locally, and tfs remotely. You don't need to worry about that.
Ben, If you have been working on .NET since 1.1 you have in your head all the best ways to do pretty much everything you would need, you know the API, you know the issues, you know the workarounds. You have seen the errors, and you know what the root cause is. In most cases, just seeing the error is enough for you to know what it is. Compare that to getting stuck in a new platform, and getting an error. You have no idea what it means, and where to start. That is why this impact is almost always negative. And I'm not talking about the first 10 minutes when you gen a lot of code, I'm talking about spending a couple of days making sure that the encryption library you use is using the right padding semantics to be able to talk to the remote server, for example. Or understanding, at a deep level, the error conditions when you do an async I/O and it aborts midway through.
Ross, You are making too much money with too many bills, so you are stuck? Leaving aside the "problem" of making too much money, you do have some free time to expand your skill set, no? That is what you should be doing
Rob Ashton did some C# programming 6 years ago: https://github.com/robashton/RavenGallery
forgot my /sarcasm tags sorry ;)
Oren, let me start by pointing out that your SLAs as an Infrastructure provider are probably MUCH, MUCH tougher than those offered by derpy enterprise-focused companies like Ross and mine. I do think you'd be shocked by the kind, ammount and ... stupidity of flaws that make it into production. (Yes, i read about your Interview tales. Yes, i've seen worse stuff actually deployed to customers).
Lacking the time to elaborate: Getting lib L working within Frameworks F1,F2,F3 is something i'd consider a universal problem. Switching languages usually does imply switching libs which implies a cost. I'd apply creative accounting, spread the act of switching over a longish timeframe, start with smallish projects with few dependencies.... shouldnt be prohibitivly expensive.
As for "understanding, at a deep level, the error conditions when you do an async I/O and it aborts midway through.": As if any of my colleagues would be capable of that in .NET even after all those years....
RE Robs actual point i failed to address in the first comment:
"Dysfunction" seems to be at the core of this.
Any sufficiently large group tends to group-think by entrenching its patterns.
.NET seems to have been an "easy target" for those not sufficiently interested in anything beyond money
Therefore the inner consensus tends to "kindly do my work for me, dear machine/cloud provider/..."
"Magic infrastructure" is a no-go for those interested / involved in lowish-level stuff
"Not invented here" would be a solution but is not generally considered a "good" pattern (i disagree, btw)
The only remaining option is to leave for greener pastures or try to stay clear of the majority.
Arguments ?
There are pros and cons to both sides of the arguments, here-and frankly in just about everything in this world. This makes you both right, and both wrong in some aspects-although I see Rob's post as WAY more generalizing than Oren's-so kudos to Oren for that. In software, and in most of the world's topics...over-generalizing is nearly always wrong. This is the main reason why slavery happened, this is the main reason why oppression happens, this is the main reason most any prejudice happens, and I can think of no instance where over-generalizing was a good thing. Of course there are those who make these broad reaching statements for sensationalization of their viewpoint, and media has made this a common practice. Even if the intention was innocent, one must think about the consequences of public statements so overreaching, to avoid causing more harm than good.
To mostly get off the soapbox of generalization and back to the topic at hand-I'll spend a small amount of time to support my statements regarding both sides have pros and cons. I work in a development environment that is primarily .Net/C#, and change is hard to come by in this environment. So does that make me or my co-workers good or bad developers-NO. Technique, intellect and motivation, these are some things that may contribute to someone being a good or bad developer. I love learning new things, so I do sometimes and most of my teammates do not. But this does just mean I am good and they are bad developers because I have motivation to learn new things and they do not, sticking only with their .Net skills? NO! Actually, most of them are better developers than me even though they are primarily .Net developers (or in spite of, however you want to word it to suit your individual opinion). Many of them have well developed techniques that allow them to write fewer bugs and be more efficient than me. I am only 5 yrs in and still learning to harness those skills, and I have too many interests in life to spend all of my time on development training. I spend some time on it, mostly more than my co-workers, but I also spend time on walking, the beach, music, arts and so on. I may move on to "greener pastures" or really just different pastures because life is short and I like to try new things. That may or may not make me a better developer, and for those who don't move on to different pastures, they may or may not be good developers. There is a lot of subjectivity in just saying someone is a good or bad developer anyways, regardless of their skills in any particular language or development style. Remember opinion is opinion, and fact is fact. In the end, these really are two totally different concepts, it is people who have a hard time distinguishing one from the other-especially since people don't and can't know everything. So sometimes somethings may appear fact when they are not. In my opinion, being open-minded enough to realize that your point of view is not the end all, be all of everything is a good step towards becoming a good developer. (Notice I didn't say it makes you, just a step towards it). Feel free to speak your point of view, but also take some responsibility and consideration in doing your best to not hurt others.
Ayende, you're right, particularly when you say, "This has nothing to do with the platform you are using, and all to do with the type of culture of the company you are at." Also, one must consider that if you've got a Classic ASP application that's working, a backlog of a hundred new features you need to build to keep the customer's happy (which, BTW, == keep the money flowing), where are you going to put your effort?
I wish Rob Ashton's blog had a comments section. It's easy to slam tens of thousands of developers and then stick your fingers in your ears going, "I caaaaan't hear you." His post was condescending and arrogant. Not everyone can, or wants to, take short term consulting gigs with the "newest and shiniest."
As for the argument that .NET doesn't have open source projects, since when did this become a metric of how good a development environment is? Seems just the opposite. A huge open source community means the ecosystem is lacking and someone needs to fill it. But somehow we've turned that around and if there aren't 10,000 open source projects the environment sucks. Just doesn't make any sense to me.
Rob, apparently, feels the need to insult everyone else's craft in order to make himself feel better. If that's his thing, so be it. Reminds me of a post several years ago from another arrogant dick https://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-programmers/
I read Rob’s post and did not feel insulted.
I been programming with .NET since it was in beta. I love .NET and am super excited about all the new features that are being introduced. My very first project using the .NET framework was written in VB.NET for both client (ASP.NET, Windows Forms) and server. Today I write most of my applications using C# as my language of choice. I prefer MVC over Web Forms, Git over TFS, and WPF over Windows Forms. At work however, all new web projects are Web Forms, our source control is TFVC, and client applications are created using a Windows Forms projects. We don’t use separation of concerns, source is committed to the repository without comments, and documentation doesn’t exist. And the reasons why we don’t implement good practices is the reason Rob stated in his blog: It’s too hard for most people in our team.
So, no I did not feel insulted. I read the blogpost and did not feel that Rob was talking about me. My takeaway was that he was talking about my company’s culture. I understand that not all companies share the same culture and I wish I was working for a company such as yours – but I’m not. And no, changing jobs is not an option for me at this point in time. So, I learn new skills and technology on my spare time because I love my profession.
I'm with Abel. I'm a proficient developer who has been working in this industry for more than 20 years. I'm a "senior engineer", but mostly that is because of my generalized experience with development. My company develops about half of the code with C#, the other half is C/C++ (for systems-level driver development type things). I love C#, I love Xamarin, I love the new open-source CLR and the ecosystem it's helping to breed. I loathe the constant development of new shiny frameworks that come and go on a whim. Some of our web developers spent years becoming experts with Angular, but now with Angular 2 virtually all of their expertise is apparently deprecated. I hear this a lot; people switching frameworks, re-writing their applications from scratch to take advantage of new tooling and technologies, etc. It's great from an academic point of view but it's completely pointless to a company.
I write mostly boring code for my company, but I do it well and follow most of the tenets of the Pragmatic Programmer. My fellow engineers do the same, and we innovate when we can and where it makes sense to, but for the most part we just write maintainable code. I save my fun innovative time for side projects on GitHub when I go home at night.
And this is where I think Rob made a mistake. "Boring, stupid" developers pay all of the bills so people like him can churn on framework after framework after framework without actually ever getting any real work done. :)
I stopped following what Rob says years ago. Mostly due to his poorly presented evangelist arguments. Still, I somehow found myself reading his article and he is partly correct. Except that (once again) he could not forgo his dislike of everything related to Windows and it's development environment.
However, Rob states that every team adapts to it's weakest link, and I think that is partly true. A team adapts to some arranged midpoint, that is achievable even to weakest links, if they put some effort in their development. This is called compromise and it happens in just about any working environment that includes more than one person.
The reason is simple. Every team must cover for the fact that people come and go. Is steep learning curve with new hires really what you want? No. You want him or her to come and start doing what he or she loves best ASAP. On the other hand, a guy that pushed for latest and greatest tech, suddenly leaves (or gets hit by a flying wench). Then what?
I am a senior enterprise application developer and as much as I would like to use latest and greatest technology, I am also well aware of the fact that latest and greatest technology might not be that great after all. Not to mention that when you are not in control of production environment, it might lead to some interesting compatibility issues and that is the last thing you want, when deploying a new version of i.e. e-banking software.
I started working as a software developer in the .NET Beta stage, I have no regrets over learning the .NET framework and using C# on a daily basis.
I once spent some time assigned to a Java project asked to write a web service because C# and Java are so similar right? after talking to the 3rd Java developer about how to implement a web service and being told approximately 15 different JAR files (between all 3 of them) to include I took them to visual studio and showed them the Add New File > ASMX Web Service.... and away I went focusing on delivering benefit for the business. While this isn't the only step by a long way it was an eye opening experience to see what power both the framework and IDE provide to the developers to allow us to focus on our core objectives of delivering software to meet business needs.
Just because the weakest link in terms of human language skills may be someone who cannot read or write does this mean we should stop writing books, news papers, blog posts etc. The answer of course is no, we should strive to raise the bar and bring these people up to an acceptable level of skillset or let them go if they cannot attain this level. The unfortunate truth is that there are a lot of developers out there who aren't trained or don't know any better, they understand why the few lines of code they wrote work but they don't understand is that there may be a better way, or that they have introduced technical debt. The acceptable level is the one that works for the company, delivering software that helps the organization meets its goals, people that cannot attain that level are typically let go. If people are complaining about coding to the weakest link then shame on them for either: A.) not helping get the other person up to the correct level
B.) not having a conversation with their leadership to highlight the problem and either get help or get rid of the problem. C.) not making a choice if A and B aren't working then you as an individual have a choice, 1. leave the company as they don't value quality code, 2. remain but don't lower your standards to the lowest level, 3. remain but lower your standards.
His whole screams of someone who focuses far too much of the technologies in their sandbox they get to play with rather than meeting the business needs. He says .NET devs cannot be good at their trade, I say .NET devs have more focus on ensuring the businesses they work for stay operational and viable instead of opting to ply their trade as mercenaries saying "ooh shiny new programming toy let's use that to deliver project XYZ" before they've heard a single requirement.
You know, I see his point though. I've been a .NET developer (kinda sorta) for years now, and I all too frequently see .NET shops with a really bad mindset bordering on an almost neanderthal-like approach to software. I can count on one hand the number of shops that actually understood design patterns or software architecture, let alone knew about open source technologies and used them frequently to supplement things. The number of shops that used TFS solely because it was what shipped with Visual Studio, or stuck along with WebForms because they could't be bothered to learn MVC.... you just don't see that mentality elsewhere. There often is a "stigma" associated with .NET developers, that of being a "Mort" (remember that term?) who doesn't actually care about craftsmanship. To this day I can still only count a small handful of shops I've worked/interviewed at that even knew what the SOLID principles were or why they are a good thing!
That's not to say there aren't good .NET shops because there are. Just they seem to be rare. I used to long wish I had picked up Java instead if only for the fact that Java shops tend to be more firmly grounded in architecture and design principles and use open source tools; oh how I can recall vividly the number of places that didn't even know what an ORM was because at the time there was nothing from Microsoft and they refused to use open source like NHibernate. There's something in the water of .NET as it was, even though it's very small nowadays. The reality though is that most .NET shops are willfully ignorant of anything that doesn't come from the Mothership. It's often difficult to even get them to use something off of NuGet. I've seen so many places, and I'm going back only a handful of years, that still thought it was okay to write pure ADO.NET code, return DataTables and DataSets from Stored Procedures to the code-behind of a WebForm and call it a day, and any discussion of repositories or ORMs or service layers or even DTO objects was met with that "deer in a headlights" look from someone who has no idea what you're talking about or why can't you just use a stored procedure and DataSet to return the data, why create a object?
I too disagree with Rob, I have a chance to work in amazing .NET shop we used: git, NuGet, NUnit, Windsor.Castle, Atlassian Bamboo (as you can see plenty of non MS / OpenSource stuff), we had discussions about DDD and new web frameworks like AngularJS, we went to local .NET user group meetings. I think the problem is that in some organisations (like big corps with legacy systems) you can often find people that are not interested in developing their skills or keeping them up to date. These people are often not the best/brightest developers and it takes time for them to learn new library/framework (this happens when you are in maintenance mode for too long). For example in one of my prev jobs we considered switching to git from TFS but with technical skills of most of the team it would be too difficult and time consuming for them. If you look at things from this perspective it turns out that that you cannot be good C#/Java/C++ developer when you are in bad environment. My advice is too find a better team that cares about stuff or just to give up and move effort to e.g. pet project or blog (which I often do when I must work with legacy stuff).
I find it hilarious that someone would be attempting to state that a technology as generalized as C# and .NET somehow forces an environment to be one thing or the other.
As you hinted with the mention of Node.JS I think there has been a bit of an exodus from ASP.NET server side web development to client side technologies. I think other server based html rendering systems like PHP have felt a similar shift. I think this shift is more about the growth of constructs that are available within the browser and the performance of SPAs versus traditional server side web development,
.NET was born of the genius of Anders Hejlsberg, whose latest creation is Typescript and Typescript of course is pretty central in this development space.
Good call! Definite bullshit.
Are we really supposed to take any proposition about technology that makes a sweeping generalization seriously? To me, the moment any developer says "all this" or "all that" I know I am dealing with someone who likely falls into one of three categories (to make my own mini-sweeping judgement . . .here goes):
1) Noob: just doesn't have the experience to look beyond the academic model in their mind and examine how it compares to real world problems or what the boss/team/project needs, 2) Elitist: someone more concerned about frameworks and patterns of technology than producing results for whomever is cutting the checks (note: if you are a poor and starved elitist at least you have integrity), 3) Divisionist: someone who is driven to divide teams, tools, and success. They never think they are a negative force; they think they are about excellence and improving things, but their insistence on what is "always right" is a force of destruction in team environment, period. I used to be one and had to learn the hard way.
Respect others, teach others, recognize that you don't always need to build a rocketship to cross the street. Thanks for checking out my two-cents.
As a non-.Net Developer I do feel like there is a lot of slack in the ecosystem.
What about the .NET Core Connectors for MySQL and Oracle? Do you know when they will be available?
c# developer freelance, Why would I know that?
Comment preview