Web Design in Halifax Nova Scotia

Show Navigation 

9 ways we (nearly) perfected our development process

Posted On September 8th, 2012 Author Kyle Racki Filed Under Design, Business, Development,

I used to think process was an ugly word. Who wants to be neck deep in charts and documentation, wasting time when we could be actually doing the design or dev work? And it’s that kind of thinking that got us screwed over on jobs our first couple of years in business.

Well this year, I think we finally got it right. Sure, there’s always room for improvement, but there are several ways in which we nailed down, perhaps our most efficient, effective process of building websites and applications, and one that actually enhances the fun for us, while also ensuring clients get what they want in the end.

Take a look at this process chart I made a few months ago:

This process shows a more refined way that we go about a project that fits into one of two camps; Either a website built in ExpressionEngine or an application built within the CodeIgniter framework.

Putting the visuals first: UX first

We’ve recently adopted a UX-first approach to most projects. The bigger and more complex the application, the more important this approach is.

This might sound counter-intuitive. Surely visuals aren’t the most important part of an application? Actually, they are. This is because a) users of an application subconsciously pay more attention to how an interface looks/works than anything else and b) because working out the views first helps shape how the app works itself.

I could write a 30 page function spec that is articulate and detailed, but still doesn’t illustrate to a client what their app will work like in the end. People have increasingly less time for reading, and the same is true for clients. But show them through a sketch, a wireframe or even a fully rendered design what their product will look like, and now we can intuitively discuss, change and plan based on that.

In fact, nowadays we will not actually provide a fixed quote on any project that fits within our definition of ‘application’. This is because the variables are too great and it only leads to revised quotes, scope issues and changes down the road. It’s too early to know how an app will cost when our client doesn’t even know exactly how it’s going to work or what features they need. So we always recommend a UX project first, and then at the end of it we can provide a quote, and if it’s too pricey our client can take the design and run with it themselves, either in-house or with another agency.

Another thing we started doing more is separating visuals from functionality and flow by creating wireframes and flow-charts first and then creating mood-boards to establish visual direction.

A lot has been written about moodboards, so I won’t belabour the point, but in a nutshell: Moodboards are sort of like collages that help clients and designers focus purely on aesthetic design elements such as type, colour, texture, imagery without providing any specifics on how an end-product will work. It’s actually the polar-opposite of a wireframe, which is devoid of any aesthetics but concerned only with where elements sit on a page.

Original moodboard

Final design it's based on

Moodboards can also be executed fairly quickly so it’s possible to show two or three directions without the cost and inherent problems with fully designing multiple options.

Let them click, or how Invision solved my pain

Let me get this out of the way first: Invision is an awesome product.

I’ve long desired a good UX tool, but I found issues with every wireframing tool on the market. They often have clunky interfaces and make designing a chore. As a designer, I’d rather work in the desktop tools I’m comfortable in, namely Adobe Fireworks.

Invision let’s you do that, work in whatever wireframe program you want to, and provides an insanely efficient way to upload your screenshots, create hotspots and link the screenshots together.

What this means in the end is I can design a series of page views, whether low-fidelity wireframes or high-fidelity interfaces, and make them interactive so clients can click around in a prototype as they would if it were a fully coded application. Clients love getting to preview the app before it’s built, and doing this allows us to work out so many design issues and resolve feature enhancement ideas long before we’re ever in the guts of development.

Even afterwards, our developers love having the Invision prototype open along with function specs while coding. It gives them something to refer to and removes the guesswork.

Writing clear, in-depth functional specifications

This is something we’ve been doing for a while, but it’s an essential part of the process. A function spec is a fancy way of saying ‘A word document that clearly articulates in plain language how the application should work’.

The spec is essentially a script that gets constructed after the designs are approved by the client. They are important because certain aspects of an application cannot be communicated with a design, for example, events that trigger email notifications.

If the spec is well organized, detailed and clearly written, then it keeps the client informed about what is considered in-scope, and it leaves little room for developers to misinterpret how something is supposed to work, avoiding costly coding mistakes.

I love Google Docs for writing specs, because I can share it with the client and the developers, people can comment and version it, and it naturally evolves throughout development as aspects evolve and become more clear.

This whole design first and spec out later could be considered a very back-asswords approach and will no doubt cause disagreements between us and those who favor a more traditional approach, but I can say without a doubt that this has been one of the single-most important ways we’ve improved the quality and profitability of our projects and left clients feeling more satisfied with their end-product.

Dividing front-end and back-end

This seems like it should be obvious, but many shops will have a developer who is responsible for every piece of an application build.

I think it’s incredibly important for each project to have a dedicated front-end developer and a dedicated back-end developer who each work on their own parts and then work closely with each other to knit their code together.

Think of it this way; In a restaurant, you wouldn’t expect a chef to serve his own food to customers. It would break his concentration and lead to slow-downs in the kitchen and inefficiencies.

