It’s been ten years since I started coding. I’ve always wanted to stay in the steep acceleration part of the learning curve. When I look back, I recognized that learning the technical part was simpler than all the other things. After the realization, I wanted to write the lessons I learned from my mistakes. Some of them are life-lessons, but all of them apply to the software development world.
1. The team is the most valuable thing at work
From university through the company projects, the team is the crucial part. I’ve seen a lot of projects failed, postponed, or delayed because of the bad team organization. When there is good interaction in the team, the technical side runs smoothly. Clear communication brings openness and intelligibility.
2. Perspective is the key
Think in as many aspects as you can. When you are not happy with some situation, try to approach from another angle. If you’re not satisfied with the company’s decision, try to emphasize and approach from the managers’ view. When you’re having problems with your teammates, put yourself in their shoes. Analyze their needs. Ask yourself, “Why does this person want this?”
3. The software development game is all about trade-offs
There is no such thing as perfect. Whatever the system you’re developing, you’ll face dilemmas. Analyze all possible views. Choose the ones you can surrender. But never go without considering them. Try to find the ideal way.
When you love the solution, you usually try to apply it to unsuitable problems. But when you love the problem, you become open-minded to any resolution.
You cannot learn from your mistakes unless there is a clear indication that it’s a mistake. So, it would be best if you had feedback. Ask for it and be specific. General questions bring broad answers. Use open questions instead of closed ones. Ask, “How do I deal with criticism?” instead of asking, “Do you think I accept criticism?” It challenges others to think intensely. If you choose the second approach, you’ll get “Yes/No” and miss the factual thought. People prefer to be lazy, nudge them to think more.
6. Criticize the work, not the person
When you focus on the person, you will face defense. Your criticism will never reach its destination. Therefore, concentrate on the work. Abstract your thoughts and steer them towards the job, behavior, situation, etc., not to the person.
7. Pick your battles wisely
You will not be able to win all the fights. There are places where you have to sacrifice. Also, if you fight for everything, you’ll not get your work done. So, choose the battles which you truly believe it has greater importance or has a greater chance of success.
8. Compete with yourself, not with other people
“When you want to compete against everyone else, no one wants to help you. But when you compete against yourself, everyone wants to help you.” - Simon Sinek, Start With Why
9. Be humble and share your knowledge as much as you can
Create different mediums to share your knowledge. If you have no space for sharing, initiate one. It can be a new Slack channel, weekly meeting, company-wide monthly event, etc. Build a community around knowledge sharing. While sharing wisdom, be humble, and do it for other people’s good. Don’t brag. Develop collective knowledge. It is way better than individual knowledge.
10. Don’t assume, always ask and confirm
People are different. They come from different backgrounds, cultures, and families. Everyone has a different communication characteristic. Don’t pretend to look like you understand them. Develop empathy. Don’t assume on behalf of other people. Assuming is one of the mistakes everyone does. When you assume, you are never sure. Always ask your colleagues what they mean. Afterward, repeat what you heard to them. It is the best tactic and works like magic. Every small miscommunication will disappear.
11. Always go with the truth even if you’re alone, and the road is full of pain and fear
While developing software, we also fall into the trap of doing workarounds. We try to cheat from time to time to find the quickest way. Especially laws and licenses are easy to cheat. And we think that no one can find out. I can assure you that someone will eventually find out. It will cost you more than the effort you spend now. So, follow the laws and ethics first, you won’t need to apologize or pay a huge cost.
12. Balance your work
Don’t overwork. Even if you have overtime compensation (which is rare), limit your working hours. Don’t do overtime. Your productivity starts suffering after consecutive overtimes. It’s okay to do in urgent cases for a couple of days. But the longer you work, the worse it gets. Take long breaks. Take bulk vacations if you can. It will help to switch your focus away from work and help to slow down. A minimum of two weeks of vacation will do. During the vacation, turn off everything related to your work.
13. The more you care, the more you have cared
When you care about people, you’ll build robust relationships. If people feel that you care about them, they will be open and share more with you. After a while, you will realize that they also start to care about you.
14. Always be nice and mean it
Don’t pretend, be a nice person. Don’t be a jerk.
What you’ve learned during the last 2-5-10 years? Send me a tweet!