How many new and unknown things were at the time when I started my career as a developer! And the technical side was more-less clear, but everything about processes, internal communication, behavioural things and so on was new. I learned most of these things by trial and error!
I like to do some kind of self-reflection about my experience. It helps me to see how I end up where I'm now. Looking back to my knowledge, I highlighted a few pieces of advice that I wish I had known before. It's a mix of not-technical and behavioural skills:
I had this thing. I got my first job as a junior developer, and I was proud and happy. But I also had imposter syndrome - I knew that my skills and knowledge are quite low. And I didn't want anyone to uncover it.
So whenever I had anything that blocked me or something difficult, I was trying to solve it myself without asking for help. Or I was too shy to ask my questions, especially in front of a group of people. "They will think that I'm an imposter, hide it, Maxim!".
But in fact, it's the opposite.
People wait for questions from each other, and these questions are not stupid, they are just regular typical questions. No one expects that you know everything; it doesn't matter if you are junior or senior. It's a part of working in the team - to communicate with each other, ask and help.
Don't be afraid - just ask all questions that you have.
In most cases, we work in companies where your mistake will not affect someone's life. 90% of developers don't work on building software for airplanes, self-driving cars, medical devices, etc.
Usually, we just move JSONs from one place to another. If my code doesn't work correctly - no one would die; not any nuclear station explodes. Someone just will not be able to load funny cat videos, send dating messages. Or their Instagram feed will be down for 10 minutes (how can people even survive it?). Fancy fashion brands will not be able to show their new banner. That's ok - people can survive it.
Sure thing, the IT industry looks fancy and essential; we have many modern devices and shining technologies.
The round-shouldered developer (no offence, it's just an image of myself) is a new sportsman, new astronaut, new rock-star. People invest vast amounts of money into us - round-shouldered people! Of course, we start to think that we are doing something significant and severe. But after all, in most cases, we just do a servant job. We help transform someone's ideas into the product by moving JSONs from one place to another.
We all have the values that we believe in. What we are looking for in others. What we respect. Our passions.
Corporate life can have a significant impact on it. It can change your motivation, sacrifice your values.
I worked in a company where we were doing nothing for months but got paid. "What a dream company!" - you can say.
But it was incredibly dull and killing me. I could just go to the office, pretend that I'm doing something. Nothing happened there at all. It's sad as I saw so many problems and possibilities in our product, but no one cared. I wasn't able to do a thing because the whole environment was passive and offensive. I had no power and no support to change it. Most of the managers were just pretending that they care about me and my opinion but they didn't.
I couldn't take it, and I left that company. I was just spending my time for nothing. My life has a value and a purpose, and I won't spend it in places where no one cares about anything. I don't want to lose my energy and passion.
My experience and knowledge have value, and I won't spend my time in places where no one cares about me. I'm not just a little man without a voice in a vast corporate machine.
And I firmly believe that people enjoy it and respect it when you follow your values.
Developers don't just sit in the dark corners of the office and just write code. Sure, the outcome of our work is the code converted into a product.
But what is a product?
It's an idea that is solving some problems—real humans problem, not a machine problem.
Usually, there is user research, and there is a business plan on how to make money, people check markets to find a niche for this product. It's way more than just lines of code. It's an attempt to solve something, to make some parts of our lives better.
"So what is the deal? I'm the one who can transform this idea into a working solution." - you ask.
And the idea is to always think about the work from a product perspective. Am I doing the right things that users need? Will this feature degrade application performance? How do I know that this task will improve something? And a lot of similar questions are extremely beneficial to ask yourself. Because when you start to care about the product - you and your team can achieve great results.
Great ideas should not come top-down only. Anyone should be able to propose an idea.
People with titles like "Lead Developer" or "Senior Developer" look like wise men. They are great teachers who always help you and find the best words to motivate you. Gods who fix bugs by just looking at a display. Your best friends who would never let you down
The title doesn't mean a thing (well, ok, in 50% of cases).
Sometimes you work with people who don't want to help and teach, who are arrogant. People who love corporate political games. Who even don't have excellent and friendly communication skills.
Who knows how they get this title? Maybe that guy was the first engineer here, and he has been working here for ten years? Or perhaps he knows how to show his best during the interview? Maybe he is just a good developer who wants to code more than talking to people?
Different companies have different definitions of seniority level. For some, it's fine to focus more on technical skills, and some companies care about soft skills. And that's fine.
The point is - never judge people by their position in the company and don't have high expectations just based on the title. Find the right persons with a decent character. Be respectful to these people, and you will be great friends (who cares if it's a junior developer or a receptionist?). Respect people.
Why do I need it? Why do I need to communicate with someone else? Can I just talk to my computer in my very own way?
I doubt it. The IT industry is not an industry of grumpy bearded men who barely know how to talk (except how to talk to computers). I'm not sure that it even was like it.
We work in teams, and we work with real people with their mindset and characters, which usually are not that same as what we have. We need to consider it - we are all different.
Working communication is not just informal talks during lunch about the latest Netflix show or weekend plans. We need to talk to each other healthily at any meeting, incorporate messengers, emails.
There are multiple reasons to do it, but the most important is that people work better when they can trust each other and communicate pleasantly. You don't need to be a friend with everyone; no need to have drinks after work. But we need to respect our colleagues and help without aggression and any toxicity.
Otherwise, if I can not talk healthily, people will ignore me and avoid my opinion. The team itself will become less efficient. And I can forget about any kind of promotion or salary raise.
Interviews are exhausting. You spend a lot of time and energy, make a real effort to do it. So when it comes to the offer part, it's easy to think that's is finally done. That you just need to sign it and have a rest.
The very last step is negotiating. You get your offer, and then you discuss it, it should not be scary at all. Because a company is also interested in hiring you, they also spent a lot of time making this interview process.
I'm not saying that you should go wild and ask for a 50% higher salary, but there is always room to negotiate. Maybe not a salary, but additional perks, holidays, contract length, stocks, etc. The worst-case scenario - the company just says "no" to your request, but they won't withdraw the offer.
Stay polite and friendly, and negotiate the offer. It would not hurt when you hear stories from your next colleagues that they have better contracts only because they arranged it.
Stay professional when you leave a company.
Don't make any conflict, don't blame anyone, don't write aggressive and offensive farewell emails. Yes, of course, sometimes you are right, and that nasty message would be fair, at least for your dignity.
Life is unpredictable. The IT world is tiny, and you never know who you will meet again as a colleague or even a boss in the future. Or your next employer can do a reference check and call that company that you just left.
It's better to keep a respectful and professional relationship with your ex-companies even if you hate that place and everyone there.
No one is complaining that he didn't work enough when they lie on their deathbed.
Don't forget to rest, disable work notifications on your phone (especially when you go on vacation). If something needs your attention - people will call you on your phone.
Continually checking Slack and emails is a terrible habit, as you won't stop thinking about work. But your work is not your life. Think about your hobbies, family, pets, friends, etc. If you like coding after work - that's fine until you are not doing work things.
Take care of yourself and your health.
Thanks for reading and feel free to share your thoughts!