Showing posts with label consulting. Show all posts
Showing posts with label consulting. Show all posts

Wednesday, May 1, 2013

A Guide to Effectively Managing Your Solo Software Project



This article will help you create some very basic systems for managing your solo software project. It won’t help you decide what projects are good ideas, or successfully market your software, but following its advice will make you more likely to get to a finished product, instead of giving up in despair.
 

Who will find this helpful?


  • a hobbyist or pro using their spare time to build something they want
  • an entrepreneur building a minimum viable product for a business idea
  • a freelancer building a web or mobile app for a client
  • anyone who wants to learn by doing

I’m sure many people are already on board with the need for some systems to help guide the creation of their software, but I can literally hear some of your bloodshot underslept eye-balls rolling in their sockets and saying “processes and project management systems are for the office, this is just overhead that gets in the way of getting stuff done".

I beg to differ.

Why you need a system


Even a simple project has multiple moving parts. It may be that you’re capable of keeping track of them all, but that requires effort and costs you brain power, your most precious resource for software development. The reason for this is known as the Zeigarnik Effect:

The Zeigarnik Effect is the tendency to experience intrusive thoughts about an objective that was once pursued and left incomplete (Baumeister & Bushman, 2008, pg. 122). The automatic system signals the conscious mind, which may be focused on new goals, that a previous activity was left incomplete. It seems to be human nature to finish what we start and, if it is not finished, we experience dissonance.

The take home is, unfinished tasks will trouble your worried mind.  Storing your tasks somewhere trusted and finishing them as fast (or faster) than you start them, will free your mind for coding.  A simple system will serve this purpose, while introducing minimal extra effort.

1. Getting Started


It may seem obvious to you what your project is; but until you’ve written it down, and explained it to a few people, you can’t be sure that it’s well defined. Figuring out why you’re doing this project and what your goals are doesn’t take long, and will pay dividends down the road.

Create a one-page project charter to outline the scope, objectives and people involved with your project.  Your charter should answer the following questions:

What are your goals?

Get high level, ask yourself WHY you’re doing this, and what success looks like. If it’s a freelance project, establish this with your client.  If it’s a side project, by straight up about it. Are you developing a minimum viable product to test a business idea or is it just something you think would be cool to see or make your life easier.

Who are the stakeholders?

Whose input is important to guide your project to success? Maybe it’s just you, maybe it’s potential customers or a client.  How will you communicate with these people? How much influence will they have?

What will the product enable you to do?

This is akin to an epic user story for your product. Don’t talk about how the product will do what you want,  focus on what you want.

A basic user story format is:  "As a <role>, I want <goal/desire> so that <benefit>". This keeps the focus on solving the problem and avoiding tunnel vision around specific features for solving the problem.  For example the epic user story for your product might be “As a bowler, I want to know how what I eat for breakfast correlates with my bowling score, so that I can always eat the right pre-bowling breakfast”

How much time are you willing to spend on this?

Particularly if this is a side project, it will almost inevitably take longer than you think. At the outset, we tend to see the work breakdown at very low resolution. Once you’re face to face with a particular task, you see the fine details and nuances much more closely. In one of the most popular quora answers ever, Michael Wolfe deals with the reasons for this very astutely.

When it’s no longer fun and exciting, will you keep plugging away, or will you accept the sunk costs and move on? Decide beforehand how far down the rabbit hole you’re willing to go.

2. Doing it and Managing it

Planning

Since you’ve already created a scope now you just have to break it down into manageable tasks, ideally things which aren’t much more than what you can do in a given evening or two worth of project time.  Keeping your tasks small will help you to see your progress and feel great when you check something off.   

Tasks that are further down the road, will inevitably be more ambiguous; no problem, as they come closer to being executed on, you can split them up further.

Write each of these tasks on a sticky note, we’re going to use them to fill up your personal kanban board.

Tools


The Kanban Board


Find a visible place in your workspace and put up a whiteboard. Keep your kanban board really simple with three columns: Backlog, Doing and Done.

There are two simple rules for using personal kanban:

  1. Keep your work somewhere easy to see
  2. Limit your work in progress. Typically no more than 5 tasks at a time in the “Doing” column.   

Both of these rules would make Zeigarnik happy; they ease the burden of how much you have to store in your limited grey matter and put it somewhere you can trust you’ll see it.

