I would now like to share what I’ve learned so far. I’ve written these instructions first and foremost as reminders for myself. In reality, there are no hard and fast rules for anything, of course. Some of the following items may seem obvious but often it’s the obvious things that we need to be reminded of the most.
1. Exercise, aim for regular sleep and consider your eating habits. It all starts here. Take care of your health first and the rest will follow. Your thoughts are affected by physical events, hormones, quality of sleep and nutrition. Your mind is not an entity isolated from your body. Exercising alleviates stress, helps you focus and makes you more creative and organized. Difficult problems feel much smaller after a good workout.
2. Keep calm and stay focused. Don’t hit the panic button at the first big roadblock. There are always ways to solve or circumvent even the hardest of problems. If you can’t do it yourself, ask for help and communicate with others instead of banging your head stubbornly against the wall.
3. Prioritize. What is actually relevant for the customer? Perfectionism can be a powerful asset but it can also stand in the way of finishing things on time. If you’re always holding yourself to the highest standard in everything you do, you will most likely end up tweaking and polishing the wrong things. As an engineer, it is easy to fall into this trap: spending weeks perfecting that one precious feature, when in reality there are much more important features that haven’t even been started yet. Concentrate on the customer’s needs, not yours.
4. One problem at a time. Complexity can be overwhelming, so don’t try to solve everything at once. Understand what you are trying to solve, break it into small pieces, plan and sketch out possible solutions (pen and paper are great tools for a programmer!) and then start working on it.
5. Communicate with the customer. Daily if possible, or at least 2-3 times a week. Be honest, transparent and let them know about potential problems early. Fail fast, fail like an expert. Express your views; you are the professional here. Try to think from the customer’s perspective: how could we help them best? In the long run, business will follow naturally.
6. Communicate with team members. Try to find – and let them discover – positions and tasks that suit them best. Work together and harness the skills and knowledge of others. Try not to isolate yourself or your work too much. Let others review your code, and do the same for them. This is the best way to learn and to develop quality software. It is also a good idea to teach your team about your responsibilities as cell lead. In case you fall ill or go on holiday, your team can take over and continue working smoothly. By keeping all the strings too tightly in your own hands, you run a higher risk of encountering critical blockers in unexpected situations. Remember to trust each other; it’s the highway to success.
7. Organize and plan ahead. Use JIRA, Trello, HackNPlan or another suitable tool to organize your team’s tasks. Write down what you are trying to accomplish today and stick to it. What are the objectives for the sprint and the milestone? Let others know what you are working on, what have you done since yesterday and whether there are any blockers. Work on tasks that have already been established, instead of branching off too far and losing focus.
8. Write everything down. Use OneNote, Evernote, Google Keep or the good old notebook. Document every meeting and every agreed action. Write instructions for yourself on complicated routines and procedures. Don’t try to keep it all in your head. You will forget about it.
9. Remember to separate work and leisure. This is important for your well-being, performance and recovery. You don’t need to be reachable in your free time. If you still want to contribute to advancing your career, I recommend improving your skills, working on personal projects or reading. Program if you want to, but don’t program for work if you’re not billing the hours. This will lead to much better results in the long run than dwelling on issues related to your customer projects. Instead of investing your uncompensated time in stressing over project-related matters, invest in yourself and your well-being. It’s a great investment! Then, you will be able to make those hours count that the customer actually pays for. If you don’t allow time for recovery, you won’t be able to do a good job either. Aim for a healthy work-life balance.
10. Cut the fluff. If you are not concentrating on the meeting you are in, you should not be there at all. It is easy to waste the whole day on trivial matters. Prioritize and say no when needed. Even the customer might be wasting your (and essentially their) time. It is your responsibility to tell them that every wasted hour is an hour not spent on productive development work. Again, planning ahead helps eliminate non-important work. If something comes up, write it on your to-do list and work through the list in order of importance.
11. Learn to not give a fuck about everything. So you screwed something up: messed up the git repository, deployed the wrong build, programmed a memory leak or forgot about a meeting. Now learn from your screw-up, analyze where you went wrong, fix it and move on. Most of the things happening to us or around us don’t matter. Save your precious fucks for the most important matters. This doesn’t mean to act indifferently, it means doing the right thing even in the face of adversity. Mark Manson has written a great book on this topic.
12. Self-organization does not mean that everything organizes itself magically. Take leadership when needed and guide your team’s focus. I’m not suggesting you should micromanage or overprotect your team. Getting thrown in the deep end can be a great way to learn and grow, so giving space to your team is important. However, there’s more often than not a need for somebody to steer the ship, take responsibility and support the team. The self-organizing culture at Insta Digital can sometimes cause confusion, as to some it implies that leaders are not needed. Personally, I think that in an environment like ours, everyone needs to take on and share leadership duties, whether it is leading your own work or the actions of your team. Teamwork, brainstorming and solid processes are essential in a self-organizing company. That doesn’t mean jumping in the driver’s seat when required is a bad thing, so don’t be afraid of it.
13. Take care of billing. Also, pay attention to your project’s metrics. If somebody is working a lot of extra hours, find out the reasons for that. It’s better business to balance the hours evenly. By making sure the numbers are correct, you are helping the administration understand what is going on in the company and form better strategies.
14. Stay positive. Sometimes it’s healthy to blow out some steam, curse the customer for their choices or yell out how much Microsoft sucks. However, attitudes are infectious and this goes for both negative and positive ones. Try to have fun, keep an open and positive mindset and you will notice how much it affects not only the quality of your work but of others too.
15. Dress for the occasion. If you’re meeting with a customer or prospect, consider what you are wearing. Try to at least match your attire to that of the customer. This generates trust and it is a professional courtesy. Suiting up can also be fun, and you can make a lasting impression on people with your appearance. Your clothing always sends a message, whether you like it or not.