The Differences between the Average PHP and ASP.NET Developer

by jmorris 5. October 2010 15:47

I have been interviewing for a number of different positions in the company I work for and have begin to notice a number of core differences between “average” PHP and ASP.NET developers.

The positions in most cases are similar: front end web developer. In a nutshell, the following are some of my “hasty generalizations” from interviewing multiple developers from both camps.

PHP Developers

  • PHP developers in general are far better at traditional web developer skills such as CSS, XHTML, JQuery/JavaScript…in general making things look really nice, maintaining Web standards compliance and resolving cross browser issues.
  • PHP developers tend to understand the basics of SEO (importance of URL structure, clean XHTML, importance of H1, H2…, meta description and keywords, etc).
  • PHP developers understand how the Web in general works, they know what REST means and they know why REST is used.
  • PHP developers aren’t too interested software patterns, architecture or software engineering in general…any good means to an end is justification enough.
  • When you ask them about AJAX they say things like “JSON”, “DOM”, “$.ajax()”, and “XHR”
  • Can hand code HTML
  • Will tolerate embedded SQL in their pages
  • Don’t unit test

ASP.NET Developers

  • ASP.NET developers say that the know CSS, but they usually really don’t. The better one’s know that tables are evil and should be avoided at all costs, however some do not. Basically, CSS and HTML are the domain of the Web designer.
  • ASP.NET Developers tend to not understand the basics of SEO; most ASP.NET developers work on intranet style projects or Web applications, not Web sites so they lack this important skill set.
  • ASP.NET developers think that REST is a “buzzword” and therefore must gone on the resume, but they really don’t understand what it means: “Well, I don’t really know the theory, but I know how to Google really well!”.
  • ASP.NET developers tend to know the basics of Agile processes (but often confuse it with any ad-hoc development) and software engineering in general. They tend to have a superficial understanding of patterns, but aren’t hell bent on the practice.
  • When you ask them about AJAX they say “AJAX Toolkit” and “Update Panel”
  • Think that an HTML is the result of dragging something from your toolbox of their IDE.
  • Know Linq2Sql and have heard of the Entity Framework and NHibernate. In general understand the importance of layering applications.
  • Don’t unit test….it takes too much time and is too hard, but they “have read about it” and agree it would be a good thing given they had the time.

Note that this does not apply to all developers; there are definitely some diamonds in the rough, but those are the exception. Also, note that if you are reading this you are probably the exception in that most developers do not read blogs; they reach into their bag of Google for answers and then find the search result that allows them to copy and paste the solution.

Tags: , ,


Two Questions that Most ASP.NET Developers Cannot Answer

by jmorris 10. September 2010 13:44

After interviewing approximently 30 applicant's for mid-level to senior level ASP.NET positions, nearly all cannot answer the following two questions:

  1. Describe the following access modifiers:
    1. private
    2. protected
    3. internal
    4. public
  2. What is the difference between an ASP.NET Literal control and a Label control

If they answer one of the two questions above, we bring them in for a more in-depth test and then subsequent interviews if they get a passsing score on the test. The first question is among the most basic of questions you can ask someone regarding the language we use, C#. The other is a simple question regarding the output of two ASP.NET WebForms controls...note that the average applicant has multiple years experiance (per their resume) on the WebForms platform. Also, before you say "why aren't you using MVC?", that statement is irrelevent to the questions.

Would you believe 1 in 10 developers (that I interviewed) cannot answer both questions? Sad, really...



Cheap hosting solution:

by jmorris 22. August 2010 17:06

I host sites at both and and I would like to compare the yearly costs of hosting on each:

  • Winhost - 4.95 a month 50GB/1000MB disk plus MSSQL 2008 or MySQL database included (total 59.40 per year)
  • - 10.00 a month 80GB/1000MB disk plus 10.00 a month for MSSQL database (total 255.00 a year)

It costs me nearly 4x more to host with! ARGH!!!! The worst thing about this is that I didn't pick up on this until AFTER they billed me for the 255.00 for next year!

Tags: , ,


The Microsoft.Data.Dll Brouhaha

by jmorris 3. August 2010 13:45

There has been a lot of noise in the dotnet blogasphere regarding Microsoft's latest offerings, Microsoft.Data.DLL and WebMatrix...most of it negative:

To get a feeling for the community sentiment on these two ms products, you really need to read through the comments! It seems that a lot of dotnet developers are miffed with MS for releasing these tools which, according to contemporary software architecture standards, promotes poor practices and the development of security ridden software.

Understandably, the community is upset sense they have been pushing MS (we all know MS’s record with quality software) towards the acceptance of better software development practices for some time now and releasing an API intending to promote bad practices is counter-intuitive. To Microsoft however, this is an opportunity to reduce the barriers of entry to MS offerings and provide API’s similar to some of the PHP offerings like Drupal and Wordpress, which currently have a huge market share.

If you’re wondering what Microsoft.Data API is, it’s simply a couple of wrappers over raw ADO.NET…nothing different from any of the wrappers we have all created in the past. It’s very similar to using the Enterprise Data Access Library with updated syntax and language features found in dotnet 3.0 and better. It basically allows developers to declaratively combine data access and markup on a webpage much like PHP developers do now (and PHP consultant’s en masse). An architectural Achilles’ heal with respect to maintenance, but a boon to quick n’ durty development…exactly user base MS is targeting (and largely owned by the PHP/ROR crowd).

Will I ever use Microsoft.DLL API or WebMatrix? Probably not…however I question the wisdom in a strategy that alienates one core developer group (professional) in an effort to gain another developer (amateur) which is clearly not even interested.

Tags: , , ,


What is the ObsoleteAttribute Anyway?

by jmorris 22. June 2010 17:31

From time to time during the lifecycle of any API, certain methods or classes simple become obsolete; meaning "No longer useful" or "No longer relevant." Often times it is a warning to users of the API that the lifetime of the said method is "finite" and will or may be removed in the future.  It is also may be an indication that another type or method has been created which supersedes the functionality of the decorated subject.

The FCL even provides a special attribute for flagging methods and types as obsolete: System.ObsoleteAttribute. Here is the MSDN description of the attribute:

“Marks the program elements that are no longer in use. Marking an element as obsolete informs the users that the element will be removed in future versions of the product.

Typically it is added when a method or class must be changed in a way that backward compatibility may not be completely possible. After all, in general most developers try as hard as possible to maintain backwards compatibility; or at least try as hard as their level of comprehension of the API and its clients. Occasionally this isn’t possible, so the attribute is used to flag a clear direction to the developer: “DO NOT USE THIS CLASS, METHOD, ETC…USE CLASS/METHOD/TYPE X, Y, OR Z INSTEAD!!!”

For example, the following method has been flagged with the ObsoleteAttribute and a clear, description directive has been made to all users of the method:

For those that ignore that message and use the method in there code, the compiler will even issue a warning:

So as a plea to all developers, when you encounter the ObsoleteAttribute, please, please respect it and don't use methods or types in your code that are flagged with it Smile

Tags: ,


Jeff Morris

Tag cloud

Month List

Page List