Even when there is extra space in your “Doing” column, have a bias towards finishing a task over starting a new one.  Only introduce new tasks into “Doing”, if everything else is stalled, and there’s absolutely nothing you can do to move it forward.  

If you’re waiting on a domain transfer, go ahead and start working on wireframing. Don’t create a separate column for stalled or waiting items, even if you’re not working on it right now, it’s occupying precious brain cycles.

Time Tracking

No one likes tracking their time, and most time tracking software makes the process even less fun, but if you keep it simple, it can help to give you very valuable data and improve your sense of how long a task really can take.

Use your personal kanban to track when you moved a task into “Doing”, when you moved it into “Done”, and how many hours you spent on it.  You can do this just by writing it on your stickies like so:


Setting up these tools adds minimal extra time to the initiation of the project, and will pay huge benefits by releasing your mind from having to track all these items and allow you to focus on the execution.

Wireframing


I do believe that wireframing and mapping out the workflow of your product are very much worth your time. We use Moqups, which is really user friendly and takes no time to figure out.

Version Control


Even though it’s just you, using version control will help you to undo your mistakes and create an easily trackable history of your progress.

Git Immersion is a great tutorial for setting up a git system. If you want a cloud based repository, with pretty graphics illustrating your branches and merges, Bitbucket’s free plan should be totally adequate for you.

Execution


Here’s the fun part, I hope that creating the charter and setting up your tools only got you more excited about the awesome code you’re going to write.  

This is your project, it’s not my place to tell you which languages, frameworks and other technologies to use, you know what works for you. Unless this is a project intended to help you learn some new technologies and frameworks, you probably just want to get going with the least amount of new learning required.

Scope creep is the great enemy of getting things done. If your imagination, your client or other stakeholders are introducing new and wonderful features to distract you, nip that in the bud.  This is why you created your project charter. Keep it beside your Kanban board, where you can see it and remember what you’d first set out to do. If the project drifts from the charter, make sure there’s good reason for it.

Keep moving, do what you can to make some progress every day to stay motivated.  

3. Releasing 1.0 and/or Closing


Maybe you release your 1.0 and this project blow up into a huge success and becomes your life’s work.  Or perhaps you’ve met the goals of your original charter, but you see potential to go further.

On the other hand, maybe you’re completely done with this piece of software;  it’s served its purpose of satisfying a client, or teaching you what you set out to learn, or is now serving you as a handy little tool.

Either way, upon completing the first version of your project, it’s worth doing some work to close it out.  The scale of this effort really depends on the project.

At a minimum, you should archive your post it notes somewhere safe.  When starting your next project, they’ll be useful for remembering what tasks and time commitments were required last time.

Now sit down, have a beer, and contemplate how awesome your shiny software is.


From D.A.K Photography




References and inspiration:





-

Tuesday, March 5, 2013

The New Marketing: Agile, Lean and Loving

The debate is long over and Agile Development for software is here to stay.

But agile is getting to be much bigger than its beginnings in software. It’s spreading into many new areas of practice, and achieving prime buzzword status.

The advent of the internet and digital culture has had a huge impact on marketing. Perhaps more than any other sector outside of software, marketing has finally embraced Agile in a big way.

I wanted to learn more about how Agile is impacting marketing and digital agencies, so I sat down to talk with Jose Albis, founder of the Albis Consulting Group.

Q: Jose, how is Agile changing marketing?

Well, it’s not just Agile that’s changing marketing. I like to say that “In Today’s Marketing, growth is ALL: Agile, Lean and Loving”.

Being Agile is all about being responsive, creative and fast. Being Lean means working in iterative cycles, testing, measuring what works and what doesn’t and constantly improving based on data. Being Loving means humanizing brands authentically, building community, offering remarkable experiences and seeking meaningful engagement with customers. Noah Kagan calls it, Lovegasms.

These three ideas are changing marketing as we know it!

Q: Wow. Tell me about what Agile means for marketing.

Agile is a new way of doing marketing. It's a combination of traditional marketing, with the influence of the agile software development movement. It's driven by the nature of social media and digital culture, enabling brands to more effectively influence the universe by reacting to the rapidly changing conditions around them.

Being an agile marketer is like being Batman. Before Batman goes into a situation, he has goals and an overall plan, but he knows not everything will go according to his plan. So he has his utility belt with him, and at any time he can use whichever tool he needs from his belt. An agile digital marketer’s utility belt has tactics and strategies covering content marketing, A/B testing, landing pages, SEO, PPC, social media, contests, games, etc.

