10 Skills to Level Up Your Career

The biggest leaps in my career came from unexpected skills I picked up along the way, through collaboration, mistakes, and the occasional awkward Slack message. In this post, I’ll share the lessons that helped shape my career and hopefully spark a new insight or an "I’ve definitely done that" moment.

• 9 min read Non-technical

This talk is a written and shortened version of a talk I gave at SwiftBharat conference in India in September 2025. It’s an awesome conference, I highly recommend checking it out!

What are the most important skills you need to learn to level up in your career? Learn Swift Concurrency. Learn how to communicate. Learn algorithms. Keep up with the latest tech. And sure, all of them matter.

In my career, the skills that made the biggest difference weren’t the ones I could search online. They were the lessons I picked up along the way - through mistakes, frustrations, and very awkward Slack messages.

10. Use Available Tools

Learning how to use different tools to help you do your day-to-day work is a good skill to have. You’ll be more efficient and solve problems faster.

A couple of tools I highly recommend everyone to learn, or at least understand the basics. I’m not saying you need to sit down and learn every single thing here. But knowing how and when to use each of these tools can help you.

  • Instruments is something we get for free with Xcode. It’s an amazing tool to help you make your apps more performant and easily debug other issues. It’s a heavy and confusing app at first. Learn how to fix one small SwiftUI hitch focusing on a specific instrument. It’s easier than trying to understand everything at once.
  • RocketSim is a great addition to supercharge the Xcode Simulator. No more forgetting the command to run a deep link in terminal - you can save and open all your deep links with one tap! And that’s only one small example. It really makes building your apps faster.
  • Visual Studio Code is an alternative when Xcode stops cooperating. Which happens all too often. It’s great when you need to read large JSON files. Xcode could never.
  • Proxyman is a great indie app for capturing, mocking, and debugging network requests. Of course, if you prefer writing cURL requests - go for it. It’s better than print statements all over the place.
  • Bruno is a client for testing REST, GraphQL, and gRPC APIs. It’s an open-source alternative to Postman.

This is not an extensive list. There are many other tools you can use. But these are some of the tools I use almost every day.

9. Use AI Wisely

AI is a tool, but it deserves it’s own section.

At this point, it’s not about whether you use AI or not. It’s about how you use it. AI is powerful when used correctly. Learn when to trust it, when to question it, and when to set it aside.

If you’ve worked on updating your apps for iOS26 with liquid glass, you might have asked AI:

  • ME: “How do I add a glassy button to my iOS26 app?”
  • AI: “iOS26 isn’t a real version (you probably mean iOS16+). Here are two clean ways to make a glassy button with transparency and material background…”

It’s a silly example, but illustrates you shouldn’t trust AI blindly and always understand the response. Today, as developers, we should all be familiar how to use AI to our advantage. And when not to use it.

8. Understand Why

Focus on learning the underlying principles - not solutions to problems.

I’m not saying you should learn how compilers work to fix Xcode errors. But rather than just fixing the error so it goes away - understand why it’s happening and fix the underlying problem.

We’re all guilty of sprinkling DispatchQueue.main.async everywhere to fix the background thread errors. Many times. Sometimes because we don’t have time and need a quick fix.

But, understanding what’s actually happening is better in the long run. Next time, instead of asking yourself how to fix an error, try to understand why the error is happening. You’ll get better and faster at debugging issues because you’ll understand why they happen.

7. Manage Your Manager

Set Clear Expectations

Don’t assume hard work speaks for itself - clarify what success looks like to your manager. Make sure you and your manager are on the same page. As developers, we often think success is writing as much code as possible, making sure it’s performant and pretty. All that will lead us to our desired promotions and we’ll be irreplaceable.

This is, usually, not the case. Every manager and every company have different set of goals you need to do in your role. They include other skills and goals. Make sure you understand what those goals are and how to reach them. Your manager is there to help you. But, just in case, take matters into your own hands.

Treat Your Manager Like a “Child”

Don’t assume your manager knows everything you’re doing. And, a lot of times, they can’t know everything. Their job is to know as much as they can be. But your manager doesn’t know you spent whole day helping unblock a colleague. Or that you had an awesome idea how to fix that bug no one was able for months. Unless you tell them.

