Agency Vs Client side... what is better?
One of the biggest things that can alter how you architect your CMS project, is the environment you're working in. When dealing with large co-corporate websites, you will either be working for a digital agency who are specialists in delivering CMS projects, or, you'll be working directly with the client in-house. If you have never worked for an agency, I think a fair comparison would be a modern day factory in terms of CMS delivery (some people will crucify me for this statement.. carry on reading though!). An agency will have a lot of clients, a lot of projects that need to get delivered and usually a very tight budget. For example, when you work on a new build, the project price will usually have been agreed upfront and its your job to get the site out within those constraints. When the price is agreed upfront, you will have limited time to scope the project and a limited amount of resources that can be spared and a deadline. In most cases this agreement on price and timings usually happens before the project is fully spec'ed out. One of the benefits of working in an agency is that everyone you work with is impartial. None of your co-workers actually work at the client's offices, they don't have any internal politics to deal with, all your team care about is creating something epic. No one in an agency needs to get something implemented to show off to their bosses, no one you work with cares about which department gets more visibility, no one has anything to prove, all agency workers care for is making the best product they can. This means getting shit done is a lot easier. Agencies are geared up to get projects done quickly and efficiently (like an assembly line). Everyone has a slot to play and everyone works until its shipped, then it's onto the next one. When you work at the client's office directly (client side) the ball game is completely different. There are no real fixed costs, the business can change its mind whenever and you have to deal with internal politics. When you work client side, you work with people who care about the brand and product as that's where their pay check and next promotion comes from. Client side staff are a lot more precious about their 'baby'. When you work client side, you have to get used to a lot more give and take in design and approach. It's more about being fluid, open to change, adding value where you can. In an agency, if you like delivering, then this is where your preference might be. Everyday you're late delivering, the company make less profit on the project. In agencies, you get a lot of support and people to bounce ideas off, as you work with other experts and talent. Client side, you have more freedom to create art, you may be given extra time to create something that will make the company more money long term, you are more of a linchpin in getting the project delivered. Provide support, hand holding and a whole other bunch of things along the way are all included in the job description. In your career, it is likely that you'll swap sides numerous times, so how does this affect your planning? At an agency, you are usually expected to do a lot of specification upfront, think Waterfall at it's best. When prices are fixed, you need an agreement upfront about what will be delivered that everyone signs off on. How else will you ship successfully? Having an upfront specification has pro's and con's, you also have less dicking around throughout the project as the project's well defined, people can't change their minds as easily without a price tag attached, the project's agreed, everyone you work with knows the process and the process has been stacked in the favour of delivering fast Fast delivery can be exhilarating but sometime you have to ship before you're happy with the end product; is this bad? Not all the time, you came, you saw, you innovated and now you can move on to the next challenge. Client side, projects are never really finished, after the first delivery phase the product evolves, the business will want more features and development continues in effect forever. Cost is always important but when you're working in-house, much less so, as the importance is making revenue and making revenue never finishes. Whenever you work client side, you will always have impossible deadlines but the difference is that the company won't be losing profit on the project as it's not a fixed price transaction. When you're working with a client, you're more likely to be able to introduce your own process, unit testing, yeah sure? You tell us ?? You have the paint brush and canvas.. but half way through, the client might decide they want a sculpture... sorry can you just change this? Client side, people don't usually understand the web delivery business, that's why they hire specialists and expectations can vary... the term aggressive time-scales is thrown around a lot. Setting aggressive time-scales can be a great motivator but a lot of the deadlines can seem to be plucked from thin air. When I work client side, I try to be more blunt in my yes and no's. Client side development takes longer, you normally work with people who aren't CMS specialists, so how can a project move as quickly when people are learning as they go? Client side, you may get a lot of comparison with other in-house projects as its the only thing the company may have to compare with. This comparison might be the same as comparing the sun and a goldfish, the projects are completely different but it's the only measurement available I like to compare the contrast between an agency and working with a client to a TV show I used to watch called American Chopper. Senior, the Dad, was very much an agency man, he was very engineered, driven, design up front, follow the spec and ship. Junior, his son, liked working client side, the design process can be more fluid, things changed when he had a better understanding, you can change your mind as you go along and he had a greater emphasis about trouble shooting on the fly. In the show you saw the tension as the two different ideologies met. There is not better approach, they are merely different. Understanding these differences helps you to be able to make your plan. When you're working in an agency or client side, you need to cater for this in your plan. In agency land, you need to be comfortable creating a better up front plan. Client side, you need to be more inventive with your approach and accept change will happen.