It's a shift away from planning out entire huge campaigns at the outset, and instead using the Scrum process. Planning a “sprint” of 3 or 4 weeks, it's more of an iterative process. After each sprint, we look back, see what worked, what didn't and then move forward. One of the frameworks that come to mind is the OODA loop.

Q: What's an OODA loop?

It's a concept that comes from the military: Observe, Orient, Decide, Act. Each sprint is a new OODA loop, we look back at the last sprint, see what worked, what that means, figure out how to use that, then execute. The speed and efficiency of the OODA loop can represent the competitive advantage of a small startup that is developing the same disrupting technology, against a bigger and slower giant corporation. Think of ‘first to market’.

Q: How closely does agile marketing resemble agile software?

It's very similar in its processes, for example The Scrum Process. I'm an industrial engineer, so it's very natural for me to look at a system and try to optimize it. Agile emerged from the world of software engineering which has special challenges, so it makes sense that engineers would create their own methodologies for managing their projects. Especially when the principles had been around for decades in the Toyota Production System.

Marketing has a lot of similarities to software, it's hard to plan the whole thing from start to finish, and it’s difficult to know how different parts are going to interact, until you build them and release them. Around 2005 or 2006, I personally experienced acceleration in SEO, PPC and Landing Pages which became more important, and marketing became more digital. Marketers were celebrating that direct response didn’t need 9 month cycles but only weeks or days, and at the same time Marketers became more dependent on designers, developers and IT in general.

The traditional paradigm is that marketers and engineers and developers can't communicate, like in the Dilbert cartoons.

Agile Marketing


But marketers had to learn to work with these IT departments, started to blend into Marketeering and they picked up Agile methods from them.

Q: How are clients reacting to Agile?

Most of my clients are finding it easier than ever before. Instead of me saying "First we're going to do 'this', then we're going to do 'this'... and we're not going to know anything until phase four, and it's going to cost you 10,000 bucks", they get amazing flexibility. Even my agreements are lean and agile, we fail fast to succeed faster. There's not a big commitment like with a big agency. It's very flexible and that way we learn about each other in the process. We work together for a few sprint sessions, and if the relationship is working well, we keep going.

Clients like it because we can get going right away, without having to spend tons of time planning up front and results are faster. A lot of the times we are working in projects that involve technology releases so the Scrum framework makes sense, like dancing to the same tune.

Q: What are some examples of brands doing agile really well?

Oreo is very agile with its use of social media. During the super bowl, the lights were down for maybe half an hour, and they managed to design and send out a very simple, clever, timely tweet within minutes, that was retweeted by thousands of people!

Their marketers are in a control room, reacting in real time and sending out materials designed for maximum impact.

Q: So why is it important for marketers to be loving?

What are humans, that brands are not, historically?

[John]: They’re physical beings? They have faces?

They are imperfect. Brands have always tried to look so good, so perfect, that they’re like a robot. That’s why, every time there is a challenge or an opportunity to apologize, it’s also an opportunity to display humanity, to be more loving.
Marketers should should think about how their brand would express itself if it were human. I, Jose, have my own human expressions, ways of speaking and thinking, and reacting to different situations. You have the human expressions that make you John.



So maybe your brand is "nice"... but everyone is “nice”, what is it really? Maybe your brand is assertive, like the Michelin man he’s like a super hero. Having that consistency is important and it's a huge opportunity for old brands to renew themselves.


Conclusion

Agile is changing the face of marketing, but it’s not alone. Being lean and loving brings the full package together and enables a brand to engage with the world in entirely new ways. These three forces are transforming the classic Mad Men advertiser into Marketing Ninjas,Gurus, and even Superheroes.

Thanks to Jose Albis for this fascinating discussion, follow him on twitter at @josealbis.

If you'd like to learn more about Agile, visit the Agile Development Manifesto and the Agile Marketing Manifesto.

-

Thursday, February 28, 2013

How to take your Agency Agile: Interview with Greg Morrell, Co-Founder of AgencyAgile, Inc.



Transitioning any organization to Agile project management can be difficult. When you add in the complications digital agencies face (fixed priced, fixed scope, but still lots of changing needs from their clients, to name a few) it gets even more complicated. I spoke last week with Greg Morrell of AgencyAgile who spends his time deep inside interactive agencies helping them to make the cultural and methodological shifts necessary to succeed at Agile. He was kind enough to share a few insights and experiences with me.

