Recently on Dot Net Rocks, Miguel Castro was interviewed by Carl and Richard to talk about the ten things that really annoy him. I can’t resist a good list, so, here they are presented again – along with some commentary. . .
#10 – Business object crowd vs. Service Orientation Architecture crowd
Writing “business apps”, i.e., forms over data, is nothing like designing an SOA framework. The SOA framework is sometimes exposed to clients and/or the open internet. Forms over data typically is not. Putting the database for a forms over data app behind SOA is mostly wasting time.
#9 – CSS Zealots. No arguments from me on this one.
#8 – Domain Driven Design = correct; Data Centric Design = wrong.
Sorry, Miguel, but this is absolutely true the vast majority of the time. In fact, the only time data centric design is a good idea is when you are given an existing database populated with tons of existing data, and you want to design a new piece of software to expose or manipulate that data. For a new project, thinking about the data storage model is the least important and last thing you should be doing. When a developer hands you a database table/relation diagram before a requirements document (or even a project overview/description), it’s time to look for a new developer. A data storage model is not an application design by any stretch of the imagination. And it puts the emphasis squarely in the wrong place.
#7 – No Virtual Static Members
I see nothing but problems with this concept. “When in doubt, don’t use inheritance”. That sentence will get you a long way in OO design and development. In fact, virtual static members are the worst idea since multiple inheritance :-) Sorry, Miguel, “Microsoft” (and the rest of the industry) is spot-on in this case.
#6 – Stored Procs Bad; ORM Good
Not sure of the connection between these two (ORM?) but I prefer writing SQL to stored procs in general (when doing ORM or any other operation against the database), however, I understand that there are some good reasons to use stored procedures, such as when another organization is responsible for the database.
#5 – TDD Zealots
I have to agree with Miguel on this one. Test frameworks/automated testing should be used on every project, but we don’t always need 100% coverage (code or code paths), nor to we always need test first. And what about that darn UI code?
#4 – MVC Good, Web Forms bad
I have seen the evils of Web Forms, and it’s not pretty. MVC is a beautiful answer to this problem. I agree MVC is not “Web Forms Replacement”, but it is certainly a refreshing change for ASP.net, as a welcome addition, of course. I learned from Web Forms that sometimes an abstraction can be over-done. What was it that someone said? I never met a problem that could not be solved by another layer of abstraction? ASP.net web forms changed all that.
#3 – C# vs. VB war – why?
The beauty of C# is that all of the “goop” is gone – the “goop” of C, C++, and yes even the goop of Java. VB still has goop. You can minimize the goop with compiler options, but you cannot get rid of it all.
Dim data(25) As Byte
Dim client As New UdpClient()
client.Send(data, data.Length, "hostname", 6000)
Good luck explaining the issues to the newbie “VB guy”. The animosity comes from being just so, so close but not quite getting there with VB. If Microsoft had just kept the syntax semantics and left behind the goop, we would all be better off today - and there would be no animosity. Nevertheless, I would agree that the “war” is as pointless as Microsoft maintaining two statically typed, statically compiled, object oriented syntaxes that compile to IL. A waste of time. (and precious resources)
#2 – Recruiters are Evil
I think everyone agrees with this one. No arguments from me. I have not met the “good recruiter” yet.
#1 – Alt.Net
Miguel’s comments referring to Scott Hanselman’s quote “Why So Mean” I think says it all. From what I’ve seen in the past few years, the “new” Microsoft is more aligned with Alt.Net community than they think. (Didn’t plenty of them get hired by Microsoft?) The Alt.Net community should simply consider themselves the “.Net Community”.