Make sure your manager knows everything you’ve done. Even if you think they already know - they might not.

Keep a brag document and share it with your manager. Keep track of everything. It also comes very handy for yearly performance reviews.

6. Assume Nothing, Confirm Everything

This one is pretty self explanatory. And often the one you learn the hard way.

Don’t guess - ask.

As the saying goes “Assumption is the mother of all… mistakes”. It’s always better to ask a clarifying question than assume something. It saves a lot of time. It’s hard to recognize the moment you’re about to assume something. But it’s a skill you can learn over time, with practice.

5. Read Before You Ask

Reading is an underrated skill. People don’t read, even when it could save everyone time and frustration.

It’s genuinely annoying to write a detailed PR description, only for a colleague to decline the review because they didn’t read a single word you wrote. You know it’s annoying. So do better. When someone takes the time to explain their thinking, read it.

And when you need help, questions land much better when you’ve shown effort. It’s fine to ask for clarification after reading something and not understanding it. It’s not fine to skip the instructions entirely.

4. Make Sure Your Code Works

When you’re working on a new feature or fixing a bug, any code you write - make sure it works. Not in a SwiftUI Preview. Maybe in the Simulator. Ideally, on a physical device.

If you haven’t run it, you don’t know if it works.

Tests pass, everything looks good. Maybe you forgot to run it on a device. Maybe you wanted to show off how fast you closed your Jira ticket to your manager. I’ve done it.

And then that one-line code change fails because you thought it works. Now instead of gloating how awesome you are, you’ve shown nothing and have to spend more time fixing it again.

3. Protect Your Time

Time is precious. And limited. We only have so many hours in a day, and at work. Knowing how to manage that time is an important skill to learn. Learn to prioritize. Learn to say no to new projects you know you don’t have time for.

I once had a manager who attended 3 meetings at the same time. One of those meetings was our 1-on-1, another one on his phone, and a third one on his iPad. But, he wasn’t really attending any of these meetings. You can’t be at 3 places at the same time. They can’t all be equally important.

Protecting your time isn’t selfish - it’s how you do your best work.

2. Say No

Learning when to say no is hard. You feel guilty because you don’t want to disappoint anyone so you say yes to everything. Then you pile so much work onto yourself you can’t do anything properly. Everything is late and you’re burnt out. It’s good for no one.

Saying no protects your time and energy, and creates space for the work that matters the most.

Learn to say no and never feel guilty for doing it. You know your boundaries and how much you can do in the allotted time. Think about what’s important for you and for your team. Nobody likes “yes-people”.

1. Control Your Emotions

When you care about something, it’s hard to emotionally distance yourself. If a project at work doesn’t go well - it hurts. If you fail an interview, you feel like a total failure. Hurting means you care. Of course you do. We’re humans after all.

It’s easy to project negative feelings and have them affect others around you. Being emotional is not a bad thing, but you need to learn to control it. If it helps, close your laptop and take a walk or go to gym and run on the treadmill. Pick yourself up, learn from the experience, and continue on. It’s a hard skill to master.

Caring is valuable - losing control isn’t. Emotional control is what makes people want to work with you again.

0. Take Care of Yourself

Take care of yourself. Everything else will come into place.

It’s much easier to show up at work and be ready for anything that day throws at you when you’re feeling well and rested. Get enough sleep. Go outside. Touch some grass. Anything that helps you leave your work behind you for the day and get some rest.

The best developers aren’t the ones who never stop - they’re the ones who know when to stop.

Final Thoughts

Your career isn’t defined by the languages you know or the libraries you’ve used. It’s defined by how you show up, how you work with others, and how you sustain yourself over time.

So, technical skills don’t matter? Of course they do! They’re the foundation for every developer and anyone can learn them with enough time.

But these other skills, the non-technical or “soft” skills, are different. They’re simple to understand, but genuinely hard to master.


Please feel free to reach out on X (Twitter) or Mastodon if you have any questions, comments, or feedback.

Thank you for reading!