10 Career Lessons I Wish Someone Had Told Me Before

Over 10 years ago, I was fired from my first job.

I worked as an entry-level software engineer. I learned a lot from that job. I had to learn about coding and to make my way through the corporate world while growing my career.

Coding was the easy part. I had books, courses, and tutorials for that. But to survive the corporate world? Not so much. I had to figure it out on my own, with lots of trial and error, and yes, getting fired.

Here are 10 career lessons I wish someone had told me over 10 years ago:

1. Be ready to leave your job at any time

A 9-5 is never safe.

You could lose your job at any time for reasons you don’t control. Yesterday? A pandemic, global crisis, recession, and high interest rates. Today? DOGE and AI. Tomorrow? Who knows.

Be ready to leave:

  • Grow your professional network
  • Keep your “tell me about yourself muscles” in shape
  • Have an emergency fund to cover a few months of expenses

When you’re let go, you’ll have options, not just panic.

2. An online presence is your best CV and portfolio

CVs are so last century.

I wasn’t hired directly for my first job. I was hired under a staffing company. My salary passed from another couple of hands before getting into my bank account. Of course, they took a good chunk of it.

One day, I had to visit the office of the staffing company for some paperwork. Next to the main door, there was a sign: “Put your CV here.” It was a trash bin.

Well, the same type of receptacle offices used as trash bins. I guess it saved them the struggle of piling up and throwing away all the CVs from desperate people looking for a minimum wage job. They were already on a trash bin. That day, I knew the system was broken.

Ditch your CV and appear professionally anywhere online.

3. Pay raises won’t change an unfulfilling job

Vacations and pay raises won’t help you when you don’t want to get out of bed.

If Monday mornings are torture, or even worse, if Sunday evenings are also torture, you don’t need vacations. You need a way out of your job.

Trust me, I got burned out. And not wanting to get out of bed was the first sign I failed to notice. I learned it the hard way.

Find something that excites you to get up every morning.

4. Hoping and praying is a bad career strategy

Make a career plan and always have an exit route for every job.

OK, a career plan sounds like a lot of commitment, especially when we’re just starting. Let’s say, set an intention for your career. Do you want money, connections, recognition, travel opportunities, etc.?

Otherwise, society will give you its plan: work hard, get 3% yearly raises, please your bosses, keep your head down, then wait to retire.

5. Soft skills are more important than hard skills

Being good at coding, writing, or designing will give you a job, but being good at communication will give you promotions.

Your success depends on how good you are at communicating, managing, and coordinating people. I’m paraphrasing a lesson I learned from How to Win Friends and Influence People.

Work on your soft skills.

6. Detach your sense of meaning from your work

Being a “Senior Software Engineer” was my only identity.

My career was probably the most important part of my life. It was what gave me money and a sense of meaning.

Until I was laid off.

Suddenly, after one Zoom meeting, the title and the things I did with it were gone. It shook my world. That was the only thing I thought I enjoyed.

I had to learn I’m not a title. I’m more than a job. “Senior Software Engineer” was just a label I decided to accept. I was more than that.

You’re more than a job title.

7. Don’t be the only one doing something at work

It feels so good when you’re the only one who knows or does something.

But that’s a trap. Being the “only one” makes you a hero. And a hero can’t get sick, go on vacation, or be promoted. A hero is always stuck.

Don’t turn yourself into a hero. Teach, automate, or document what you only know or do.

Don’t be a hero. Be a team player.

8. Find mentors but don’t ask anyone to be your mentor

I put “Senior” in my title after one or two years of working next to the right people at one of my first jobs.

They taught me in just one year way more than what I learned in the next 5 years after I left that job.

A good mentor or role model can help you advance in your career faster.

But don’t ask anyone to be your mentor. Don’t drop the M-word. “Would you be my mentor?” That’s a strong ask. It implies commitment from one side more than the other. Often for free.

Find ways to learn from your role models without the M-word. Find not-mentors.

9. Two years is the tipping point for growth at a company

I’ve stayed too long at stagnant jobs and I regretted it.

I lost years, thousands of dollars an let some of my skills get rusty.

At one place, I stayed too long waiting for my chance. I tried to convince upper management I deserved a promotion. All the seats were taken. Every one of my ideas for roles was rejected. “Somebody is kind of already doing that.”

If after two or three years of doing good work, you don’t get a raise or a promotion, don’t wait any longer. You’re at the wrong place. Move on.

You’re leaving money on the table by staying too long at the same place.

10. You will be remembered by your attitude, not by your work

The long hours, the impeccable report, the great presentation. Nobody will remember them.

They will remember your answers in meetings, your willingness to help others, your treatment of clients.

Being easy to work with will pay off in your career. That’s the easiest way to stand out at work and to leave a lasting impression.

Remember, as Robert Martin said in the Clean Coder, “your career is your responsibility, not your employer’s.”

To Work From Home, You Need Clear Boundaries Between Work and Non-Work

He said, “You have put boundaries around your time.”

I was on a 1-on-1 with my boss’s boss and not-mentor at a past job. He was right. I had boundaries around my working hours. I always clocked out on time, and sometimes even earlier.

On more than one occasion, my team leader texted me or called me at 4:50 PM sharing details of a task or a bug. “Sorry, but I can’t finish that today. It’s 10 minutes to my end of day and that will take me at least a couple of hours,” I always said.

Eventually he stopped calling me 10 minutes before my end of day.

The hardest part of working from home

I’ve worked remotely for over 5 years. The hardest part? Setting boundaries between working and non-working hours.

When you’re at an office, some boundaries are clear. It’s lunch time. Or it’s 5:00 PM and you see a line of people clocking out. The day is over. No more meetings. No more calls.

But from home, the line between work and non-work is blurry.

