A tip on learning Silverlight. Throw away your code

You can stare at that blinking cursor inside Visual Studio all you want, it’s not going to give you an immediate insight into how you should architect your Silverlight solution so that it can be reusable and scale.

It’s not that you’re an idiot or aren’t good at programming, it’s just that you are trying to juggle learning Silverlight and building it at the same time. You’re already stressed, at making some bets around adopting the product or maybe you’re trying to still decide if this is still a good bet. Don’t add more layers of stress by trying to find a way to keep your entire code base re-usable.

Yes, your background in ASP.NET or WinForms is going to help you a lot going forward and i bet you have a bunch of best practices or albeit ones that you’re comfortable or at peace with (screw that guy who tells you you’re doing it wrong, did you ship? yes, well back off is what I’d say).

Silverlight is going to be different though, it’s going to require you to rethink a lot of things you’ve learnt in the past. Now you can blame the product for making you change your behavior, sure that can be an easy way out i guess, but you’re smarter than that and you adopted this for the right reasons. You’re rising to the challenge, and i’m telling you now, the code you right in the first phase of your adoption isn’t going to be poetic.

Stop wasting your time trying to build a framework that is scalable, you’ll do that in a few months. Instead, get used to the feeling of producing a solution one that you can throw away – yes i said it, throw away – in a few months from now.

Just ship. As time passes you’ll get experience, just like you did with the technology you’ve just spent x number of years spanking to death. Only this time, you’re going to be in the next early majority and you know what, it’s going to be more fun – i guarantee you.

I’ve spent close to 15 years programming for the web, i miss it. I enjoy it and I’ve used nearly all languages associated with the web (you name it, I’ve written an app for it) and for me as a Product Manager for Silverlight, I often grow jealous of the work you do.

Do me a favor though, practice more. As when I leave Product Management for Silverlight and I one day jump into the hot seat with you, I expect – no – demand you teach me what the best practices are.

The guys on my firewall can’t help you just yet, as we’re busy building the actual product itself, but soon once it stabilizes our teams over at Patterns & Practices and Framework crew, are going to show you the Microsoft way, but that doesn’t mean its the right way, it’s just our preferred way.

We hope by that stage you’ll contribute back and we’ll move forward in Rich Internet/Interactive Applications (RIA).

Throw away your code, trust me, you’ll be better next time.

Related Posts:

Don’t abuse the Desktop.

If you’ve read any book on design patterns, prospective memory is bound to come up. A lot of folks may read it and go “ahh, nah, i don’t know what to do with that” and i state this as i constantly wonder as to why applications continue to hassle users to “Save this to the desktop”.

The desktop inside windows in my mind is like your desk in your office. It’s your surface area where you keep things that you can recall at a later date – “I’m going to put that TPS report in the upper right of my desktop surface, so i know where it is later”.

Problem today in software land is everyone keeps asking you to keep their TPS Reports on your desk and either you’re too lazy to agree/disagree or you didn’t notice they just did it. Pretty soon your desk is cluttered with lots of paper and it’s hard to find your chosen items vs.. everyone else’s.

Don’t abuse the desktop.

At present I’ve not seen an installation experience that tackles this problem other then a weak check box that is default checked (like somehow its important that you clutter my desktop) and that’s essentially your way out of this installation spam.

It doesn’t work really, as firstly you’ve got to be conscious of the fact that the checkbox is asking you “Would you like me to add to the clutter” and secondly making things “default checked” is an assertion really, much like “Push Polling” – it casts a prejudice up front and rarely have i seen actual self selection work.

Instead we should approach it differently. Instead of approaching it as a default checked item, allow the users to opt in manually and educate them on the power of the desktop itself and why it exists – as often I’d argue folks assume its simply part of the vortex of “things i don’t understand about my computer”.

e.g.:

Would you like to save this application shortcut to your desktop? Yes/No

The desktop is where you keep important information on your computer that helps you remember where things are – treat it like your desk in your home/work office.

Something like that anyway.

