Showing posts with label agile programming. Show all posts
Showing posts with label agile programming. Show all posts

Thursday, February 7, 2013

What you probably don't know about Microsoft's new direction

and why it's important for every Microsoft Developer to understand it...


Microsoft has finally let the other shoe drop on how their new Office/Cloud/Windows 8 strategy is going to work by releasing the details of how Office 2013/365 will be licensed and sold - and it's not just a shoe it's a hiking boot - landing with a big THUD.

There are some important new ramifications about how the entire thing will work - and it's important for you as a developer to understand how that changes what is still the predominant IT ecosystem on the planet.  Let me apologize now to the Linux, Apple and Android developers - this article is not for you - it's for those of us who have been working on Microsoft Apps for the last 30 years.

Let's start with a little history.  Back in the late 70's and early 80's a revolution happened.  Until that point computers were large, relatively complex beasts, controlled by a corporate entity (because they were too expensive for mere individuals to buy) and had one processor, one set of ram, and one set of hard drives shared by dozens of users through a terminal.  This had advantages and disadvantages.  It was easy to control software and access to that software, and easy to manage since everyone shared the same tools.  Of course you couldn't easily take your work home with you (you might consider that a good or bad thing) and the applications were very expensive and monolithic since it required the developer to have equivalently expensive tools to create the software.  In the late 70's personal computers peeked their way into the American home.  Initially crude and difficult to use - but relatively inexpensive compared to their mainframe counterparts - they created a revolution.  Suddenly you could purchase a system that would let you perform powerful calculations and perform difficult tasks in  your home.  More importantly, through the advent of the business PC you could have the same platform at work as you used at home and carry data back and forth on a portable storage device.  Also importantly - you could purchase a system to develop for this new platform that didn't cost an arm and a leg - which meant that new software and software improvements increased at an exponential rate.

Since that time we added in the ability to access your computer over the internet - and for computers to have access to shared data on the internet.  At the same time - through some serious investment in infrastruture, it became cheaper to get storage, processor time and bandwidth through major services like Windows Azure, Amazon AWS and other huge interconnected networks.  So in a sense we're back where we started from.  Our current devices are very complex and independent, but we're becoming more and more reliant on apps and storage that run in the cloud - simplifying the requirements for what our personal devices need to have.  Suddenly a tablet running a run of the mill low power processor can leverage gigabytes of data, bandwidth and the processing power of thousands of processors.  This means that - down the road - assuming we continue to live in a connected society our applications are going to become more and more like the original mainframe apps of the 70's and 80's.  Instead of buying machines with gigabytes or terabytes of  local storage we're going to be buying a simple inexpensive machine that leverages that cloud power.   Our operating systems need to be less complex because the heavy lifting isn't handled at the desktop any more, or even at the local server level.

