Shaping your profesional skills structure


Hey guys,

So, professional shaped skills… What’s that. Basically, it’s the form your skills take concerning your expertise in your individual field(s). This form will depend on both depth and broadness. Trying to learn as many things as possible will lead to little depth and a large broadness of skills. The exact opposite leads to an ‘I’ form where you’ve picked up a single domain and you’ve decided to become an expert.

The problem with being a jack of all trades, we can’t justify our opinion on a particular subject, you may be not be in a place to answer that question. Although your opinion may not be value because you’re not expert, I do believe that trying to learn as many things as possible will bring you baggage. This baggage can help form some sort of highly credible hypothesis when you’re asked, let’s say, by a client a particular question such as what should be done in case you’d like to build a website and include the X feature.

Let’s talk about the expert. The expert is the go to guy. He’s the guy you want in your team to be able to quickly build a project from the ground up and see it through. Some problems may occur and because of his/her experience, you will have sound advice when you need to ask the hard questions. Although becoming an expert may seem like the thing to become, I’d advise to think it over again. Becoming an expert in one thing may lead to problem career wise in my honest opinion. You may wake up on morning and feel like you’ve waisted 5, 8 or even 12 years in a field and it doesn’t attract you any longer. You don’t have anything else to fall on.

This brings me to the principal shapes for professional skills. T-shaped skills is when someone would combine some deep expertise on a topic with a broad and more shallow knowledge on things. Pi-shaped skills would be to have two deep expertise and comb-shaped skills one person having multiple set of skills.

In my case, if I were to pick right now the set of skills I’d like to deepen and the rest would be “noise” helping me getting a better all-around software engineer, I would only pick a few. Here’s the list below.

  1. Artificial intelligence and machine learning
  2. Functional programming
  3. Mobile cross-platform development
  4. Oriented-object architecture/design (OOA/OOD)
  5. User experience design

Yes some of those skills are far from each other and some are pretty close to each other. Thing is, right now, there perfectly aligned with the set of skills I have / want to have. More than that, I think those 5 fields are large enough to let me bounce on feet whenever I feel the need.  I can start projects of my own whenever I’ll feel the need. Bottom line, I may not become the best guy in each of those fields. Nevertheless, I think the challenges those fields will make me face throughout my career will make a better developer.

Which one should people try to aim for ? Try to pick 1 or even 2 skills you’d like to develop in your domain. For someone in software development, I could say you could try with web development and databases and move on to other related subjects once you feel comfortable enough to work juggle with new things. Comb-shaped skills are hard to maintain and it makes sense. You need to spend a lot of time to cultivate them and even more time to maintain them. As you become more and more advanced, you’ll need to read research papers, go to meetups and even conferences to deepen your knowledge.

Right now, the skills I decided to work on may seem hard to maintain. I think we should know our limits and see how much time we can afford to spend on those skills. Since I’ve started my career in software engineering, I’ve been able to see what I’m good at but more importantly, what I’m bad at. With those specifics in mind, I decided on the abilities I want to have in a near/far future. I’ll finish with this: have a broad knowledge to become a better generalist and at least one thing where you are an expert.

Becoming a strong generalist will help you decide what you may like enough to start spending more time in it in order to become a specialist. Don’t forget to have some insights on competitive technology stacks that are out there. Each of them will have their strong/weak points.To work on a project, one would need to be aware of what’s out there to be able to make a wise decision.


Become better, learn better, do code katas !


Hey guys

Today, I’m here talking about how to better ourselves us developers. We’re always learning while working and that’s bad. We should instead learn in our own time and practice before trying to use our tools to resolve the bugs in the software and the features requests from the clients. Learning on the job takes that much more time to work on our things when we should only be working on what we’re being paid for. There are many ways to learn and I’m not saying that sharping your skills with code katas is the best way to do it. No. What I’m trying to say is that you should try to spend some of your free time and practice one of your many languages.


Through code katas, one can learn and practice many core and advances computer science/software engineering concepts. A code katas is a problem that must be solve in any way possible. The fun of doing them is trying different ways to solve a problem and see which way would be the best way to resolve the issue. Using a code kata platform such as Codewars, after solving a problem, you can see the solutions of other people. This way, even if you’re an advanced user of X language, seeing other solutions can bring you perspective and show some internal API function you couldn’t have thought of.

And yes, I know you want to become better. One cannot become a master of his/her craft without devoting time to practice and practice. Practice makes better. It’s undeniable. We need to practice and better ourselves. This way, you can be a even better software engineer at work and earn that well deserved promotion. If you’re an entrepreneur, well practicing will help you learn things that code bootcamp couldn’t show you because you have a limited time to see a bunch of stuff.

But let’s get one thing clear. It’s not productive to repeat the same problem. It does not bring you closer to the path of enlightenment. Let’s look at it this way. When we’re babies, we must practice for a long while before we can learn out to walk by ourselves. But after that, “practicing walking” doesn’t make your walking any better, does it ? Practicing the same thing will be beneficial if only you try to include constraints and twists to make it an even better scenario. For instance, well this time, I can only used one kind of data structure or I have to used a maximum of X local variables or I can only used a certain amount of character space.

Code katas bring you closer to the path of enlightenment in cases where you do make it harder and trying other problems. As you solve more code katas, try to take on harder problems. Doing so, this practice is actually worthwhile and those challenges will introduce you to new ways of thinking. I think you can pretty much gather that I strongly recommend acting this way. One thing that I must say is this: try to solve your katas without using an IDE. You’ll be able to remember your basics and try to focus on a simple solution without letting the IDE make life easier for you.

I’ve been talking about using efficiently code katas to improve yourself. I can’t speak for everyone out there, but I would like to attain mastery as quickly as possible. As I said before, to get to the level of skills that you would like to get, you need to practice at an higher level of difficulty. Being used to practice to a hard level, what you do on a constant basis will seem that much easier.

To become better, we must :

  1. Practice smarter. Not repeat the same things but try harder challenges or adding twists in scenarios and make those challenges harder.
  2. Cast aside some of your personal time. Doing nothing more than what you have to do won’t bring where you’d like to be.
  3. Don’t use IDE. IDEs will make it that much easier to use complicate constructs and will auto-complete your solution. Well, I’m saying that for people who are practicing for an interview. You have to remember your language API and be able to solve a problem in front of the technical team who’ll judge if you are at the right technical level.
  4. Look at other’s people code. See, when you solve a problem, you might think that the solution you have is the best one and that was the only way to do it. Looking at other people solutions will bring you clarity and will broaden your vision.


On an ending note, you can’t learn everything you want to learn through code katas only. You must also cast time aside for personal projects or try to contribute on open source work. All of this work is necessary to bring you a little closer to the level you’d to be on. And when do get on that level, try to go even further !