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:
1. There is no such thing as dummy questions.
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.
2. Don't take it too seriously.
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.
3. Be yourself, don't pretend.
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.
4. You build products, not just code.
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.
5. Respect people, not titles
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.
6. Soft skills are essential.
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.
7. Always negotiate the offer.
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.
8. Don't burn the bridges.
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!
Top comments (22)
I completely agree. 👍
No matter how much knowledge you have, you deserve respect and patience from everyone else on the team.
Very nice article, points 4 and 5 really are important in my opinion.
Thanks for sharing
Allow me to disagree with point 2. Regardless of how shallow the domain is, or how addicted are your users to your product, it is still your main revenue generator.
I used to work for the betting industry, which is not a very noble domain. I would classify it in the same category as Instagram. Nice to have, no one will die for a small downtime.
Though if you did a mistake that caused a 20 minute outage on Saturday noon (bookmaker's time) the damage could be up to a million dollars. Not something to take lightly, right? :)
My point is, do not put yourself in self-punishment mode, but act with great sense of responsibility even if you don't make software for pacemaker devices
I intended to write the exact comment like this one. Completely agree with comment and disagree with number 2. True, no one would die from 10min outage on Instagram, but the losses will pile up.
What if its fintech product? Trader unable to put his bid on the stock exchange, for 10 minutes? No one would die, right, but the consequence for investment fond and its clients would be massive.
Sure thing, the are industries where mistakes cost a lot, that's why I'm saying that "in most cases" nothing serious will happen.
Some points maybe worth noting but I want to share that I think everybody is a developer. At least a developer of its own self. The earlier people get this, the smarter and better we can all attend and create in life. Create your own view of you being a developer. There is no such thing as a good, bad, best, better, real, right or official developer. There is only everybody developing his own life. So build what you want. Create what you want. Burn bridges. Respect what you want. Do what makes you happy! Try to be yourself, not someone else. This thinking helps me through the days, weeks, months, years of being a developer. 💖
I got your point, but let me ask a question then. Let's say, your colleague is underperforming, talking to the team members in aggressive way (and talks to him don't help, even by managers) - how will you call this developer?
There are always consequence of our decisions. I'm not saying that you should be fake, but we should care about things that happen to us (i.e. burning bridges, respect colleagues, etc.)
You can care about what you like and so does the colleague who is underperforming (in your opinion). In my opinion the only thing that is helping in the longterm is awareness and a lot of talking. If others tried talking to him I bet they pushed him towards a direction he didn't like or feel comfortable with. Everybody wants to be free and your colleague seems to be unhappy or sad. These people need help and not to hear what they do wrong. Try to be nice and if you are not able to work with him continue your own journey instead of excusing your own behaviour to others. Live your own life and so let others live theirs.
I totally forgot to negotiate my last offer, but next time I gonna try it, exactly as you said: receiving a "no" as an answer will be the worst case
Great article! Thank you for sharing it :)
These are like a slap in my face, but in a good way. Thank you so much for sharing this!
This is gold and true, thank you for sharing ❤️
I am living in an age which is still dominated by MVC, so no "move JSONs from one place to another", just $this->view->var=value. SAD.
Very encouraging article. Good one
I am gone through most of the experience you have shared.
Good advices, useful not only for beginners. Thanks
in my opinion pateint is so important in programming. thanks for article
Great list. 4 and 6 especially.