If, for some reason, you have a handoff to another group before the product can be released, step back and examine why. It's not a crime, but it does create another step. Is there a good reason for that step? If so, consider ways to integrate that step into your work. Is there a way to integrate?
The more you integrate all the work for a feature into your cross-functional team, the more agile you will be. That is, the more able you are to release an increment of product, get feedback, and accept change. And, that's the point of your definition of done.
So, when you think about done, think about a definition of done that works for your team and your environment. And, if your definition of done is not release-able, re-examine your definition every so often to see if it is still working for you. Maybe things have changed.
Back when I was a nipper, learning how to program was a painful experience. At home, I would labour over 68000 assembly language trying to program sprites. At school, I laboured under the pitiless Mr Eales, who tried unsuccessfully to indoctrinate me in the dark art of LOGO running on a BBC Micro, in his own inimitable brand of sadism.
These days, learning to program needn't be quite so painful. A rising tide of online programming schools is making it easier for people to learn the basics of any language, and take things further, gaining a respectable, useful knowledge. They vary in format, running the gamut between interactive and simply informative. Here are a few to whet your appetite.
This site provides interactive browser-based lessons, explaining the basics of programming and explaining what to type and where, so that you can get a solid idea of programming rules and structures.
This higher education site covers a range of beginner, intermediate, and advanced courses. It is broader than Codecademy, covering physics and statistics in addition to meaty programming topics such as how to build a web browser, and HTML 5 games development.
Code School offers a variety of in-browser programming courses covering Ruby, Git, CSS, and jQuery among others. Some of the courses are free, while some cost money. The service is aimed at both individuals and teams, the latter of which can be monitored by a manager. Code School also runs a couple of other sites: a free Interactive Ruby tutorial called TryRuby, and an applied, tongue in cheek Rails course called Rails for Zombies.
Aimed at new and experienced developers, Treehouse has two plans: Silver, at $25 per month, and Gold, at $49 per month. Both give you access to over 700 videos, but the premium plan includes access to interviews with industry pros, project feedback, and new ideas to inspire your programming skills. Like the other sites, it enables you to learn by doing, rather than simply watching the videos. If you are into iOS or Android development, Treehouse has special tracks for these.
I'd be remiss not to mention this heavy hitter, which offers a range of novice, intermediate, and advanced courses covering everything from an introduction to C programming through to database administration, PHP, and Java. The price for these courses is a little steep, though; even a basic introduction to JavaScript will set you back $450.
Lynda.com is heavily video based. Instead of providing in-browser interactive coding tutorials, it provides videos to watch, along with exercise files to play along with using your own software. This approach stems from its breadth of courses. Detailed programming tutorials for Java, Perl, ASP.net, and Ruby nestle alongside other courses ranging from negotiating your salary through to advanced photo shop CS5 tutorials. There is something for tech-heads of all kinds here. The site had 187 courses designed for developers at last look.
Yes, Google is your friend, but I'm not fobbing you off by asking you to search for 'Python courses online'. Google runs the Google Code University, which contains a variety of educational materials covering programming, web security, Android, and distributed systems. Materials are scattered and noninteractive, but they can be useful pointers. The University offers discrete classes in Python and C++, along with online coding exercises. These classes aren't designed for glitz and glamour, but they are instructive for the already technically adept who want to extend their range.
This site features courseware from a range of universities including Stamford, Princeton, and the University of Toronto. There are some applied practical courses, such as Functional Programming Principles in Scala, with specific programming exercises. Some courses, such as Introduction to Databases, are self-study, meaning that all of the online videos and materials are available at once. Others are released at a pace set by the University, and result in a certificate.
Some of these courses are more intensive than others, and aimed at a higher level, but that's one of the great things about learning online; there is something for people at every stage of knowledge.
Of course, the gap in most of these online courses is real world experience. Learning how to code in a browser is one thing, but applying that in a commercial environment, which will have its own restraints and requirements, will present its own challenges. Still, in many ways it beats teaching yourself out of a book. And given that many of these are entirely free, or at least offer a free trial, it's worth a go.
Maybe I'll even have the confidence to try. Mr Eales told me that I was going to fail my A-levels, but I still turned out with a respectable B. So there. Not that I'm bitter, or anything.
Microsoft launched Windows 8 late last month, to a storm of controversy and uncertain initial sales. What is going on with Windows and should you care about Windows 8?
The controversy comes as no surprise to anyone who has been paying attention. Windows 8 is two operating systems in one.
On the desktop side it is a slightly upgraded Windows 7: slightly faster and quicker to boot, revamped File Explorer, better Copy function, improved Task Manager, Hyper-V virtualisation, and a few other things, though a little less pretty thanks to the removal of the transparent Aero theme in favour of a plainer appearance.
These are nice improvements, but the real innovation is in the new Windows Runtime platform, in which apps are sandboxed, support touch control, run full screen, and are easily installed from the Windows Store or by distributing an application package, which is called sideloading. Sideloading is mainly restricted to developers or enterprise deployments.
Microsoft ensured that the tablet personality would not be ignored by replacing the Start menu with the Start screen, a new-style app. This also ensured that newcomers to Windows 8 would find it unfamiliar and difficult to navigate.
Another contentious issue is that Windows Runtimes apps - officially called Windows Store apps - look stupidly large and bold on large desktop displays and do not work at all across multiple monitors.
Underlying Windows 8, especially in the new tablet personality, is a design concept with a couple of notable features. One is "content before chrome", the idea that content rather than screen furniture should be foremost. This has led Microsoft to have many essential controls hidden by default; you have to right-click or swipe to see them. You can see the point, but unfortunately this is bad for learnability.
Another is a grid layout, giving rise to the tiled appearance which characterises Windows 8. It is neat and logical, but constantly looking at boxes can be wearisome.
That is the preamble. What is the business impact of Windows 8? Here are a few observations.
One is that the learnability issues in Windows 8 are sufficient to deter upgrades, both in the consumer and business market, even though it is an improvement on Windows 7 once learned. Bearing in mind that the desktop improvements are relatively minor, most IT administrators will conclude that Windows 8 is not worth the hassle.
Therefore, we can expect only a slow uptake by businesses.
Against that, Windows 8 does work much better than Windows 7 on a tablet without keyboard and mouse. What if you have a project which is suited to tablet deployment, or users who simply prefer to use a tablet, does Windows 8 make sense then?
In many ways it does, with easy app deployment and a touch-friendly user interface - provided you stay away from the desktop side. However, it is up against Apple iPad and Google Android which are more mature as tablets, and already well understood by users.
The availability of Office and compatibility, in the case of the x86 version of Windows 8, with existing applications may swing it for Windows 8 in some instances, though since existing applications are generally not designed for touch control that compatibility is less useful than it first appears, if what you want is a tablet.
Windows 8 strikes me as a decent version 1.0 of a new tablet platform, though with some of the weaknesses that you associate with a 1.0 platform. The modern-style Mail app is poor, for example, which is surprising given how critical it is.
Considered as a tablet OS, Windows 8 is already usable and has plenty of potential; but the hard question is whether Microsoft is able to establish a third tablet platform at this stage in the game. The company has the money and the resources, but has struggles to engage its developer community, OEM partners or retailers to fully understand and support Windows 8. In this context, the unexpected departure of the key executive driving the platform at Microsoft, Steven Sinofsky, looks like a disaster.
On the developer side, Microsoft lost substantial trust and goodwill over the repositioning of .NET in Windows 8. After telling developers for a decade that .NET was the future, the company now says it is one among three equals, with C++ and HTML/JavaScript the other two. The way this was communicated, with little flow of information especially during most of 2011, left developers unsure how to plan future client applications and some simply migrated to other platforms.
Microsoft's biggest problem may seem nebulous, but it is real. The Windows brand is strongly associated with desktop, keyboard and mouse; the name also brings to mind unwelcome associations like forced reboots, virus warnings and troublesome setups. The new Windows 8 tablet platform is designed to escape that legacy; but changing public perception is not easy. In addition, it has to support its legacy since much of the world's business runs upon it.
The task of making Windows a successful tablet platform may be as hard for Microsoft as for Polaroid or Kodak trying to make the transition from film to digital; and those stories do not end well.
This translates to a whole lot of uncertainty, which is not what businesses want to hear.
Personally I like Windows 8, but its success and in particular the success of its tablet aspect is by no means assured.
That brings me back to the current state of play. Windows 8 is out, and it is controversial. Where is the Start menu? Why are there so few decent apps?
Since these issues were well flagged in advance, you would think that Microsoft was prepared for them, and ready to suffer some difficult quarters while building up the app ecosystem, working with its partners to help them with the transition, and energetically preparing service pack 1 with performance and usability fixes.
The alternative scenario is that Microsoft allowed itself to believe that the world would be instantly won over and when disappointed will respond with a lurch in another direction which would be fatal.
It is all fascinating to watch, but from a business perspective the right word is caution.