A good time to think about what you enjoyed and what you disliked during a project is when the project is ending. If you have the capacity to influence which projects you are likely to take, then you can achieve happiness by taking a project you are best at. Some features of a "perfect project" are quite universal while some are more personal. Your personal taste will change according to your current life situation.
My colleague was working at a very stagnant place as a consultant. People there were very kind and sympathetic, however, everything else was very apathetic; a dull office with creepy gray-scale pictures of old leaders, plenty of meetings that had no clear end goal, people were not as passionate about technology and domain as they should be.
Knowing that my colleague had the potential to carry out more challenging projects, I asked him if he was comfortable carrying out the current project. He told me that that kind of workplace was perfect for him at the moment since he was taking care of a child with ADHD (Attention deficit hyperactivity disorder) back at home. That to me made perfect sense. You always strive to balance the challenges in your life. Learning about new technology or different programming languages, for example, can be very difficult if you have a troubled mind.
What kinds of projects are "ideal" at the moment
Let's take business domain, for example. It is unlikely that the idea or field is something that excites you. For me, it would have to be a service that I would use on a daily basis or something related to my passion (martial arts, computer or music.) for it to grab my attention. There is so much software in various forms that only small percentage is something super-cool.
The second best thing is passionate product owner and people using the software are excited and get value by using it. You would think that this is the case in every project, but unfortunately, it isn’t. Sometimes the software can be very complicated to use and no other options are available, for example, in an internal tool of a large organization. If they feel that the software is making the life harder then a lot of effort must be made by you and your client to remedy the situation.
Technology, we all love it, right?
These are the things I consider before venturing into a new project:
- I tend to stick to familiar back-end ecosystems (Node.js and .NET). I also try to learn other languages, but not at the expense of a client.
- I consider frameworks and technologies that I can easily learn to productive level e.g. front-end libraries.
- Front-end technologies do not have to be hip.
- I mostly avoid dying platforms e.g. Symbian, Windows Phone, etc.
- I avoid platforms that are not in the area of expertise I would want to focus on in the future, such as native iOS development. It is an appealing platform and has plenty of work opportunities, but one should not chase two rabbits at the same time.
People. The most crucial thing to consider. Even in the tiniest of projects you are not alone. There always are clients and users. When the project gets bigger then there might also be investors, partners, etc.
Here are some of the things I consider on hearing about new project:
- After talking to the key people, would you go for coffee with them even if they were not your client.
- Does the client have any technical staff? How they view you is very important in making the decision whether to undertake the project or not.
- What role are you going to play in the project?
About the first point: we might spend a quite much time with the client, even more than with friends. Is it worth spending the time with someone you are uncomfortable with?
Some other things to consider are like:
- Is it a good reference?
- Is it against your principles or is it unethical? For example, would you do something unethical such as working on a company that provides quick loans or trades furs? These are things that are not illegal, but are viewed by the society as being wrong.
These are things that came to my mind when thinking about an ideal project. What are your thoughts on this matter?
More ideas on the blog post: "How to select a client".