How is Agile different in an agency environment?

Agile methods were developed in the software industry, with a basic relationship between the product owner and the team.  Agencies are much more complicated, they tend to have more stakeholders and the projects and goals are much more open ended than software or product development companies.

In software development environments, teams and their internal product owners plan work against a schedule and have some control (as well as flexibility) over what gets built and when. But agencies provide services for hire in a world of ever-changing needs and market forces, as well as the ongoing need to participate with consumers' as they interact with brands. The sands are always shifting, however schedule is usually locked in (a hard date for a product launch, as an example), as is budget, and in many ways scope.  It can seem impossible to use Agile when some of these core elements, scope, schedule and budget, are not flexible.

So when we help agencies with Agile, we focus on the things that we can impact with Agile – it actually still works very well.  We focus on things like reducing noise and eliminating needless waste.  Top on our list is maximizing the “flow” of the actual team – if they’re not delivering, then nothing is getting done.  And when we are able to address these things well, the project goes faster, and you’ll be better off than if you hadn’t used Agile.

Why should an agency go Agile?

Wow, Agile has so many benefits for agencies.  Culturally, an Agile agency is a more rewarding, engaging place to work, providing the talented teams agencies employ autonomy and more direct accountability for their collective output.  We find that agencies that can engage their clients in an Agile framework build deeper, more meaningful partnerships with their clients. And honestly, there are a lot of bottom-line benefits for the agency too: lower turn-over, less overhead, and higher project margins.

What's the most important thing for an agency to know if they're thinking of going Agile?

The most important thing to know is that it's about the culture changes more than it is about following a new process or using new tools. In our experience, it is about 70% versus 30%, culture and people versus processes and tools.  A lot of agencies we talk to say they are using Agile. Many do use pieces, but making Agile work well in an agency takes time and attention to supporting the principles of Agile. Sending PM’s to get SCRUM certification, doing daily check-ins, and using tools to manage and organize project information are not bad, but these don’t get you to change behaviors and build trusting teams that really excel. And given that some things just don’t work well at agencies without massive adjustment (such as Agile estimation techniques), we see these shops getting pretty mediocre results.  It doesn’t have to be that way, and these lukewarm results make Agile look bad…whereas it is really people not understanding how to make Agile work in an agency.

So we really need to work on the culture. That's why the first value of the Agile Manifesto is; "People and interactions over processes and tools". You need to get rid of silos in your organization and get people talking.

Another big difference is that projects that are doing Agile right typically have fewer activities that look like project management.  Most of the team members are the people doing the work, either on the business end or building something.  The organization ends up looking really flat.  Thats a big change from the hierarchical, top-down, job specialization approach agencies have grown into over the past decade.

Process is still important, but we don't get bogged down by trying to be overly prescriptive about it. You should take an iterative approach to improving it as you go.

What does this look like in practice?

Well, right now I'm working with an agency’s 12-person project with several key members offshore in Costa Rica.  It's absolutely crucial for an Agile project to have everybody on the same page.  Working with remote teams is harder, but it's still possible to get great results.  We meet daily either by teleconference or video chat. With a 3-hour time difference between locations, this means teams have to come in at some odd hours for the meeting. But we take turns, sometimes the team in Costa Rica comes in at odd hours, sometimes the team in California does.  Everyone needs to be on an equal footing, neither team is considered superior.
By the same token, we don't move on until we're sure that everyone is on the same page as far as the scope for the current iteration.  Some of our offshore team members aren't completely fluent in English, so if someone is quiet, we assume that they don't understand 100%.  An Agile team can only move as fast as its slowest member, so we end up spending a lot of time training the team in patience and communication. This can feel a bit painful at first, especially in a sprint planning session. However, once the entire team has common understanding of the work, we make up time pretty quickly over the duration of the sprint.

Conclusion

There you have it.  The challenges of implementing agile in an agency are significant and extend well beyond surface measures like scrum training, task boards and daily meetings. But done well, the pay off of agile is easily seen in happier employees and better results.

Greg makes it clear that the tools and processes are necessary, but the real key to agile is creating a culture of trust, creativity and innovation. Visit agencyagile.com and follow @agencyagile to learn more.