I’d argue the desktop today has fast become the wasteland of “icons that i’ve long forgotten” or “those icons that get in the way of viewing my desktop background”.

Related Posts:

What does a potential Silverlight Adoption Lifecycle look like?

I’ve been working in this industry since i left high school back in 1995, and I often think about my journey to date and how I’ve adopted a technology. I then as a Product Manager on the Silverlight Team constantly try and put myself in you, the adoptee’s shoes. I’m constantly thinking about what it takes for you to adopt and what are the motivational events that have impacted you along your journey.

The below is my own personal experience / observation of the industry in general. It doesn’t stop at Silverlight either as prior to Microsoft I watched folks do the same with Macromedia Flash and then Macromedia Flex.

Not to mention AJAX and so on, even HTML! – yes, I watched the birth of HTML unfold into what is now a commercial entity known as oxygen ;) .

The Adoption Curve.

clip_image002

Contact. You’ve found the word Silverlight fly past your senses, you’ve not pinned down what it is but its the talk of the town

Awareness. You just finished reading something about it and have a somewhat bit of knowledge in and around what it’s capable of doing.

Understanding. You just finished a tutorial, training session or brown bag, overall you’ve got what we commonly call a “basic” understanding of the product.

Evaluation. You’re now writing a quick prototype of a project you’ve thought about making in Silverlight. You’re still unsure, but the product has captured your interest levels.

Trial Usage. You’ve built a first draft of your Silverlight solution, and you’re essentially shopping it around for feedback and help you up sell / include this into your peer’s technology radar.

Adoption.You’ve built your Silverlight solution and are ready to deploy, you’ve troubleshooted your way through learning the product and are now what we would call an “Adoptee”.

Institutionalization Your solution is in play, you’re now thinking about the next release or next project, you’re well on your way to success and have either a positive or negative feeling towards the brand.

The Learning Curve.

I’ve often thought about the whole competitive story around what it takes to adopt a technology. I know I’ve personally learnt more technologies than i thought my long-term memory could contain, but none the less they are there, crammed deep within the dark matter of which i call my brain (Java, PHP, C#, ActionScript, Flex, XAML, XSD, Maya, VRML etc).

The reason I do think about the competitive nature of technology is that in many ways when you read a Flash vs. Silverlight style post (insert Apple vs. Microsoft etc) it at times reads as if that technologists are easily conned into adopting a technology they’ve never used before.

In that the x number of years they’ve spent nurturing their chosen technology could easily be diverted to the new shiny toy that they have before them.

I put it to you that, folks aren’t that easily swayed, that often its simply a case of a number of factors. They are:

image

Boredom.You’ve been using X technology for the past N years. You’re essentially peeked in terms of all that you want – not can – learn from the said technology. It’s time you explored your horizons and shop around for what’s the latest & greatest, that or research an old technology simply because of the nostalgic geeky cool flavor it brings to your technology palette.

image

Goldrush.You’ve seen how much others are making off the Y-Technology and you’re keen to get some of that action. You are motivated my greed, but that’s ok, as in the end getting a leg up in life is fair game. You typically would of probably ignored this technology in the past, but all the other kids are doing it, so you’re essentially force fitting yourself to the adoption.

image

Duress.You didn’t want to adopt, but you’re forced to due to a project you’re working on or about to. You start off in a negative state, in a duress state. You’re constantly trying to marry your existing skills over to this new technology but are finding it a rough road to follow. Eventually you figure it out and have an overall negative / positive emotion around the technology. It’s at this point you decide to either continue to pursue the adoption or abandon and retreat back to your preferred X-Technology of choice.

image

Curiosity.You’re neither bored or motivated by gold / project. You’re simply one of those people who love to explore no matter what the technology. To you, technology is about the art of creation and problem solving and you tinker with them like someone explores a music library – all music is good, it just depends on the listener.

Summary.

There are different motivational reasons as to why someone adopts. There is no one fits all approach, and given in today’s IT environment there are so many moving parts to keep track of, it’s not an easy thing anymore.

In the old days, I remember learning Delphi vs Visual Basic. I choose Delphi simply because I couldn’t grok the VB way of code, to me the Delphi seemed more natural. Delphi didn’t get the uptake as much as VB did, so what happened?

Companies like Adobe, Google, Microsoft, Apple, Sun etc all have an offering to provide you all. The main mission overall is to highlight the technologies strength, divert from the weakness and encourage you to at least get as far as the Understanding stage in the life cycle. From there its entirely up to you, as that’s where the freedom of choice really kicks in (there is only so much a company can market).

It’s from here that you decide based on merit and personal experience (aka Time vs. Commitment) and ultimately this is the true test for these companies. As for us in Silverlight this is where if were to take a pulse at your confidence level, you’d tell us data that I’d rate as pure signal. As this ultimately for us is the tipping point of success vs. failure for the product as its our job to make sure you understand what the product is, ensure it’s easy to learn and lastly reassure you that you’re not alone – as nobody likes to actually bleed when it comes to bleeding edge adoption.

Is that all?

Next Post, how the human mind absorbs the adoption lifecycle, lets dig into cognitive science. The new fad i like to call “Cognitive Load Theory”, as once you fully understand how the human mind works and ways to seed information in both short-term and long-term memory, it gets really interesting… well for me anyway.

Related Posts:

Apple stole my whitespace.

I often meet up with a co-worker (Michael Bach, Product Manger & Designer for Microsoft.com/Web) and we talk all things design. As it for us is therapy given we are constantly surrounded by engineers within Microsoft :)

