We’ll be hosting two seminars by Richard Hale Shaw, a long been a mentor and colleague, at SPARK Central on Friday May 27th (details below, registration link here.)
Habits of Successful Software Developers
For Software Developers, success comes in a variety of forms:
Shipping a new product – or a new version of it – on-time and under budget with an acceptable minimum number of defects;
There’s more…but these are all traits of successful software development, the results that are produced by successful programmers. The question is: how do you get there? How do you become a developer that delivers this way?
The operative word: Habits.
In this highly interactive session, Richard will lead you through an iterative process of discerning many (but not all) of the traits or characteristics of Successful Software Developers. We’ll then look at why those characteristics are found and what habits had to be put into place to develop them. Then examine what these habits are, how you create them and how you ensure that they take root and grow – and to do so, Richard will draw off of nearly 28 years of programming, development, team leadership, consulting and other experience in the software industry.
If you’re unhappy with whom you are as a programmer, or think that you can vastly improve your ability to perform as a software developer, you’ll not want to miss this session.
On Time and Under Budget: How to Stop Missing – and Start Meeting – Software Project Deadlines
What’s your biggest challenge as a software developer?
Maybe you think it’s learning and developing new skills, or keeping up with the latest technologies and tools? These can be tough – but an abundance of resources (such as books, training, and conferences – not to mention help from colleagues) is available. Or perhaps you’d say that requirements gathering and analysis is difficult? Granted, collecting, organizing and internalizing your understanding of users’ needs isn’t easy. But there are lots of great methodologies at hand that are designed to help you address just this issue.
So let me ask the question another way: if brought before a jury of your peers and accused of delivering your software projects on time, would there be enough evidence to convict you?
It’s likely that the answer is no – and that this may be your biggest challenge as a software developer.
Arguably the biggest problem facing every software developer – not to mention entire teams and perhaps the entire industry – is that of setting and meeting deadlines. The issue is a complex one: without deadlines projects would likely languish; but deadlines are often set by almost anyone other than the developer or team that’s responsible for meeting it. And while deadlines are supposed to be inflexible, product feature sets appear to be highly flexible – and completely out of our control.
In this highly interactive session, Richard will help you look at deadlines as contracts – where a contract is an agreement by both parties, and not open to change by one party without the other’s consent. We’ll talk about why deadlines are valuable – and to whom – when you should set them (or at least, agree to them) and when you shouldn’t. We’ll look at how deadlines are set, how they’re changed, who gets to change them – and why.
Finally, we’ll look at a number of strategic solutions and tactics that you can implement, turning deadlines from impossible tasks into achievable goals.
We’ve repeatedly said that the best developers learn different technologies and different platforms. I think this is especially true in the RIA space, where your customers may be using a different device, and different platform than you typically use. I believe that if you are building RIA applications, it will be important for you to have some knowledge of both Silverlight and Adobe Flex.
To that end, SRT Solutions is hosting Adobe Evangelist James Ward for a 3 day Flex Jam. Learn more, and Signup here: http://www.srtsolutions.com/flex-training
If you’re primary focus is Flex, James will help you learn more about that platform in short order. If your primary platform is Silverlight, you’ll learn some of the idioms employed by the other major RIA platform. That knowledge will make you a better Silverlight developer: you’ll learn some techniques that you can use in Silverlight, even though they are more natural in Flex.
CodeMash is next week. My favorite feature of CodeMash is that there is great content from start to finish. Because there is so much great content, it’s not possible to give others recommendations that are universally correct. Instead, I’ll say where I’m going to be. I’ve annotated some of my choices with alternative sessions and I’ve said why.
You’ll note that most of Thursday was spent on the .NET platform. Friday, I’m exploring other areas. (but see annotations)
If you are a developer, you need to keep your skills up to date. If you’re working in the .NET space, our local Microsoft office is going to help. They’ve just announced Windows Client Development bootcamps, and another tour for the Windows Azure Development bootcamps.
The Windows Azure Bootcamp contains updated content to reflect the 1.3 release of Windows Azure. If you attended the previous bootcamps, there is a wealth of new material to learn. If you’re new to Azure, the bootcamp will give you a head start on growing the skills you need to build applications that run on the Windows Azure platform. See http://www.windowsazurebootcamp.com for a list of dates and locations. I’m honored to be part of the group of people delivering the windows Azure Bootcamp. I’ll be helping at a few of these events, primarily in Michigan and Illinois.
The Windows Client bootcamp concentrates on development for the Windows client platform. That will include Silverlight 4, Windows 7 features, and IE 9 as a development platform. The Windows bootcamp is a one day event, concentrating on the features you can use to leverage features in the Windows platform to create more compelling applications. See http://www.windowsdevbootcamp.com for cities and dates.
I spent all day yesterday working with VS2010 RC. (MSDN Subscribers could download late on Monday. It becomes public today).
First impression: It is much faster, and more stable than the beta 2 build.
Caveats: It’s only been one day. If I were making a ship decision, I’d say VS2010 RC needs a lot more soak time.
I put VS2010 RC on the PDC Laptop. (The Windows Rating is a 3.2, due to the Windows Aero score). On that machine, the VS2010 Beta was rather painful. It worked, but I could type noticeably faster than VS2010 could display characters. Even worse, slewing characters would cause the display to fall more than a screen behind in drawing.
None of those effects occur in the the VS2010RC. (VS2010 RC uses the hardware rendering on this machine. See Jason Zander’s discussion of perf changes betwen B2 and the RC for more information.) I spent all day coding on the PDC laptop. It kept up during the entire day. Scrolling, slewing keys, intellisense. It’s downright zippy.
As an extra added bonus: The Add Reference dialog appears in a heartbeat.
As of now, I am doing all development in VS2010 RC.
A new year means it’s time for CodeMash. Tomorrow I begin the annual geek pilgrimage into the water park for tech knowledge. I’m amazed at how much the conference has grown, and the strength of the session list. It was difficult to decide where to spend time, but here’s my current plan:
We’ve got great keynoters this year, and I’ll be attending all of those. I am attending the precompiler again this year. Here’s the current plan:
Some of this will likely change, but I think you can see the goals: I want to learn more about dynamic languages in general. I also want to take the opportunity to learn as much Silverlight as I can. Jesse Liberty is a great teacher, and I can’t pass on this opportunity.
Of course, like every CodeMash, I’ll probably make a number of changes to this one as well.
Before I discuss my 2010 predictions, it’s important to provide a disclaimer using my 2009 predictions. One of my predictions was spot on. At the end of this post, I said:
“Of course, I’m probably wrong about many of these.”
That one was right. The other four, less so. Cloud Computing has not achieved the market share I would have thought it would by now. I’m going to call that one “delayed” not “wrong”. I still think Cloud Computing will be important, it is just taking longer. Rich Internet Applications was just plain wrong. While I think (almost) every application will make use of the internet, and people want rich applications, the term will lose favor. It won’t have meaning if everything is ‘rich’ and ‘internet’. “Multi-touch goes mainstream”. Not yet. I still think that will happen. The mouse as a metaphor is very long in the tooth. We do crave better ways to interact with our computers. We have it with some special purpose applications. We’ll get there with other apps as well. My final prediction “Social Networking as a business tool”, was much better. In the last year, Detroit and Ann Arbor newspapers stopped printing. I didn’t miss a beat. All those papers have great web sites (http://www.freep.com, http://www.detnews.com, and http://www.annarbor.com). Even more immediate, all those sources, and several of their reporters are on twitter. I get news more quickly following them, and following their links than I did reading the dead tree edition with my morning coffee.
Armed with the confidence that I’m probably wrong, I’m ready to divulge my thoughts about 2010.
For the past few years, many industry leaders were saying that developers needed to know multiple languages. They were right, because learning multiple languages (if done correctly) meant that you needed to learn different programming idioms: procedural programming, object oriented programming, functional programming, and so on.
But that’s painful. Why should I need to learn new syntax to use new idioms? Curly braces aren’t allowed in FP? semicolons aren’t permitted in dynamic languages?
Instead, why can’t a general purpose programming language support multiple programming idioms? C#, VB.NET, and C++ are starting to seriously support that. (Other languages may be doing this as well; I don’t know). All these languages have added (or are adding) lambda expressions which support functional programming concepts. (C++ has used Class Type Functors for this purpose for some time). C# is adding support for dynamic typing (as is VB.NET, in a more strict fashion than previously supported). Implicit typing is supported in C#, C++, and VB.NET as well.
This trend will continue as more and more developers want to use the best programming idiom for a particular task without learning a totally different syntax. Any programming language that calls itself a “general purpose language” will support multiple idioms.
For the past several years, the conventional wisdom has been that ‘business skills’ are more important than ‘core technical skills’. That trend is changing. While I don’t believe we’ll return to those days where anti-social behavior is tolerated (or worse, celebrated), I do believe that serious technical talent is valued more than it was. Even The Economist has predicted fewer MBA students in the coming year, saying it will “…cut off the supply of bullshit at the source.”
OK, MBAs aren’t that bad. Or, maybe they are. But the fact is that technical talent and skill is important. “Soft Skills” complement hard skills; they aren’t a substitute.
In 2010, more companies will want Comp Sci or Software Engineering grads for their developer positions.
In an interconnected world, large enterprises are no longer going to tolerate the “One Application to Rule them All” concept. They will start looking for best of breed solutions to each individual problem. The suites that solve everything are going to decrease in value. (or at least customer value). They do everything, but not exactly the way a large enterprise wants. More importantly, they don’t have the integration points needed between these important processes.
Finally, CIOs will be looking to avoid “vendor lock in”, whether that’s a real strategy, or just defensive posturing.
Balancing that trend is the fact that too many business processes are stitched together from disparate programs that have no interoperability strategy. Businesses cannot compete if their disparate programs don’t coordinate automatically. It’s too much friction, and no added value. In fact, that’s what drove the trend toward the enterprise suites that claimed to do everything: it was a way to finesse the interoperability requests.
Going forward, the single most important feature for business programs will be data import / export. That must be in a standard format, and it must be a programmable API.IT may or may not be REST, SOAP, or some new made up word. But, I’m confident that any serious product in the business world will have a clear strategy to interoperate with other programs that solve other business problems.
These last two predictions will mean that future systems will built using these concepts:
Notice how those last two also fit well with the cloud strategy? Processes in the cloud. You’ll interact with those small processes using a rich UI on whatever screen you have.
Of course, I’m probably wrong again.
In my last post, I wrote about the new items in the second edition of Effective C#, and those items that were removed to make room for the new items. Now, let’s discuss what happened to the items that I carried over from the previous edition.
Every item received a rather significant update for this new versions. However, you won’t see that from looking at the table of contents in InformIT. That’s because the advice is very similar to the earlier edition. However, the way you implement the advice has changed significantly. As I mentioned in the last post, the C# language has made many significant enhancements over the years since the first edition was published. We have many different tools at our disposal to express our designs. That means we have many new techniques that we can use to achieve the same goals of better software, and clearly communicating our designs to other developers.
In the new edition, I re-wrote all the samples to use the latest version of C#, taking advantage of all the features in C# 4.0. That does not mean I use C# 4.0 syntax in every single item. It does mean that I thought about how to express an idea using the full palette of features available in C# 4. In many cases, that meant using features available in C# 3, or even C# 2. In other cases, the samples will include some of the latest C# features. In all cases, I updated the justifications for the advice, and how to implement the goals, in the context of C# 4.0.
Even if you have no experience with earlier versions of C#, you can use the advice in the second edition. Furthermore, you can use much of the advice even if you have not updated your environment to C# 4.0, and .NET 4.0.
That was a twitter comment I made this morning during the PDC keynote. A number of folks have reposted it.
Twitter’s character limit means I’ll elaborate here.
I don’t think this is a bad thing for WPF, or people that build WPF applications. Silverlight is gaining more and more features, and those features mean that over time, Silverlight will become a superset of WPF. That’s very different from the original vision where Silverlight was a subset of WPF.
I think over time, you’ll see one advanced graphics / UX framework for .NET development. I believe it’s name will be Silverlight.
I don’t know how long it will take, as there are still some gaps and differences. I also think there will be some continued enhancements to WPF in the short term. As time goes on, those enhancements will be smaller and smaller, and Silverlight will be the single framework.
Of course, I also think that any investment in WPF (now and in the future) will be extended to the Silverlight ecosystem.
In the end, I think this is branding. Silverlight has much more buzz than WPF. It’s clear that Microsoft should merge WPF and Silverlight into one framework. If there is going to be one UX framework, its name will be Silverlight.
You probably noticed that Visual Studio 2010 Beta 2 was released for download today (for MSDN subscribers). The general release will be Wednesday (Oct 21).
I’ve had limited time (obviously) to work with this, but I’m already impressed. The WPF editor has shown lots of progress. It’s much more responsive than in earlier beta builds. The language features (at least for C#) are coming along well.
That bodes well for the announced release date of March 22, 2010. Yes, they’ve placed a stake in the ground, and this release has an official launch date.
In addition, Microsoft made some announcements about MSDN licensing and pricing. Microsoft has the full announcement here. There are a couple of interesting items that are very important in this announcement:
1. Every Visual Studio Premium license includes Team Foundation Server with 1 Cal. That means if your team has VS Premium, you can use TFS right out of the box.
2. WIndows Azure “Development and Test Use”. Visual Studio Premium (and above) will include compute hours (and data storage) in Windows Azure for test purposes. (UPDATE: The full terms are here.) VS2010 with Premium MSDN will get (initially) 750 hours of compute time per month, 10 Gigabytes of storage, and more).
That promises to be a very exciting 2010!
The software industry will be part of the underpinnings for the jobs of the future. (You can read more of my thoughts on the importance of Software to Michigan’s future here).
We created our company to create great software, and help others to do the same. In the current climate, we are holding a series of low cost labs to help developers learn skills currently in demand. Free scholarships are available for developers currently unemployed and in need of updating their skills.
Please inform other interested developers of the event.
There is still time to register for the MSDN Developer Conference in Detroit, this coming Thursday.
If you missed PDC, this is a chance to get a look at the major content announcements from that conference. You’ll get sessions on the Azure Services Platform for Cloud Computing, Client and Presentation Technologies, and Tools, Languages and Platforms. You’ll learn how to build applications for Azure the Live Platform, and Live Mesh Services, and how to use SQL Data Services for storage in the cloud. You’ll see what’s next in ASP.NET, WPF, and Silverlight. You’ll learn what’s next for C# and VB.NET, what is Oslo, what’s the F# buzz about, and what’s coming in VSTS 2010.
That’s in addition to side events like the Community Courtyard, and Women Build.
I’m giving the talk on the future of C# and Visual Basic, and I’m thrilled with the content. You can register here: http://www.msdndevcon.com/Pages/Detroit.aspx
Paint Wars is a game that Chris some of his classmates wrote for a senior project at the University of Michigan. The original game was written in C#.
There is a purpose in bringing Paint Wars to CodeMash: Chris and Mike Woelmer have been working on re-writing Paint Wars in F#. The plan was to understand how F# might provide better support for some of the computing needs for a game. Also, was F# a more productive environment? If so, for everything, or for only some tasks?
Chris will be blogging about what they learned during this process. If you want to learn more in the meantime, visit us at CodeMash.
If you want to learn why we feel this was time well spent, Anne Marsan said it best here.
Dianne Marsh (who is on the speaker committee) posted the final list of the CodeMash 2009 sessions. Wow. She and Jason Gilmore did an incredible job somehow selecting 60 sessions from an incredibly rich pool of submissions.
I'm rather proud that our little company accounts for 4 of the talks. Lots of prep working coming, but it's great.
Even more, its amazing how CodeMash hsa grown over the three years of its existence. It's been a great success, and the entire committee deserves thanks from all of us.
We’ve got a great treat for Ann Arbor .NET this week. Mark Mydland, from the Visual Studio Test edition, is coming through our region to speak at a variety of user groups. (Thanks to Jennifer Marsman for setting this up). It promises to be a fun evening, because in addition to the talk, Mark wants to know as much as possible about issues customers have with the product.
As always, AADND takes place on the second Wednesday of every month, at 6:00, at SRT Solutions office in downtown Ann Arbor (206 S. Fifth Ave, Suite 200). Please stop by.
Here’s the abstract and bio:
The phrase “drive quality upstream” has been abused so badly by ALM software vendors that it has to be relegated to the platitude junk pile along with such all time favorites as “work smarter not harder,” “Think outside the box,” and “Synergistic leveraging of code reuse.” Before we drive quality anywhere we need to give quality a seat at the table. VSTS Rosario release will do this by automatically gathering critical information about the project and code and making that data available when, where and to whom it is needed. During this discussion we will examine how Rosario impacts quality across the application lifecycle by:
• Allowing testers to provide developers with details about what the code did instead of just providing the details about what the tester did.
• Allowing development leads and architects to visualize and understand their current code (not the code they wish they had, but the code they really have) so that they can minimize the impact of changes; and
• Allowing developers to understand the impact of their changes in terms of affected tests, concurrency and bounds checking.
The Rosario release of VSTS will bring all project stakeholders together to allow richer information to be shared across every role to make software quality accessible and achievable.
Mark Mydland is the Principal Group Manager for the Visual Studio Team Edition for Software Testers product at Microsoft. In the past 12 years, Mark has worked as a developer and consultant across a wide variety of applications and industries. Mark first joined Microsoft in 2001 working as a member of the Natural Interactive Services Division (NISD). During his time in that group, Mark was the development manager for a team focused on analytics for assessing the efficacy of natural language interpreters with a particular emphasis on driving authoring simplification and relevance quality for user assistance. Based on this work, Mark filed numerous patents and coauthored a paper for the SIGIR journal. In 2004, Mark left Microsoft to work as a Director of Development at Getty Images where he led a change in process from a traditional waterfall methodology to a scrum-based agile approach which brought the release frequency from 12-18 months down to 1 month. Since Getty made extensive use of VSTS, it seemed a natural fit for Mark to join VSTS on his return to Microsoft in 2006. Mark received his B.S. from West Point in 1991. He has also held positions with USWeb/marchFirst and Andersen Consulting/Accenture. ec
All of these projects are Open Source (using the Creative Commons license for content, and the MIT license for code). If you would like to contribute, visit our GitHub Repository. Or, if you have questions, comments, or ideas for improvement, please create an issue for us.