With Windows 8 and Office 365 subscription services Microsoft has moved from the "software as a license you buy model" (which hasn't been eliminated yet - just deemphasized) to the "software  you subscribe to and get as needed" model.  An individual can now - for $100/year - buy any kind of device they want - phone, tablet, pc, laptop or something not even invented  yet, install office software on up to 5 devices they own, use a simpler version of that software on the web, get 27gb of cloud document storage to use or share with whomever they want (plus each of the other 4 users gets 7 gb of storage for a total of 55GB of available shareable storage for $100/year).  They get an hour of free Skype talking and sharing a month.  They get the latest version of office, allowing frequent updates to add functionality without the expense of giant new releases.  They get streaming of the software to a PC that isn't even licensed for Office to edit a document assuming the target is running Windows 7 or 8.  On the corporate side the same thing can be acquired (with slight variations in capability) for $240/year/user for enterprise users or $150/year/user for small businesses - and on the corporate side they add in sophisticated sharepoint capabilities and active directory management (doing away with the need for an active directory server, or minimizing it's need to being just a local extension of the cloud).  For $72/month they can have the same thing, without the locally installed office licenses.  In addition, with either a corporate or Live account your settings, files, and preferences follow you from machine to machine - even across platforms.  By the end of this year Gartner Group estimates that the PREDOMINANT way that websites will be accessed is via a phone or tablet.  It will outstrip desktop and laptop access - in 2013.  That's this year folks.

So what does that mean for you as a developer?  It means that Microsoft means to make cloud storage and apps it's end game - not just an add-on, and the day of the local server - and even the super powerful end user system are slowly - but surely - ending.  And if you think - well we'll just move to another platform - think again.  The largest competing platforms for end-user computing are moving in the same direction.  Apple (of course) saw this coming years ago and has quietly started phasing out desktop and laptop machines in favor of tablets and other simpler less expensive devices.  Google's play in the Android market focuses strictly on low powered machines that leverage the cloud.  Linux for the desktop?  Nice OS but used only by technogeeks so far. In the next 2-4 years you're going to see a huge shift away from expensive powerful, complex to manage servers and systems in your office or home and towards low priced, low powered systems that leverage the cloud.  And once they go cloud they won't be going back.  Don't believe me?  The only way to deploy a standalone Access application in Access 2013 is to deploy it to Azure and Sharepoint.

So what can you do as a developer?  For one - learn a cloud based system and leverage it's power - now.  I don't care if it's AWS, Azure, SharePoint or some other platform - but you should start to figure out how they work, how to make your apps operate efficiently and actively over a not-always-reliable internet connection, and how to make them scale so that you don't have to sell additional licenses to get additional power out of them.  It also means designing systems - whether they be apps, websites, or whatever - to adapt to a huge variety of interfaces and screen sizes - everything from hand-held phones to 50" 3d High Definition living room monstrosities.  They need to adapt to all sorts of interaction interfaces - the old fashioned keyboard, the mouse, the touchpad, the touchscreen, and the "gesture based" interfaces like the Kinect.  It means that data becomes a mix of BYOD storage (Bring Your Own Data) and corporate cloud storage - and how will you manage that and protect the privacy and security of data when it's easy to copy things from corporate sources into a user's private data store in the cloud.

It also means you should start to explore web and cloud based development tools. That quad core dev machine on your desk may well go away someday - and you need to be ready to use some of the new and sophisticated web based tools for software development in project management, compilation, version control, etc.  The distributed nature of today's collaborations will make that a must.

What happens if you don't?  Well how long did terminal based apps last once the PC was out?  How long did non-graphical DOS based apps after Windows came out?  How long did non-web based apps last after the internet took over?  You have some time - this isn't happening overnight.  But it IS happening and if you don't adapt there will be a day when you wake up and find your app or skills irrelevant.  And that day is approaching.

PS - if you're interested in migrating to the cloud and leveraging Office 365 OS-Cubed is a cloud expert - we can help you with migration, support and leveraging your existing infrastructure while using the cloud efficiently. 

Monday, January 17, 2011

Knowledge Athletes begins to promote Kajour

OS-Cubed has been the principal developer for the product kajour by Knowledge AthletesKajour is a real-time collaborative education platform, extensible and designed entirely with Microsoft products, including IIS, ASP.NET, VB.NET, C#, fCK, DotNetNuke, Microsoft SQL Server, and other technologies.  Based on a unique and custom REST engine, designed entirely in .NET using modern AJAX, JQuery and XML/XSLT, the system is completely real time, including logged chat, auto save functionality, full embeddable editing, real time scoring and grading, and full student accountability.

Knowledge Athletes is the brainchild of Dave Miller, a successful educator and entrepreneur.

The beta for the product was developed over the course of the last couple of years using our entrepreneurial development techniques, including agile, scrum and a fully collaborative process.  Funding for the project was provided through private investment and several SBIR grants which assisted in the base research for product features and capabilities, and provided proof of educational effectiveness.
From a "non-technical" point of view the system allows teachers to create homework assignment for kids to work on in an environment that is "Facebook-like" either individually or in teacher-defined collaborative groups.  Kids love this, and seem to prefer to do homework in kajour over other platforms.  Since all content is logged, and private only to the class, students are able to be held accountable for their input.  This allows teachers to guide students in the use of social media in a controlled environment, as well as opening new avenues for collaborative learning.  Kids call it "Facebook for homework" and teachers call it a revelation - a view into how kids think about and process their homework assignments like no other tool that they have found so far.

The product is still in beta release, with a limited set of participants.  If you are an educator interested in actively participating in the Kajour Trial, check out their website at: http://demo.kajour.com/, or click the button below.

Here is a video, developed by Mac Village Productions and Skeeter Harris, after the fold :)



Tuesday, May 19, 2009

Being a program manager

One of the key things that every software development effort needs is an excellent program manager. That manager's key vision, leadership and customer advocacy drive success. In How to Be a Program Manager, author Joel Spolsky gives us some insight on combining agile programming and program management in a productive way. Since Joel worked on the team developing the next generation of Microsoft Excel, he's qualified to speak authoritatively about dividing up large projects into manageable bite-sized pieces. Like at OS-Cubed Joel believes that one program manager should be responsible for a team of up to 4 programmers, and that work should be divided up by functional area.

The most important part of Joel's article states that the program manager must be the customer advocate on the team. They must look at every interface from the customer (or end user's) point of view, and express that point of view to the programming team. Their job is to help the programming team design something that users will find easy to use and appealing. If users complain that the program doesn't work - it's not the programmers fault it's the program manager's fault.