One insight Michael came up with the other night is that Apple own white. It got me thinking and the more we looked at how other sites are designed, the more we both agreed that in the end its very hard today to come up with a site design that uses a big picture and is done in white without someone saying “dude, that’s so apple”.

I’ve done some design mockups for microsoft.com/silverlight that i want to pitch to the team, but am very annoyed as the more i look at them the more i can see them being labeled “that’s so apple”.

Another insight is that we noticed these days a lot of the brightest and best website designs seem to evolve around a central image, in that photography is playing a vital role in the way sites are designed.

A big vibrant picture can actually hide a lot of “meh” in a design.

Example:

http://sethsaid.com/

With a big vibrant image, i found my initial reaction to this site to be well designed.

image

Now without.

image

It just seems flat? and very monochrome. You can find more at (Web Creme Web design inspiration) and have a look at BIG Image vs SMALL Image.

Now lets take a throw-away design I was tinkering with for Microsoft.com/Silverlight.

image

The design is ok, but the image for me lacks life in that without the image, the design would look very basic.

Now lets see what happens if I add some other elements that i got from another site (as it struck me as a great concept to mood-board together from).

image

The two look completely different imho, and it sort of brings new energy levels to the design – even though its a very very basic design in the first place.

Damn you Apple, damn you and your white space designs.

image

Scott Out.

Related Posts:

User Experience – The Kettle.

image

How many kettles have you owned over the years? is it more than one? has it always been the same one?

It’s a pretty straight forward device, you fill it up with water, it heats up and then you tip the contents out into a container.

Why then are there so many varieties of Kettles? Why are there constantly new ranges or approaches to the Kettle that come out each year?

The answer lies in the fact that end users are like Kettle owners, each has a unique preference and taste towards something we often take for granted each day.

image

Each time a kettle is designed, it’s done so typically with an idea of who the end user is and how it could blend in with the rest of the owners kitchen style.

Software is no different to the kettle in many ways, its job is to blend in with the end users desktop, compliment their confidence level and ensure it upholds the core functionality required in order to carry out the task.

I all too often see folks go off the deep end with the User Experience in their RIA solution, and I often ask if they’ve stopped boiling water and are doing everything but that simple task.

Keep it simple; keep it fashionable and always think about User-Centric Design first, engineering second. You’ll find life gets easier that way.

Brought to you by
RIAGENIC.COM – Where Design + Technology Intersect
.

Related Posts: