Agile Development

How do you get from start to finish on a project?

Do you plan out every detail before you begin, or do you start with what you know and go from there?

If you're launching a mission to mars, you probably have to think through every step before you start the journey. But when you're building a website, there are so many options in design and features that you don't really know what should be done until you start making decisions.

When does a project really start? A business or organization needs to be able to communicate with their customers and audience, leading to building a new site, doing a redesign, or making some updates. Their leaders are talking about the issue and wondering about how to address it when they are referred to a developer who can help. It seems like a good fit, but they need to know what to expect and how much it will cost. The developer may have a picture of what they want, but having not yet seen their site's code or talked to all the stakeholders who have opinions, it isn't clear yet what to build and how long it will take.

How long could it take? This matters a lot, as ultimately it determines how much it will cost. The developer needs work, so they have a minimum price to cover their food and rent. The organization has a limited budget. You need to have a conversation around the scope of the engagement and what can be accomplished within that time. There are often hard constraints on the client's side. Let's say they have a $10k max budget to update their site and make the layout responsive for mobile devices, and want it done in 2 months before their next conference. Great! With those things fixed, the only question is what can you realistically accomplish within that timeframe. In early conversations, a lot of ideas fly around. Keep track of the ones that resonate with people, and note the difference between something one person cares a lot about vs something everyone needs. You will not be able to build everything that comes up, so it's important to choose the right ideas to include in the project. If you nail it, the client will likely come back for more updates in the future. Good help is hard to find :P

We've encountered a classic tradeoff in developing technology. You can work fast - taking shortcuts or hiring more devs to hit a deadline, cheap - downloaded themes or overseas developers, or good - well designed and built, but slow and expensive to produce. The rule is you can pick 2. As new developers, we often start off as fast and cheap. Maybe your first project for a client is a wordpress site with a cheap theme that you put together in a week. You learn a lot and the client gets a good value, but the lack of experience means there's a lot left on the table to improve and increase the desired results for their business. You also do some math and realize you'll have to find a client like this every week to make ends meet. Over time, we move towards doing high quality work that is neither fast nor cheap compared to your first site, but still delivers incredible value to larger clients. In this range, it's not about how much dollars a project costs, but how much it will make and the comparable cost of another developer's bid. You can charge $1m or more to redesign a large organization's website or ecommerce platform if that increases their revenue by $5m. This is the work of big marketing agencies rather than a sole web developer.

Agile development is the process to break ground on a project before the plan is formed. You have a budget, timeline, and an outline of requirements and your design process will turn that into features to build. There is a need for frequent communication to coordinate work between designers and developers, and make decisions that could involve many people within an organization. The gist of agile development is focusing on one top priority at a time, working on it for a chunk of time (a sprint), then sharing your work for feedback and deciding what to do next. This process is meant to deliver the most value by bringing designers, developers, and stakeholders together to work through decisions that affect how the system will look and perform. More importantly, we are deciding together how to spend our available time and attention on each feature. Agile projects can start with big ideas for features that reach a good enough point in development to work on something else. This Minimum Viable Product concept means that you've build something functional that will work for users. Spending more on it may be worth more later, but right now there are other things that need to get done. Working in this way allows us to create the most value in the time we have and shows the client where their money went along the way.

Most teams will use agile development, sometimes with a clear schedule and others loosely. If you're on your own, it's good to learn about as it resolves some issues you'll face with managing projects and communicating with clients. It's a best practice with lots of information you can find online from experts who've tuned the process over their career.