We have, I think, officially passed the point where anyone can keep up with the new technology available for developers, just from Microsoft (let alone all the new options from all the other companies), and PDC is les than a week away.
A totally indefensible distortion of recent history as I remember it
When I started fussing with computers (1971) you could certainly learn the entire field (and then some) in a couple hours. I was incredibly lucky, and I didn’t like it much (my friends who did like it are all stuck in jobs in banks working in Cobol or worse) and so I didn’t return to it with any seriousness until 1984).
In the early 80’s you could teach yourself all there was to know about microcomputers, and you could come up the learning curve as you remained productive.
There were choices to be made (I distinctly remember choosing DOS over CP/M and then PC over Apple IIe and then DOS over OS/2 and then Unix/C over DOS (for practical reasons – I had a gig). So by 1989 or so I was already “specializing.”
In 1992 I was offered the opportunity to switch to Windows, which by then had grown up enough to be interesting. The project was cross-platform (Win 3.1/Mac; using a beta of the the ill-fated Bedrock cross-platform compiler) and, most important, it was C++, a switch I was eager to make and one which launched my 2nd career as a
hack author (first book, 850 pages, 6 weeks; while working full time. Yowza!)
As an aside to this tangent, I’ll tell you that you have not lived until you try to create software with a new programming model (Object-oriented) on a beta development platform (Bedrock) with a beta compiler (Zortech) and an alpha debugger using a 3rd party editor; none of which was designed to work with any of the others. We spent a couple years on that project (written about Beginning Object Oriented Analysis and Design) only to be eaten alive by the World Wide Web as well we should have been. But I digress.
In any case, in the 1990s something else began to happen, not only did I find myself choosing one platform over another (Windows over OS/2 for example [“OS/2 version n+2, the Real OS/2”] – I found myself whittling down what parts of Windows I would spend my time learning, as Windows Development itself was getting to big to learn it all.
Just keeping up with my little niche was a full time job. Since about 1995: ASP –> Web Classes –> ASP.NET –> ASP.NET w/Ajax –> ASP.NET/AJAX/MVC… .NET –> .NET 2, 3, 3.5., MFC -> WinForms –> WPF –> Silverlight…. you get the idea. (I confess, I just more or less ignored DCom, waiting patiently for it to go away).
Along the way I’ve flirted with the Mac (I do like the Mac a lot and wish I’d spent more time there.. though on balance, so far it appeals to my tin man, not my scarecrow) — but Silverlight meets that need, and I’ve convinced my boss that one of my “commitments” for this year is to increase my expertise in the Mac so as to provide cross-platform expertise (read this as: I get to play with my mac more).
Another aside: after 9/11 my rant was this: if I were in charge of the FAA the first thing I would do would be to call the Israeli Government and say “send me the person who set up your El Al security system, I want him in charge of the TSA for 1 year.” Similarly, if I were in charge of Windows, the first thing I would do is hire someone whose full time job it is to be able to answer the question “why is this easier on the Mac?” — it may be there are very good reasons, but we’d better know them. Have you set up a Mac? It is a blast. Plug it in, wait a minute, answer two or three very obvious questions, wait a minute, you’re done.
While I’m ranting, I’d also have someone on my team in charge of “why does their packaging look nicer than ours?”
Where Was I? Oh Yes…
I’m often asked how to evaluate Silverlight against Flash, and as I’ve said before, I don’t do that, (though there are lots of folks here who do that well). But the question that does interest me is this: of the ever increasing bounty of developer technology coming out of Microsoft: what do you need to know?
What Does A Silverlight Programmer Need To Know?
Let me start off by saying that this list will probably need to be updated frequently – not much I can do about that. Second, much depends on what else besides being a Silverlight programmer you have in mind, and what kinds of Silverlight applications you’ll be building and what size team you’re on and …. you get the idea. Further, this is just my opinion – not a Microsoft official guideline.
That said, if I were pressed to answer what skills a Silverlight programmer really needs to keep up with, my list would start with:
Start here, return to here, this is critical.
- Programming Silverlight with Managed Code (C# or VB)
- Fundamentals: Controls, event handling, layout controls, the soon-to-be-released control toolbox and all that is coming with it at PDC
- Graphics, Brushes, Transforms and Animation
- DataBinding, including data conversion and data validation as well as here
- Resuing code with UserControls (more here)
- Skinning controls with Style and Templates (and understanding Control Visual State)
- Custom Controls and Dependency Properties
- Media and especially video markers and injection
- Networking and using Web Services (more here)
- Dynamically Loading assemblies
- Multiple page applications here and here
- File uploading
- Isolated Storage
- Application Services
- C# or VB (make your life easier)
- Basic UI Design
- WPF (Older sibling, many resemblances)
- WCF (web services)
- The Rest of .NET 3.5 Services (the mischpacha)
- ASP.NET (“Might be fun, could be dangerous, maybe tomorrow”)
Some Books That May Help
Knowing the author and his writing, my guess is that this will be terrific (not yet released)
There are a number of good books on C# and VB. If you are new to both, I can’t help but recommend this, though this new edition won’t be out for a few weeks.
Books I like on learning the related .NET 3.5 technologies (yes, there i go again with one of my books, but it is the only one I know of that covers WPF, WCF, WF and all of .NET 3.5 in a single volume).
There are a number of excellent books on ASP.NET, many from my own team…