From home, we’re a couple of steps away from “work” and we’re wearing pajamas or no pants like any other time of the day.

And, if we don’t pay attention, we’re replying to emails and taking calls after hours. Or even working on weekends. Or thinking about work all day long.

How to put boundaries between work and non-work

To start setting back those boundaries between work and non-work:

  1. Have separate work and personal spaces: Your work laptop is only for work stuff.
  2. Turn off all notifications after working hours: No Slack or Teams or email beeps or buzzes after 5:00 PM.
  3. Do something that signals the end of your working hours: Walk your dog, change clothes, or go to a different room.
  4. Uninstall work-related messaging apps from your phone: No Slack or Teams or work email on the phone.

If you’re working from a different time zone than your coworkers, you don’t have to reply after hours, not even to say it’s already past your working hours. Reply the next work day.

And if you’re the one texting, start your messages with a disclaimer, something like “When you’re back online tomorrow: blah, blah, blah” or schedule your messages. And, please don’t send “hello, how are you” messages. That’s how you get ignored at work.

Remember, working from home doesn’t mean being available 24/7.

One Simple Trick That Will Make Your Virtual Meetings Smoother

If you work remotely, this scene will feel familiar during virtual meetings:

Someone is talking, makes a little pause. Somebody else interrupts, then the first person starts talking. A pause. Then, a “you go first,” followed by a “no, no, no. You go first.” Then, both of them talk at the same time. Arrggg!

Here’s a trick to avoid that annoying situation:

Just like pilots or anyone using “single-channel” radio, pause for a few seconds after someone finishes speaking before you respond.

With this brief pause, you give time to the speaker to finish their chain of thoughts and wait long enough for the latency of getting the message on your side.

I Replaced Grammarly with This AI Prompt (Tested on Copilot)

AI is here to stay.

We can’t ignore it. We can’t refuse to use it. We have to adapt, or somebody with AI will replace us.

I’m not in the “Never use AI” team. In fact, I already ran the experiment of launching a coding course with Copilot as my assistant.

But what I don’t agree with is using AI to replace my thinking and writing.

That’s why every single post you find here (or anywhere else online under my name) is written by me—a human, not an AI. #madebyahuman

Even though, I don’t use AI to regurgitate hallucinations, a veteran coder warned me about that the other day, I use AI to proofread and edit my posts. Here’s the prompt I use:

You’re an expert on writing and editing, show the grammar and spelling issues from the next text. Fix those issues, keeping the original tone. Bold all the words you change. Only the words. This is the text:

{add your text here}

Don’t rewrite it. Only fix the grammar and typos. Remember to keep the same tone and structure.

I tested it on Copilot. It should work on ChatGPT too. Give it a try and see if you can replace Grammarly with that prompt as well.

PS: I proofread and edited this post with the very same prompt. No robots were harmed in the making of this post.

What Frustrates Me the Most as a C#/.NET Developer

C# has put a roof over my head and food on my table for more than 10 years.

At university, I learned Java. It was a relief coming from C/C++. Java didn’t have all the things I hated about C. I’m looking at you, pointers.

At my first job, I had to learn C#. The first program I wrote there was a Java program with C# keywords. Oops! Java was the only language I knew at that time.

I like C# and the entire .NET ecosystem. A typed language, multi-paradigm, with good tooling and stable support.

But here are the things that frustrate me the most about .NET:

1. Naming

Naming is one of the two hardest parts of Computer Science. And Microsoft doesn’t help that much.

On one hand, we have “.NET Core” renamed to “.NET”. Everything is .NET now. Was it a marketing strategy? Dunno. Probably.

On the other hand, target framework monikers. You know, the version number we put inside our .csproj files. For some time, they were .netcoreapp1.X, .netcoreapp2.X, and .netcoreapp3.X. But one day, they changed it.

I imagine a conversation somewhere on Teams at Microsoft like this:

  • Let’s change monikers too. Let’s also use .net plus the version number.
  • Wait, we can’t do .net4. We already have a .NET Framework 4.0. People will get confused.
  • Ok, let’s jump to .net5.

Arrggg! Microsoft and names.

2. Too many releases

It’s a good thing we have an evolving ecosystem.

I used to read all the release notes and tried to pick up as many new features as I could. Now? I only care about long-term versions. I don’t even pay attention to the short-term ones. Something somewhere is a bit faster on an architecture I don’t use at work. Sorry Microsoft!

Too many releases make it harder to keep up.

3. C# is getting too bloated

C# doesn’t feel like a single language anymore.

It feels like three languages: one pre-2010, one around 2010, and the one we have now.

I used to closely follow every new language release. Not anymore. C# as a language is getting less consistent. Too many options to create and initialize objects, for example.

Apart from nullable references and pattern matching and maybe some others I can’t remember now, it’s more and more syntactic sugar on every release. I’m only waiting for discriminated unions.

The worst part is features that look the same but work differently. Yes, I’m looking at you, primary constructors. They look like records, but surprise, surprise…They work differently.

This inconsistency makes the language harder to teach and learn.

4. AutoMapper

Ok, there’s nothing wrong with AutoMapper.

But what frustrates me is that, for some reason, we have adopted it as the de facto mapping library. And most of the time, AutoMapper ends up getting in our way.

Even AutoMapper’s author recommends not to use it if we’re mapping more than 80% of our fields by hand. But anyway, we use it even when we shouldn’t.

Just in the past weeks, I found two scenarios that got in my way, ignoring unmapped fields in the destination type and getting mappings flagged as invalid. Sure, I know I was abusing AutoMapper.

I wanted to add EntityFramework Core to this list, but I’m starting to feel the frustration in my stomach. Probably, I’m hungry. But, frustrations aside, .NET is still my go-to platform and C#, my go-to language.