Similarly, the back-end developer should be focused on data moving back and forth within the application. Data is submitted through forms in the view, which then gets passed to controller code, then models which submit it to the database, and data flows back through the system ending up back to the user in the view.

This may be oversimplifying it, and in no way is meant to represent the incredible skill of developers who write elegant code within this MVC structure, but at the end of the day it’s all about data in, data out.

So if the developer doing this also has to worry about how the data is styled when it comes out in the view, it requires a completely different mindset and will only lead to a lower-quality application. Instead, let a front-end developer who is trained in design focus on writing the HTML, CSS and Javascript necessary to implement the visual design of the application.

I’ve seen the two working together in harmony and it’s a beautiful thing to witness. It also keeps the development of the app moving along in a more timely manner.

Breaking the build into phases

I’m almost embarrassed to say now that we never used to break large projects into phases. Instead once everything was set to begin building we just plowed through it and tested when complete.

That is a mistaken approach because testing only at the end of a project is the best way to ensure more bugs will be present and they’ll take longer to solve.

So this is why we now will take a large project and break it up into several phases, usually around 10. We start with the most basic stuff, such as account creation, login, forgot password etc. as Phase 1. And once it’s complete we test it thoroughly, working out any bugs as needed before moving on to the next phase.

Generally the more complex parts of development end up being around the beginning to middle of the dev cycle, with the later phases being equally important, but less complex components such as data export, reports, auto-recurring billing etc.

Basecamp is great for managing these phases. To-Do Lists are a great way to isolate each phase into general pieces of functionality that need to be coded during this phase, and then tying it to milestones in the calendar and assigning responsible team-members.

Proper Architecture

Architecting an application is important. One could simply dive into coding once the design and spec are complete, but it’s far better for the developer to step back and plan out the build from a technical standpoint since it gives her a working guide as she builds. It also assists any other developers who may be working on the app simultaneously or taking it over down the road.

This is not meant to be a technical article so I won’t go into detail, but essentially an architecture doc will contain names and descriptions of classes and methods and a map of relational database tables.

Version-control and code repository

It’s taken a long time for us to find the ideal solution for code repository, version-control and back-up system, but I think we’ve finally found the holy trinity of products. Beanstalk, Cornerstone and Subversion.

Beanstalk is a hosted web-product that acts as a centralized code repository. We set up a project, move our code into it, and then with Cornerstone and Subversion, each team member can download the latest version of an application from Beanstalk, write code locally on their own Macs without worrying about overwriting each others code.

Also, Beanstalk allows us to easily deploy the code to a production server for external user testing or demoing an application to a client.

Adding this suite of software to our development process has added an unprecedented level of professionalism and efficiency to our work-flow.

Proper bug testing software

We used to just use Basecamp to-do’s for bug testing. To-do’s are great for listing client feedback, design changes, or broad features that need to be added, but they really suck for bug-tracking. Bugs can be too numerous for a system like Basecamp to-do’s to be effective, so we needed a more robust solution for our application development process.

Then we found Sifter, a great web-product that also seamlessly integrates into Beanstalk. Sifter allows us to set up a project, track bugs that have various weight in priority, write detailed descriptions and upload screenshots.

A team member can change a bug from ‘open’ to ‘resolved’ meaning the tester should test it again, and once confirmed the bug is fixed, can change it to ‘closed’.

The bugs can be tied to milestones, such as phases, and I love how a progress bar shows how close we are to having the milestone reached.

Remote user-testing

The final piece of the puzzle in our process-nirvana is end-to-end user testing. User testing is important because once we have caught all of the obvious bugs in our software, the only way to check if it really is working well is to have real people test it and inform us of any issues.

At one time, we would have had to round up people off the street and sit them down in our office with usability testing software running. That’s all well and good, but it also is time-consuming. So recently I came across the appropriately named User Testing.com

User Testing allows us to set up a test by defining the goals and tasks we want people to accomplish. Then we can select a demographic of users who are made up of crowdsourced testers. Afterwards, we can view videos and written answers from users, having all their feedback gathered in one place. We can then edit, annotate, make clips and download videos so that the team (or clients) can review feedback and make changes accordingly.

In the interest of full disclosure, we haven’t actually tried this out yet as most of our large applications aren’t yet at the right stage for this kind of testing, but after reading the reviews of usertesting.com I’m really excited to try it out and I have a feeling it will become a valuable part of our process.

Any web designers/developers out there, please comment below and share what the most important elements of your process are.

SEO is a whole new game

Posted On June 23rd, 2012 Author Kyle Racki Filed Under Business, Marketing,

It used to be that the average person thought of Search Engine Optimization (SEO) as a series of tricks that a professional expert used to trick Google into ranking their site above a competitors'.

And for the most part, that was true. There's the old definition of a SEO being either black hat, someone employing cheap nasty tricks that got huge results for the short term, and white hat, someone focusing on quality content and link building which takes longer but gets long-term results.

