This is a repost from Plataformatec blog.
This year The Pragmatic Bookshelf and I released the Learn Functional Programming With Elixir book, and its first chapter is available here. It took me one year and a half to finish the book. Yeah, it took a long time! Why did it take that long? I think the main reason is: all my researching, learning and producing efforts happened in my free time. It means that after a long day working on my full-time job, I went home and also worked on my personal project. I’m here to share my experience, things that worked for me. I hope it might help you to run your own longtime project in your free time.
Define when it should end
I think the most important thing is to know when your project will be done. When you start a journey where you don’t know where to go, any path is an option. You can easily lose your focus and walk in circles. When you define your final destination, you can build the path to there. In my experience, it helped a lot. I had to write a proposal before writing the book. The proposal helped me to create the scope of the book. That scope wasn’t written in rocks, I could change it. However, functional programming is a large subject, drafting the table of contents first helped me to see how far the book would go and what the readers would learn.
Breakdown your tasks
“How long to finish your book?” I’ve lost count of how many times I’ve been asked this. It is very hard to answer that question, especially when some tasks are out of your control. But, at least, you can get an idea of how far you’re close to the end.
When you have your final destination, it’s time to break down your path to there. There are many techniques of breakdown and tools to keep track of your tasks. You don’t need to invest too much time in planning your project, things can change and you might need the flexibility to change your direction.
In my experience, writing a basic summary of each chapter helped me to have an idea of how big they would be. Then, before start writing a chapter, I wrote all the chapter sections’ titles to give the chapter a structure and to define how it should end. Breaking down the book in chapters and chapters in sections, helped me to answer the question “how long to finish?”. Now, I could answer for example with “there are 2 missing sections to finish this chapter”, or “there are two missing chapters to finish the book”.
Create a routine and ask help to protect it
If you want to finish your project, you need to work on it. How many hours per day? How many days per week? It depends on which type of work you are doing. I suggest you to find a space to work on the project every day, but save 1 day per week to rest. You need a routine and you need to protect it to finish your project.
It can sound tough, I know. However, it reminds me of when I was studying in college. I worked during all the day and studied at night. If you had done something similar in your life, you’ll know what I’m talking about. But this time, for me, it wasn’t study and work, it was work and work. You don’t need to face this journey alone. You can ask support from family, partner, kids, and friends to help you to protect your routine.
Some people will be tempted to avoid work every day and will try to work many hours on weekends. The problem is if you can’t work one weekend, you will lose an entire week of progress. When you miss a week, it’s easier to lose motivation because it’s harder to recover from that. If you work a little bit on your project every day, it helps you to keep progressing. One day that you miss, won’t be a huge impact on your routine.
Creating a routine to work on your personal project is not an easy task. You might stop doing some other stuff in your life. Don’t get too stressed trying to do everything you had been doing. Admit soon that you’re not a superhero. You might need to stop or slow down in other activities in your life to work on your personal project. Like a friend said, “life is an exchange”.
Look for Feedbacks
If your project will impact people, show it to people. Don’t spend too much time working just for your eyes. Everyone has blind spots, so you can be making mistakes that other people with a fresh mind can easily spot.
First, look out for your target audience. Invite them to review what you are doing. Also, look for professionals, people that are experts in the field that can help you. When I was writing my book, I had help, not just from excellent developers, but also from book writers and English experts.
Sometimes you can get upset if some people that you asked support didn’t help you, even though they said that they would. People have their life, their stuff to do, your work is not their priority. Just don’t put all your eggs in one basket and you’ll be fine. In some cases, you may need to invest some money to have a expert feedback that you need.
Time to rest
“All work and no play makes Jack a dull boy”. Some people are fully committed to their project and they forget to rest. They can do that for one week, maybe one month. Sooner or later, they’ll burn out and give up on their project. It could be avoided by using their free time to relax.
When you are stressed and tired, it will start impacting your full-time job. If our personal project impacts our job, you obviously will give up your project to work on the most important one. The job that pays your bills.
Managing your energy is a hard task, try to save at least one day to rest. If you are thinking about scheduling your next vacation to work on your project, please don’t. Especially if your project can take a year. It’s something that I wouldn’t personally do anymore. Time is one of the most precious things you have in your life. Vacations are a special moment to rest and spend time with your family and friends. You would never have that same moment again in your life. If I had to choose again, I would have chosen to enjoy my vacation.
Recovering is more important than having no failures
If you are running a personal project that can take several months to finish, you can fail. You can burn out and give up on your project. It happens. It happened to me.
It’s very important to create strategies to manage your energy and maintain your routine. But, the most important in my opinion, is how you will recover from a failure. You may need to take some time to rest, maybe you should talk to your trustworthy friends about what how miserable you are feeling. You need to figure out what you did wrong and learn from your mistakes. Then, finally, go back to work when you have energy again.
I don’t know if it works for you, but it’s a relief to me, every time that I remember that I can fail and try again.
I hoped you liked my personal experience and lessons learned from running a long project in my free time. Have you tried to work on a personal long project? Do you have some lessons learned to share? Something that helped you? Please, let me know in the comments below.
One last thing, my long project was Learn Functional Programming with Elixir book. You can have the e-book or the printed version on The Pragmatic Bookshelf or Amazon. You can have a free chapter by following the instructions of this link.