Working for a clients is easy - you are given a set amount of work to do and you have to do it. Simple as that! Well, not really but that's basically how it works. However, dealing with your own projects is a totally different story. Where to start from? How maintain your interest until the end? You just find it impossible to do, even when you have completed projects several times bigger and harder. You are postponing working on it, have no idea what to do and sometimes it takes anywhere from weeks to months to get yourself in front of it again until you ditch it for good.
This has happened to some of you, right? But on the other hand you are a good worker, always deliver your projects to clients on time and are willing to spend the whole day on it (and many sleepless nights) just because you are feeling responsible. Heck, you'll even waste your time on a stupid idea just for the fun of it and see if it works. I am surely one of those guys. How do you change that?
Note: This is guide written in a semi-story format that illustrates common pitfalls and their solutions. Because of that this article should be read as a whole and is not intended to be followed, as it addresses potential problems and the precautions to avoid said problems when they occur, not before that.
You have to start somewhere
Imagine that - you are riding on a train and you say to yourself - "I want to make my own website!". Being a web developer with quite a few projects under your belt, you feel confident in your skills and finally decide it's time to make your own one. Every cool guy has one. You pull out your notebook and a pen and start brainstorming ideas. It doesn't go that well and you start doubting your creativity - good thing the train ride was 2 hours long and you managed to squeeze half a dozen ideas.
"I'm tired, are we done? I mean, coming up with the idea is 90% of the work, right?" - yeah, sure, as long as you consider each following step as another 90% of the work, you are right. Everything here is equally important and you cannot miss a step - it's like a desktop computer without its power cable, processor, memory, operating system, input devices or motherboard - regardless of complexity and price, all of them are of vital importance for normal operation.
Sketching the details
"I picked an idea, let's execute it straight away!" Wait! You are nowhere near starting to build your project, for you are standing before a tedious and bulky process. If you throw yourself blindly into it you are most likely bound to fail - think things through. It is time to describe the project in written form (I recommend on paper) - what it is about, any words that you associate with it, all of the topics it touches. Now let's go into detail and make a hierarchy of its contents - what are the main sections, what is in each section and sub-section etc.
Good, we took a systematic approach and we are getting somewhere. Get the "tree" you made and start filling in the details, imagine the working product - "Page X contains this, that and this, there are links to pages Z and Y, there is a welcoming text here (some quick draft of the text) and an image of a rabbit. Underneath it there is a widget with such and such functions, there should be a custom navigation menu throughout the whole sections and its sub-sections." and so on. Also, be sure you make a research on any topic your project covers, that you aren't familiar with. You can go crazy with the level of details and don't worry - you can always refine, rule out and prioritize your ideas later on.
Get to the actual work
You might think the last step was redundant - you might have just as well started building your project while coming up with all those ideas in real time. That approach is flawed, as you are trying to be several different people with different roles at the same time. Developers tend to be efficient and optimize, choosing which implementation will fit best, be easiest and fastest to do. Designers, on the other hand, seek the sweet spot between aesthetics and usability. As for clients - they often come up with the craziest and "impossible" ideas. If you are doing all the work on your own you are going to be the client, designer and developer.
Just as you should never interfere with others' work and be considerate of the limitations of their medium, you should not let the inner developer, designer and client interfere with each other. It is true that compromises should be made when necessary, but have in mind that great products are born when pushing the limits - don't be afraid to push yourself, don't go with "safe" decisions.
Now we have a pretty detailed blueprint of your project and it all feels very familiar. Yes this is the same result you get from the hours of client meetings, describing what they need. We've got all the necessary information we need and it's time for the real deal - start working on it. There is nothing to be said here, because you already know how to do this part - you have been doing it for ages!
Sticking with it
You have already been working on your project for several days and everything is great. You are overexcited and everything goes suspiciously smooth and easy - nothing strange, having in mind you really did your homework. It might even get boring and tedious at times, but that's not important because you see your project progressing and that's all that matters.
If your project is small that's good - you are hopefully going to complete it fast and have your first positive experience doing something on your own. However, for those of you who have set their bar high and have chosen a big one, the problems continue. Working for yourself is nothing like working for a client. When you work for a client you get paid, when working for yourself you don't - that's all there is to it. Even if you are building your product with profit in mind you won't get any money out of anytime soon- unless you found an investor, but I assume that's not the case, neither you can call it working on your own. It's actually worse than that - not only you are doing this without anything in return but you are actually "wasting" time you can spend on working with customers and get paid now.
Unless you were preparing for this moment and have saved some money to live by, you are going to find yourself in trouble. You soon realize that what you started is actually a serious time and money investment. You are thinking: "I will work on my website in-between work with clients!" and your reasoning is correct. You skip a day or two of work and start working regularly with clients again to sponsor your project. A gap has been opened, time made you distant from your project and you are becoming less and less familiar with it. This is gets more and more frustrating, as now you aren't willing to spend your free time on it and start procrastinating. Your motivation suffers and sooner or later you drop the whole project. If only there was a way to get out of this vicious circle... You were actually close to solving this one - you really have to work on it alongside your regular work but you have to do it the same time! Do 4 hours of client work, followed by 4 hours of personal work. Do not let a big gap to form! Indeed you are going to work slower than usual but it's still progress, right? You are also going to make half of your regular profits, bear with it, nobody said it's going to be easy.
Working with someone
As if struggling with the above mentioned problems wasn't enough it becomes even harder if you are partnering with someone. Before you point out that this doesn't count as working alone or "own project", let me remind you that you are on the same boat - no one pays both of you and you are independent. Now there is another variable in the formula and it also comes with the problems and complications mentioned earlier. On top of that your partner will have their own circumstances that will slow down the work for you - be considerate, it's also valid the other way around. When working in groups larger than two these rules do not apply - 4 and above is considered a team and comes with collective sense of responsibility and organization and 3 people collaborations are somewhat unpredictable.
Many times you will be dependent on each other and won't be able to move on with your part of the work without the actions of your partner. Be sure to do as much as you can on your part before hitting the block - your should never let their absence be an excuse for not doing your part, as this will lead to blaming each other later on, possibly with negative consequences for both your relationship and the project. Be firm and persuade them getting back on their work if they are slacking, but don't pressure unless you want to be that annoying guy. In the unfortunate event of your partner abandoning the project for good, do not give up hope and see if you can continue on your own or find somebody else to take the place.
It was a long journey, but you are almost done. Just some corrections here and there, some new features and rewrite that damn text for the 6th time today. Obviously you have been working really hard on your project and you want it to be perfect. The truth is that it's never going to be finished, no matter how much stuff you add, and how much you refine the details, you have to know when to stop. Do not over-optimize and do unnecessary additions, let it go live. Time will tell what must be fixed, just get it out or nobody is ever going to see what you've done. Also if your project involves user interaction, there might be more important things that will pop out in exploitation that you haven't accounted for.
It is all done, now you can go and take a good rest, because tomorrow we are going back to working on it. "What? I thought we were done!" Well, almost. It's great that you built that great project, but what's the point if no one is going to see it? It might be trivial but it what you've done isn't going to popularize itself. Remember - you are also the client and this time it's your responsibility to advertise your product.
Let your users speak and address their needs - support your product. Have in mind that you may have finished the project, but your product is just beginning to become complete - it is a whole new story. Everything you have done may be jeopardized because almost nobody is going to know how much you did, but rather only what you are doing when your product is out.
Before writing this article, I felt like the guy in the story about writing it. It was my first post, I didn't know where to start - I brainstormed some ideas, described all the sections and subsections and filled in the details. Long before I knew, a long story unfolded. Unconsciously following the rules I made a finished product, and the good thing about it is that it applies for anything. As you can see, although the fictional character was building a website, I tried to use generic words such as "project" and "product" to imply that this can applied to any situation. If you think that this topic doesn't deserve that much attention, let me tell you this - I know capable web developers and designers who hired other people to do their portfolio websites which showcase awesome work.
You should have in mind that this story-like guide isn't a foolproof strategy or a set of hard rules that guarantee your project's success if you follow them. There are countless factors that might come up, that I haven't accounted for. These are all of the solved problems I have ever experienced and all of the avoided problems I have anticipated. Also this was intended for people who know their way around what they do and just find it hard to do it on their own.