In 2011 Google made black hats pretty well redundant for good, and even some strategies that the quality SEO's utilized has become less relevant. Google has updated their search algorithms with something called "Panda" which takes into account ratings from real human beings visiting a website. More than ever, this means that Google's criteria for ranking a website is based off of the following:

  • How trustworthy does the site feel?
  • How easy is it to use and navigate?
  • How engaging is the content?


What has become much less important are things like meta tags, headings and other technical tricks that were meant to assist Google's bots in indexing and caching the website.

The other big thing that affects SEO is social media. In the past, the amount of links to a website from a social network like Twitter or Facebook was not counted vary highly. However now social engagement is one of the most effective ways of showing Google that real humans care about a website.

So instead of a SEO strategy consisting of planning what keywords appear in title and meta tags, headings and anchor tags, it has become more imperative that the plan focuses on compelling, unique content, a well-designed interface and letting people know about it through a variety of social channels.

This is a change for the better, and will hopefully result in a better internet, where the #1 result for a keyword will be based off of the things we humans care about.

Tearing someone a new one - via email

Posted On April 17th, 2012 Author Kyle Racki Filed Under Business,

Email is 70% useless.

As someone unfortunately known in our office for writing 'Rackigrams', that is, pointed emails that are specifically designed to let someone know they're an a-hole, I have learned something:

Email should never be used to express anger when you want to preserve a relationship. It causes hurt feelings and needless drama, particularly because to the reader, you sound about 10 times angrier over email than in person (unless you're Steve Jobs apparently).

In an email, writing "I'm disappointed in your services" sounds to the reader like "I'M DISAPPOINTED IN YOUR FACE, YOU S.O.B". Talking in person however, we use inflection in our voice and soften our language with things like "Sort of", "a little bit", "pretty bad". If you aren't worrying about severing the relationship, then great. Go to town.

Now in a lot of cases, email can be great. Particularly when you want to send a message that has multiple components, broken out in headings, in a numbered list, and you want to offer up this soliloquy with no interruptions, no counter-arguments, questions or even expressions of agreement that get in the way of communicated your multi-facteted point, and keeping a handy record of the exchange. Just be sure that you are overly polite to compensate for the lack of inflection.

If you need to tell someone they're an idiot, do it over the phone or in person. Yes, it may require working up some nerve. A bit of uncomfortableness. But it's worth it.

Two incidents over the past month involved someone sending a nasty email and me responding in a nasty manner. In a way the results were achieved, but at the expense of good relationships.

On the other hand, two other occasions involved me being upset or annoyed at someone and waiting until I could speak with them. One was a client who implied in an email that something was our fault when it had nothing to do with us. I wanted to blast him, but instead I waited, called him, and kindly explained it to him. Some words were exchanged, but overall the tone was friendly and professional. Our relationship is good and we both understand each others points.

The other occasion was just in the last week. A trusted colleague sent an email to me and some other team members that sounded apathetic, flippant and irresponsible. Everyone who read it was understandably pissed. I felt my fingers reaching for the keyboard, ready to carefully craft a world-famous Rackigram, but then I relented.

We had a meeting booked in a couple of days anyways so I waited until after the meeting to discuss the email. As it turns out, our colleague had written it quickly and used incorrect language to explain his position. When he explained in person it all made sense and was much more inline with his character. Crises averted, problem solved, everyone was happy.

I hate to think of how it would of turned out if I had emailed him.

Podcamp Halifax

Posted On January 23rd, 2012 Author Kyle Racki Filed Under Headspace News, Design, Business, Marketing,

Yesterday I attended Podcamp Halifax, which is a great annual, free event full of presentations about the web and social media. It's a great place to connect with people face-to-face that you know from Twitter, Facebook and LinkedIn, and learn new things that can help you with your business.

Much kudo's to the folks who put it on including Craig Moore from Spider Video. To those who came, it was great meeting you and I hope to you next year (or sooner)

 

I was privileged to put on a presentation based on Aarron Walter's book, Designing For Emotion. It attracted a good sized crowd and seemed to resonate with the people in attendance. Here were some mentions on Twitter:


HarmonicDev Harmonic Internet
 
GREAT talks yesterday by @brightwhite @kyleracki @SpiderVideo and keynote speaker @julien #podcamphfx and big kudos to the event organizers!


HStu Hannah
 
Designing for Emotion session with @kyleracki is packed and has tons of great ideas about creating human websites. #PodCampHalifax
22 Jan



TheRedSparrow Carly Murray
 
Design for emotion is a full room, very exciting! #podcamphfx
22 Jan
 


RegisDudley Regis Dudley
Add an element of pleasure for people using the website. Make boring tasks fun. Via @kyleracki #PodCampHFX
22 Jan


mattrogers222 Matt Rogers
 
Love the analogy usable=edible. Need to make web experiences not only usable but pleasurable #designforemotion #podcamphfx
22 Jan

I've also included my presentation in a PDF form for those who attended if they'd like it for reference.

 

 

Next Page