Sometimes, I wish someone took the time to have a chat with my younger self and give me some advice acquired with experience and practice. But, unfortunately, I had to figure some things out on my own.
The following is an (undoubtedly non-exhaustive, and in no particular order) list of professional advice that I wish someone had given me before I began my professional journey.
Open up about what you are currently doing during your work.
Don't miss the good help and advice from your colleagues
I had the habit of keeping the code from other's eyes until I deemed it ready to be seen. Then, of course, I was always giving the excuse of "not being ready," "I have some bug I am hunting, and once I solve it, I will push to Git"... you get the idea. But, mainly, I was too afraid to show my code to the more senior developers. I was scared of their judgment and their code review.
What that resulted in was losing their precious advice. I had excellent colleagues in my early career stages, who were always eager to help, but I wasn't taking advantage of it.
That applies everywhere, not just code. Good senior employees around you are curious to see what you are up to. This is not to micromanage you (well, not always, at least), but to understand how to operate and make you change your course of action sooner rather than later.
So do keep them posted.
Don't open up about anything else, however.
Remember: Your colleagues are not your friends
Despite the previous rule about being open, you will eventually regret it if you tend to overshare. So this rule is clear and straightforward: Don't gossip, don't share your private information, unless you want to risk your personal life being taken advantage of by your colleagues, either on purpose or just for gossip. I have seen mistakes done in this respect that took months or years for people to overcome their ramifications, regardless of whether they stay in the same company or not.
When you see a colleague gossiping about someone to you, be sure that the next person your colleague will talk about is you.
In addition, say no to professional drama. Don't talk shit about other people. Don't share your opinions about your colleagues with others. Don't discuss who you think is disliking you. You have your friends outside of work to do that, and even then, it can become pretty dull.
If you feel you have a gossiper around, stay away. If you can't (or if you think that person has some other good qualities), divert the conversation away from issues regarding other people in your workplace. If you notice a general gossiping trend in the company you work in, then quit immediately. No money or career growth can compensate for what will happen if you indulge in this trend. Your career may be hit hard from it.
Workplaces with a lot of chatty colleagues are toxic in the worst way possible. You won't understand the level of toxicity unless you become a victim of it or go somewhere else. Those kinds of habits spread like a virus. Sometimes, even the best professionals are influenced by their immediate professional circle and tend to overshare, which they may not have done under any other circumstances.
That's not to say that a colleague cannot become a friend, however. It's just that friendship is coming naturally over the years, and trust will have to be built before you can consider someone a friend. Of course, this excludes sharing personal information about yourself (or others) over drinks with colleagues or at a company party.
Don't settle for a process because "that's the way it is."
There is a difference between Spirit Of The Law vs. Letter Of The Law.
Some rules and processes dictate all aspects of our lives. Professional life is no different. Preventive controls try to protect you (or a group) from something bad happening. Others exist to facilitate the completion of a particular task.
For example, when there is a specific tedious process that we should follow to deliver a project, understanding the process and its meaning makes it easier for us to follow it. And sometimes, a better understanding may deem this process obsolete altogether, thus saving lots of headaches and keeping everyone happier in the long run.
Especially in the corporate world, it's not uncommon for people to feel like they are following rules just for the sake of it. It's true - the bigger the company, the greater the need for process control, and the less information available about the origins and the deeper meaning of those processes. It becomes so tedious to navigate all those rules that sometimes good ideas are being killed at the point of inception, not because of merit but also of organizational complexity. For this reason, it's even more important to start asking "why" - and start changing things to facilitate our lives.
Understanding processes and rules are the first steps towards understanding how we can optimize a professional workflow. And it's precisely this quality that will separate people who will get a promotion from those who will get a small raise (if that).
Eventually, as we progress throughout our careers and upwards in the hierarchy chain, we will be seen more as "Process Gatekeepers" rather than Creators and Implementors. When it comes to that point, a good manager is always the one who understands the mentality of the process and can either change them, optimize them, remove them, or solidify them.
In short, having the skill to understand the "Why" and the "How" will have a positive effect on a person's career.
Demanding respect and dismissing criticism are two very different things.
I have rarely encountered a person trying to point out my faults, having only their interests in mind. When I hear criticism about my ways, it's usually someone who cares about how I do stuff that affects them somehow, especially if we work in the same team. It doesn't matter if their communication skills are not 100% there. We all need this criticism way more than the praise.
You need to improve your way of working constantly, and if someone knows a way for you to do it, it should be seen as an opportunity - not a threat.
What about blunt criticism? Well, if the basis is to offer feedback on your work, accept it. I have found throughout my career that not everybody has refined their communication skills - not everyone communicates the same thing the same way. However, everyone needs to improve and be one step closer to (unachievable) perfection, and constructive criticism is the way to get there.
The only exception to this rule is if this criticism is offered insultingly (irony, demeaning a person in public, etc.).
There are some key differences between constructive criticism and a personal attack:
- Feedback is given thoroughly and directly without assumptions or characterizations - it stays to the facts and how things can be improved next time so that the problems caused now can be avoided.
- Feedback should be so direct and honest that it should leave no room for misunderstandings about its purpose (which should be to improve the quality of work).
I remember a former manager of mine giving me feedback without thinking too much about what he would say. He didn't need to. I always appreciated that every time he wanted to explain that someone did something wrong, he would speak as if he was a presenter in a news outlet. He would state the facts directly, swiftly, with concrete undisputable examples. I don't remember anyone having any problems with how he was giving his feedback - including the people who were let go from the company. He was always polite and respectful, also offering possible help (if needed) and improvement tactics in my shortcomings. That made me appreciate what good feedback was and its importance and understand the difference between constructive and non-constructive criticism.
If you do have such feedback communicated to you this way, I suggest you take it to heart and ask questions about how to avoid such mishaps in the future.
Be cold-blooded about your creations (as an employee)
But also: do have respect for your work
When working as an employee, you most certainly do a certain amount of work and create some results. As we move on towards a more creative industry (and yes, Software Engineering is one of them), we tend to be more attached to the thing we create. When we see this work being discarded for something better (or more fitting) to come along, we often find ourselves reluctant to agree with the potentially best option because we have invested a portion of our lives into something that may never see the light of day.
A notable example of this is some work done to create an excellent software component that eventually never saw the light of day. Or there may be a design that was great but didn't make the cut because it didn't meet some specific requirements.
There is nothing more natural and understandable to protect our work, and try to make it last and be useful for longer. It's our way of getting some closure, after all.
However, we are asked to create the works for a reason - and this reason rarely extends beyond our boss' idea of what would fit their business. Most importantly, a Business needs to change fast to stay alive. Therefore our work must change, adapt and evolve. Solutions/pieces of work that may be good enough today may not still be tomorrow, and they will need to be changed, updated, or discarded. We need to be resilient and adaptable to ensure that even if our work is being flushed down the drain, it's not all been for nothing; discarded solutions are just as important as those that stick.
I have not failed. I've just found 10,000 ways that won't work. - Thomas Edison
That's not to say that you should dismiss your job instantly should something else comes along the way. Every solution should be thoroughly examined, and its pros and cons should be elaborately stated. You need to be sure about your motives; If your motive is to have it your way, you should concede. On the other hand, if you believe that your work should be the one to win the race based on pure facts and merit, then you should press on.
The point is that you should always have a clear mind when evaluating solutions and situations, and that applies to outcomes of your own work, too.
Leave your job if it doesn't offer you growth.
Don't marry your job - marry your profession instead
You should not define yourself as an employee at company X. You should define yourself as a professional Z (where "Z" is your profession - "software engineer," for instance) who happens to currently work at company X, as long as your career goals and those of your company are aligned.
Long gone are the days where we could hear stories about how we could find job security and reap the benefits of a long-term commitment to a job or company. Instead, in this technological era, we should always adapt to the ever-changing requirements of a fast-paced industry and learn new things constantly.
Employers nowadays spend an enormous amount of money to make you feel "at home," offering perks, bonuses, and maybe organized team activities to make you feel like you "belong." Those are good perks to have.
However, don't let this fact blind you from a simple truth. It's a job at the end of the day. Money and other perks are not the only things you should get in return for your time and services. There's also something called Growth (learning new stuff, changing positions, promotions, etc.) which is the actual thing you should aim for.
What is Growth? Well, it's whatever you deem it to be, by answering some simple questions: What are your aspirations, goals? What do you hope to achieve? How does your current position serve those purposes and aspirations? I personally see "growth" as opportunities to learn new stuff, change positions and roles, and the opportunity to get a promotion later down the line with any financial benefit that may bring.
Don't settle for perks or a good salary at the expense of your future growth. Investing in positions where the opportunities to do more stuff are greater pays far more than any other career investment. If you feel you are not learning new stuff anymore and won't anytime soon, or that there is not a promotion down the line no matter your effort and skills, it's time to look for a new job that will allow you to do so.
Don't leave your job too early, though
Find the balance: don't get caught up in the "Free Market Hype"
It is a well-known fact that the shortest path to get a raise is to switch jobs. You can take advantage of this to double your current salary in no time. Plus, you also have the bonus of never getting bored and constantly learning new stuff.
However, if you go down this road for too long, it will not be beneficial for your career in the long run. For example, future employers may believe that you are a job hopper. Or that you are unable to adapt/perform well in a specific job. Others that you care only about being paid more than your current job (note: Even though compensation is a must, creativity - which is very important especially in Tech - is not a product of solely a good paycheck).
But apart from your potential employers, there are other reasons why you should reconsider putting a bit of patience in your career choices;
Staying with a company can lead to significant benefits in the long run. By investing time in a company, you get to know how it operates, its mentality, strengths, and weaknesses. That is invaluable for people going up in the hierarchy chain. Most upper managers I know had been involved with the company for some years before their big promotion. They took the time to understand the company's pain points and may have come up with potential solutions - that's why they were allowed to supervise others. Apart from problem-solving-oriented managerial positions, leadership positions are about understanding, working together, keeping a good team spirit. When working with a company for several years, you will undoubtedly have the chance to know how that works.
Secondly, it's about what career growth means. Unfortunately, people in the workplace have a misinterpreted idea of career growth. They believe it resembles a straight line, almost analogous to the years they put into.
The truth is that the time/growth chart looks this way.
Growth looks more than a staircase. After a big step upwards, your career will seem stale for a while. This is normal - our brains need time to process the state we are in and make the most out of our newfound situation. Those "stale" periods are a chance to look at your personal growth, too (friends, family, studying, preparing for the next move, etc.).
That means that sometimes, you will need to take some time for yourself to regroup before you make the next move. Hopping from one place to the other to get a few extra bucks will not be beneficial forever. The same applies to staying in the same position and responsibility matrix for a good number of years. There should be a healthy approach between job-hopping and investing time to learn the innards of a company you work for. This "healthy" metric depends on your current situation, aspirations, and current company's career offerings.
Too much of anything may leave you with nothing in the end. Job-hopping is no exception to this rule. So avoid quitting your job before you make sure that you have taken everything it has to offer you.
During my professional career, I have had the chance to learn much the hard way. Those are a few of the things that I learned over the years, and I wish someone had talked to me. I hope they are helpful for you, too!
Thank you for reading!