About Greg Morell, CSM

Greg is co-founder and partner at AgencyAgile, responsible for growing relationships with agencies while guiding agency and client teams through Agile transformation.

Greg has over 18 years of interactive agency experience, particularly in client services and program management, developing deep, long-term relationships with clients in a range of industries including Automotive (VW, Mazda, Toyota, Kia, Hyundai, and Nissan, CODA and Better Place), Technology (Microsoft, Adobe), Gaming and Entertainment (FX Networks, THQ, Gaikai, XBox), and Consumer Brands (Nike, Naked Juice).

As digital agency veteran, Greg has held executive leadership roles Proxicom, iCrossing, and BLITZ Agency. Greg has led teams and built collaborative partnerships across a wide spectrum of agency types (traditional, media, digital), founded upon clear vision, shared goals, transparency and accountability.

AgencyAgile was founded in 2011 by software and digital agency veterans Jack Skeels and Greg Morrell, with the mission to greatly improve how agencies execute work, and how agencies and clients work together.

Monday, February 4, 2013

6 way to make your clients love you while staying sane

You work hard to get your clients. All those calls, conferences and coffee meetings aren’t just for fun. So you’d better take care of them once you have them. It may seem burdensome at times, but the effort invested in strong relationships and doing great work will pay back in growth opportunities.

In their book “Leading on the Edge of Chaos”, Emmet C. Murphy and Mark A. Murphy state that a 2% increase in customer retention has the same effect as decreasing costs by 10% . Making clients happy is one of the best ways to grow a business. They'll spread the word for you so you can spend less time selling, and more time doing great work.

Build your business on these 6 pillars to keep your clients and grow your business:

1. Make honest and realistic estimations of timelines

We all do it, and it happens in every industry. At the start of a project, you’re feeling good and you know the finished product is going to be great. You’ve made a list of everything involved, and you’ve guesstimated how long each piece will take. This is where things get dangerous. We can be tempted to over-promise when entering into a new relationship, but over-promising does not create sustainable relationships. Set realistic expectations for your timelines, and give yourself some padding for bumps in the road. Because even when you think you’re almost done, you’re probably not.

2. Be a great communicator

Find out your client’s preferred method of communication and use it. If they leave you a message, don’t email, call them back. Make sure your clients know what's going on, before they start to wonder about what you’re up to by providing them with regular updates on a schedule that makes sense for the project. Be especially conscious with formal reports; make your reports concise and understandable, use agreed upon metrics for success, and use visuals when possible.

3. Be Respectful

Your client may not have the same level of expertise that you do (that’s why they’re paying you), but they’re smart enough to know they need you. Take the time to educate them in how you work and what processes you use. Steer clear of jargon; cut down on the three letter acronyms that you throw around casually with your colleagues. Instead, pay attention to how your client speaks, and build that language into your conversations with them.

4. Agree on what success looks like

Doing work that makes your client happy requires great empathy. From the beginning, you need to understand their needs, and get a clear picture of what you're working towards. Once you think you know what you're building, tell your client what you'll be doing. Agree on what needs to be delivered, and how that will be measured. It takes more work upfront, but getting everyone on the same page creates a lot of trust. This trust enables you to do the work, without being constantly pestered. The extra effort at the beginning makes you far more likely to deliver a great product.

5. Set boundaries

You want to keep your clients happy -- that’s why you’re reading this article. You want to reach new heights, diveak down walls and meet stretch goals for them. But remember, they’re looking to you not just to do some work, but also for leadership and guidance. This means letting them know when their ideas won’t work, and not giving in to every demand. If they insist on a change, let them know, in writing, how their request differs from the original scope, and how you expect it will impact the project.

6. Do great work

Obviously! Of course you do great work, you always put your best into every project and sweat the details, right? Great, but not everyone does, and time saved by cutting corners could end up costing you many times over in rework and damaged relationships. By all means, extend yourself, take on big projects and grow, but be sure that you're willing to do what it takes to delight your clients with the finished result.

We can take another great statistic from Murphy and Murphy’s book “Leading on the Edge of Chaos”: organizations that prioritize the customer experience generate 60% higher profits than their competitors. With the rise of social media, people increasingly rely on word of mouth and reviews to make buying decisions. It becomes a virtuous cycle: This means doing great work and making clients happy can be an excellent marketing strategy, which means you can spend less time selling, and more time doing great work.