Are .NET Developers Stupid?

Are .NET Developers Stupid?

The ideal engineer is a composite ... he is not a scientist, he is not a mathematician, he is not a sociologist, or a writer; but he may use the knowledge and techniques of any or all of these disciplines in solving engineering problems." -N. W. Dougherty

Recently, I read an article by the CEO of Expensify, David Barrett, where he explains why he doesn't hire .NET developers. Basically, Barrett thinks .NET developers are inferior and not up to his standards. He goes on to compare .NET programming to "cooking in a McDonalds kitchen", because of visual studio’s ease of use.

First, let me clarify — I do not agree with him at all. I am primarily a .NET developer and I believe it to be a very good framework. His stance shows great ignorance in software development and basic computer science. Any developer or engineer, with a solid computer science background, can effectively develop in any language or framework, regardless of syntax. Let’s explore his point of view and why some classic C++ and PHP programmers dislike .NET programmers.

Why do Some Dislike the .Net Framework?

The .NET Framework is a programming infrastructure, created by Microsoft, for building, deploying, and running applications and services, such as desktop applications and Web services.

The .NET Framework contains two major parts:

  • The common language runtime or CLR
  • The framework class library,

My first experience with .NET was during my first job as an adjunct college instructor. Up until that point, I had only dealt with C++. At first glance, Using VB/.NET framework seems like an easy drag and drop language/framework that was much different, more abstracted that the C++ I was used to. It’s almost like cheating to someone who has developed everything from scratch and had to manage memory, as you have to do in C++. In deeper analysis and over time, I realized its potential to make solid solutions, quickly based on a robust, solid framework. I grew to both love it and flourish in it.

Over the years, I continued to use PHP, C++, and JavaScript in various projects and I still love the .NET framework above all.

I will admit some pure .NET developers are very sloppy programmers. With automatic memory management through garbage collection, there is no need to perform your own memory management. In addition, I have seen very few pure .NET programmers who attempt to use the concepts of the BIG (O) in their .NET algorithms. They haplessly use nested for loops and overuse huge data types (using a string for a two char state i.e.: FL, for example) without restraint. This is not the mark of a true software engineer.

The CEO of Expensify explains that as evidence of .NET's inferiority, is that very few, if any, startups use .NET as a base for their technology.

There are two simple reasons for this:

  • It is much easier to find a C++ or PHP programmer cheaply, and
  • These languages/frameworks can be run on open source stacks (e.g. free/low cost) very beneficial to cash strapped startups.

Modern programming is almost always dependent on a framework; it simply does not make sense to reinvent the wheel when there are so many options. Familiarizing yourself with the common and popular frameworks for each language you learn is critical. Knowing C# is irrelevant without .NET. Knowing PHP is useless without having Apache.

Regardless of the language, the basic science and theory behind the algorithms and OOP remain the same. The BIG(Oh) is independent of language or framework, any real software engineer would know this.

These people that dislike .NET developers simply do not understand that good professional software engineers are language-agnostic.

What is Language-agnostic?

 Language agnostic refers to aspects of programming, which are independent of any specific programming language.

The world "agnostic" is derived from the ancient Greek for "don't know". So something, which is "language agnostic", doesn't need to know about computer languages; it means the same thing as language independent. Things that would be language agnostic include algorithms, or agile, or a runtime library with bindings to many languages.

This should be the goal of any software engineer. The mistake of the CEO was his ignorance on this subject. He wrongly classified a whole category of programmers as stupid and bad because of their choice of language. An analogy would be like not hiring a racecar driver because you saw him driving a car with an automatic transmission, and you assumed wrongly that because of this fact, he was unable to drive manual. It is a fallacy to think this way, an assumption based on surface details.

The Key Takeaway

The ignorance of David Barrett's article was shocking to say the least and sad because there are many like him in this industry.

Many of the critics of the .NET framework have barely used the framework, if at all. True understanding of the software engineering discipline will help solve the infighting over languages and frameworks.

Armando Pantoja is a Software Engineer, entrepreneur, author, speaker, software development consultant and software security expert. Armando is a respected, highly regarded leader in the software engineering industry whose passion lies in software security. Armando currently resides in Tampa Bay, FL.

Email: ap@armandopantoja.com

Twitter: @AJPantoja17

Ali A.

I Build AI Solutions That Works — GenAI, LLMs, AI Agents & MLOps | Data Scientist @ Capgemini | Automating Agentic AI Workflows & Driving Real-World Impact

8 å¹´

It is a typical mindset and we can't help these people. The fact of the matter is if a person follows best practices and write code by following object oriented principles then regardless of any framework or programming languages (Java, C#, Php) the person would be able to develop more flexible and robust applications.

Rob Dean

Technical Leader | Consultant Driving Cloud Migration & Modernization | AI Governance, Strategy & Innovation | Cloud Architect | Principal Software Engineer

8 å¹´

I am very sorry for anyone who has had this experience, but it is just opinion, and not fact. There is no such thing as a .NET Engineer. There are .NET Developers or Software Engineers. Once again we've confused manufacturing with engineering. The primary problem in software engineering is not "nested for loops" it is the lack of a maturity model, and the propensity to recreate the wheel each time a new business "starts up". This has lead to vertical human resource scaling through the practice of outsourcing or offshoring, and increasing the number of junior developers in the pool, thus perpetuating the problem. For example, rebuilding a User Management or Exception Handling component every time you start a new project. I agree ugly programming is a problem, but bad design and no planning is even worse. It is these "efficiency experts" that are lost in the minutiae that are not seeing the real cost of bad engineering. Engineering is planning the bridge and understanding the architecture, not punching the rivets, that would be manufacturing.

Aaron G.

Enterprise Cloud Architect

8 å¹´

I do agree that C# developers often times do not use OO principles enough in their development, however I have seen Java and PHP developers doing the same thing. You're either a detail oriented developer and architect or not.

Alexandre SPIESER

Head Of Engineering at Capital on Tap

8 å¹´

I like how this article is referencing a 5 year old post, which got then updated by the CEO a few months later saying that he now hires .NET devs again: https://blog.expensify.com/2011/08/30/expensify-hiring-a-net-programmer-seriously/, seems like their exec knows how to draw attention.

要查看或添加评论,请登录

Armando Pantoja的更多文章

社区洞察

其他会员也浏览了