I think this is an important point about program managers. Too often development teams focus on the program manager's job of coordinating resources and delivering on-time and in-budget without defining their visionary status.

Joel goes on to say that - despite agile programming pushing prototyping as a methodology, the program manager must write specs - detailed functional specs from the user's point of view - not the programmer's point of view. It's their job to advocate for the user and build an interface that is the best for them. I typically fill this role within OS-Cubed, Inc. I have just enough programming and platform knowledge to be dangerous, but not enough to be so buried in it that it's all I think about. I would go on to state that a good program manager probably has a high "DI" in the DISC test and a low "C". I will talk more about DISC and how it integrates into a programming team later.

The program manager should not however, be the person writing up the actual specifications for how the product should be developed (that responsibility is the programming team lead's job), nor should the programmers report the the program manager because that would allow the program manager's ideas to run roughshod over the programmer's. This needs to be a negotiation between what is optimal and what is possible and both the user's and programmer's needs are taken into account.

Agile programming is typically about fast turnaround and constant customer approval. So the program manager must stay ahead of this curve, constantly re-examining the impact that feature and user interface changes have on the full vision. Sometimes it will be their job to control the scope of the project and to do that they need to retain and update the vision as it changes.

Joel's article is a great read, and I highly recommend both the blog post itself, and the links he offers for help and assistance.

Wednesday, November 12, 2008

An agile programmer team room

I've been reading and admiring the quick article on http://www.scissor.com/ about building an Agile Programming team room. While we have many of the same elements in our development environment there are many ideas here that I'd love to steal er borrow :)

I was surprised by how much their offices look like ours. We also have an open floor plan, tons of natural light, dual monitors at every workdesk, lots of available whiteboard space. One of the things I loved about their space is the overall storyboard with colored cards, and the weekly iteration rollover plan. Very nicely laid out.

Agile or XP is a methodology frequently used in early stage (and some late state) startups to rollout product effectively, iteratively, and with stable solid builds. The idea is to rollout stable usable versions of the application almost weekly. OS-Cubed's methodology definitely adopts many of the great ideas of XP, but we're always learning new things about how best to develop software.

I'm going to challenge my programming team to take a look at this and see what elements they feel might help them keep on track and develop better software. Thanks to scissors.com William Pietri for revealing some of their "inner geek"...

Followers