At the Atlanta MS Pros meeting this month, we had a lively discussion of the various technologies that developers are faced with today. We separated the discussions into 4 groups: Data, Presentation, Software Design & Implementation, and Systems Architecture. In this post, I’m going to share the write-up from the various group leaders along with a listing of the technologies that each group identified. I’m sure we missed some, but what is clear is that the list is daunting for even the best of us. Please note that this information has not been editorialized by yours truly and may not represent my personal thoughts. It is simply a statement from those in attendance from that meeting.
Realizing that the list of technologies that we are facing is only going to continue to rise, particularly with PDC right around the corner, how do we cope?
Microsoft has released a very wide variety of products, but the perception is that the releases are without much guidance. The .NET 3.0 technologies offered ground-breaking changes, but without guidance these products have extremely low adoption rates after 2 years.
Big Question: What topics are being accepted and are what worth the learning investment?
LINQ is everywhere from both Microsoft and on blogs, it appears to be a technology that will be here to stay. After slight digression into defining LINQ as more than a data access technology (but rather a declarative way to describe 'what' instead of 'how') this led to asking if F# had made the radar of anyone in attendance (it hadn't) and the implications of being able to take advantage of the Parallel Framework (Pfx/PLINQ) for declarative style.
VB has become a scarlet letter on a resume (regardless of BCL) and it’s now less popular than C#. XML Literals in VB.NET 9 as a small feature to leave aside, the discussion is that this is a technology to avoid because of the stigmatism left from VB6 and to be sure to leave off the resume to avoid being typecast.
Delphi and PowerBuilder are yesterday's technology now. No more discussion.
WPF seems a lost cause other than Silverlight. Discussion is that it seems easier to make bad looking applications with WPF because there is too much control and with no training on color or design is asking for trouble. Discussion also about WPF as a far easier sell with a graphic designer that makes the 'sell' even possible
WF seems more popular than WCF, but it makes almost no sense since WCF is so versatile (and reference to Juval Lowry's MSDN talk with Glen Gordon proclaiming WCF is the new .NET) but the acceptance rate and 'sell' of WCF is difficult.
CSLA has very specific benefits in its application, but some of those are replaced by WCF, and still not widely adopted enough to make worthwhile.
Entity Framework was discussed in comparison to code generation (much discussion about how any code generation still needs customization so code gen falls short on its many promises) and any benefits EF has compared to any other ORM. Alt.NET vote of no confidence discussed with concerns voiced by that crowd, and discussion also found common idea that LINQ as a data access has potential but is likely to be abused. ADO.NET was mentioned but is so common and accepted that it warranted no real discussion. Only common thing discussed more than once was that the data choice is almost always already set by the existing application, so again guidance from Microsoft is something that would be helpful in making a choice about learning something not already present in current environment and most importantly on how to smoothly transition and migrate to the new technology.
One discussion offshoot was that much of the list is a list where there is something to know, maybe only a little about each topic, so that you as a developer can talk about that line item conversationally, especially the 3.0 suite. The motivation to learn to speak about the breadth of topics is more to just get through the technical interview and get the job instead of focusing on learning the specifics to actually implement the tech since there is so little use for many of them.
And that is a brief summary of what the discussion effectively covered, it was less linear than the summary and made a few loops across the topics in a random pattern. The discussion only really covered about 1/3 of the topics written on the sheet, which fit the early theme of the discussion which was to attempt to dissect the list and focus on a limited subset of technologies that are reasonable to learn with the limited time we as developers have to devote to new subjects.
And now, here’s the full (unedited) listing of technologies. There may be some duplication and overlap.
o Relational Database Platforms (expert in one, exposure to many):
§ Microsoft SQL Server (including multiple flavors: Enterprise, Standard, Express, CE...)
§ Others (pervasive, VistaDB, etc)
o SQL Server's BI stack:
§ SSIS, SSAS, SSRS
o Languages/Data Access Methods:
o Data Integration/Migration Plumbing
§ Linked Servers
§ Cloud Services
§ Windows WorkFlow
§ ADO.NET Data Services
§ Entity Frameworks
o Development Methodology Skills
§ Source Control for SQL Server
§ Standards Mgmt/Enforcement
§ Separation of Tiers (Business Layer in Stored Procs or Application)
§ Performance vs Maintenance Costs
o Development Tools
§ Visual Studio
§ VSTS for Database Professionals
§ Redgate Tools (other 3rd Party enhancements)
o Coping Skills/Issues
§ Knowing when to introduce technologies; Data services (including relational databases) often last to migrate.
§ Support Legacy data storage and new methods
§ Horse Race metaphor: pick a technology and bet on it; sometimes it pans out, sometimes not.
§ Education : mostly Internet, User Groups, Code Camps, Deep Dives into proven technologies, exposure to new ideas.
§ Time Management skills: Learn something new while still continuing to support mature technologies
§ Code Smarter, Not Harder.
· Presentation & Web
§ Smart Client
§ Win form (MDI)
§ Silverlight (1.0 & 2.0)
§ Blend/VS 2K8
§ Iron Ruby / DLR
§ 3rd party controls
§ Error Handling
§ Application Blocks
§ RegEx Validators
§ RIA (Reach vs. Rich)
§ ASP User Control
§ Master Page
§ Membership / AJAX Services
§ Live ID/ Open ID/ CardSpace
§ Connected vs Disconnected
§ App Workflow -> Developer -> Designer
§ - JSON
§ - WS *
§ Virtual Earth
§ SilverLight Streaming
§ Surface / Multi touch / Windows 7
§ Back End Supporting Architecture
§ IE DEV Toolbar
§ Web Developer Helper
§ VS 2K8
§ Firebug / IE8 Dev Toolbar
· Software Design & Implementation –
o Topic List:
§ TDD / Automated Testing
§ MVC / MVP
§ IoC / DI / Unity Framework
§ Design Patterns
§ Enterprise Library 4.0
§ Code gen (CodeSmith, etc)
§ Entity Framework
· System Architecture
§ Exchange Server
§ Biz Talk Server
§ Team Foundation Server
§ Php on IIS 7
§ Mesh (Cloud Services)
§ Active Directory
§ Speech Server
§ Click Once
§ Great Plains
§ Web Services/SOAP
§ Mobile/Compact Framework
§ Core CLR