domingo, 6 de julio de 2014

Being a Junior developer

Hi there!

One of the things I do to take the best of my time is to do things when doing other things. Maybe this is not a good thing, so I don´t want you to take this as an advice:)

But yes, I do run, and while I'm running I will hear some Music I like. But I also hear podcasts, and one of my favourite time span to hear that is while running. I hear programming podcast. I know, I can look like a nerd, but these podcasts are pretty awesome.

Yesterday I was running back home and I took one of the great Scott Hanselman. This is the podcast:
http://hanselminutes.com/427/what-it-really-means-to-be-junior-developer-with-jonathan-barronville

The podcast was a talk between Scott and Jonathan Barronville, a Junior Programmer. Yes, he was proud of being a Junior Programmer.
It was like a revelation for me. I remembered myself some years ago, pretty stressed being a Junior Programmer, I wanted to become a Software Architect in some months.

Why should I be proud of being a Junior Programmer?

Have you experienced that situtation: you are clearly the "junior guy"?
It can be really a stigma, you hate yourself for being that and salary doesn´t help on that.

Jonathan experienced the same situation, and one day he asked himself, why is that happening?
He suddenly noticed that it was more a benefit than a bad thing, it was a great:
-He could learn.
-Being paid for it.
-Yet it was Ok to make mistakes, actually he was expected to make it.

The Senior guy, despite the fact of having an awesome title, it is harder for them to messed up.

What is Experience?

Years, years in the company, years in the technology?
Experience is more what you know and what you have to learn.
Have you ever hear the following: this guy must be a Senior because he has 20 years in the company.

We all know people that have been so many years in a company, maybe 10 years, but they keep on doing the same every year (language, project, technology). That´s the same year 10 different times.

On the other hand, if you have the same 10 years, but you´ve been in 5 different projects, three companies, four frameworks, diverse group of people, failing, it has much more value.
We must focus not only into years of experience, but even more important what have you done in those years.

Making Mistakes 

Ouch, it even hurts to write this word, MISTAKE...



In our industry, mistakes are not seen well.
In my opinion failures are so valuable: it tells that somebody have tried something and learn something while failing.

In our culture we would probably take the following resume very seriously:

Juan Antonio Vicaria, PhD Computer Science, MVP Microsoft, C#, Phyton, JS, Ruby, C++, Erlang. 5 years experience...

Would you think the same about the following?

Juan Antonio Vicaria, 2 years in C# learning from scratch, 2 years trying different JS Frameworks, 1 project that failed because of scope, 1 project failed because of incorrect technology chosen, 1 succesful project.

I would like to be the second Vicaria. I´m going to work so hard to make mistakes when I can.


Embrace Learning

Learning is as important as failing. They are so related because when you are learning something you make mistakes, that´s how you learn.
We should see and understand what people have learnt.
For example we should value not only the number of languages somebody knows, but what he has learnt with them.
"Ok, you have NodeJS in your CV, but tell me what it offers, what have you learnt with it".

We should value people learning new things. Every time we learn a new language, even though you are not using it, you have learnt something. You don´t need to be a master in the language, you just may know that it exists and what kind of problems solves. One day, if needed, you will go and learn it properly for a project.
If we take the example of a famous cooker, in his CV we won´t see that he is able to use 20 different pans, 1000 techniques for preparing meat, 2000 ingredients he knows how to use.
Instead, we should probably see some examples of his best dishes. Knowing techniques to get the very best of every ingredient is much better than just saying, I know 1000 techniques.



A Junior developer is somebody realising there are a number of tools that he needs to learn to do well under different scenarios.

We could be a 20 years experience developer, and suddenly we have to learn Erlang. We are totally new to Functional languages.
Why shouldn´t we accept that we suddenly became Junior Developers? What´s the problem in that?
We were just lucky, because we suddenly are allowed to take our time, go and learn, and fail when learning.

Embrace Not-knowing

Our world is crazy, we have to know ASP, Knockout, Node, Angular, ext, .net, js, sql, mongo, spring, hybertnate, jasmine, nunit, specflow,... I could follow like that forever.

Again, what´s the problem in saying "I DON´T KNOW"?



Imagine we go to a meeting and when somebody suggests SignalR for the next project, we don´t know what it even is.
In our world, any programmer (Junior or Senior) normally would simply don´t say a word. Later he would go to Wikipedia and read the first paragraph of SignalR.
I have done it so many times that I feel ashamed.

Why don´t we go to that meeting and tell "Sorry, I don´t know what is SignalR, seriously buddy I don´t have any idea of what it is. Can you explain me?"
Even if you have 15 years experience, you don´t have to know everything.

Please next time you are in that situation, please go ahead, tell "I don´t know". Ask that question, nobody should look at you badly.
Please if you are the guy that knows, don´t look at them badly. Please go ahead and explain.
I would like to say that to the junior Juan Antonio, please mate, don´t feel bad when asking, you are there to learn.

Specially when a new guy arrives to the company.
Have you seen the typical nerd superb programmer in the company who is the typical don´t-ask-me-questions guy?
Yes, you will go to his place, you are the new programmer in town, he will look at you with an icy sight, telling:
"I would tell a few words, but why on earth have you entered in the company without knowing that, why are you such a moron?".

Please go ahead and get rid off this type of people surrounding you, people that makes you feel so damn for not-knowing.
If you don´t know what I mean please meet Nick Burns, watch this:


We are all learners, we should keep that passion about learning, even if you have 30 years, you should still feel like a junior programmer, feeling that you are getting a new thing everyday, starting fresh every year.
If you are one year experience, if you are a junior programmer surrounded by Nick Burns, please don´t feel bad. Embrace the passion of learning.

Being a Junior developer again


I know a person, he has worked in my company for more than 10 years. He knew everything about the old framework. One day, he felt like he wanted a change and moved to a new project.
Suddenly he was surrounded by young people with more knowledge about the new project.
But he was able to say and ask these questions, he went modeslty and started to learn again. Now he is an architect in his area.

Some years ago I felt so badly being a Junior. I was payed lower than my Nick Burns´ mates, I would literally sit in front of the computer, everyday, feeling like a damn, blaming myself, I would think every 5 minutes when I´m going to stop being a Junior programmer.

One day something change, I stop blaming and complaining about my role, if I had to be there, let´s take the best of everyday. I stop getting stressed about being a Junior, instead focus on learning.
I suddenly became a non-junior programmer without actually thinking on that.


In one month I´ll be starting in a new company. I´m going to be the Junior guy, I´m not going to feel bad for not knowing. Yet, I won´t arrive as a super star. I would like to be able to say: "I don´t know that" "Can I ask you a question?".
I´m looking forward to being again a Junior programmer. Because life is so boring that we have to keep moving ourselves out of the confort zone. Yes, it feels hard in the begining, but isn´t it great when you have faced that and you have learnt something new.

Please let´s go and change our bussiness. We have a long way to go.

Here you can read the full article written by Jonathan Barronville about this:
 https://medium.com/i-m-h-o/what-it-really-means-to-be-a-junior-developer-266acb772b4b

If you don´t know Scott Hanselman, please go now to his blog:
http://www.hanselman.com/
I met Scott in NDC 2014 here in Oslo. He gave a great talk: Fun with Javascript. Fantastic talk:
http://vimeo.com/97454683

Keep coding, keep learning!

2 comentarios:

  1. Enjoying so much being not only a Junior Software Engineer, but also a Junior Network Engineer, and a Junior System Engineer, and a Junior Triathlete, and a Junior Triathlon Trainer, and a Junior Father, and so on...

    ResponderEliminar
  2. Nice post Juanan! Even if you're junior you might have been part of important projects with other languages and tools in your previous company which made you achieve a huge knowledge that will be helpful in the future.

    I don't consider ourselves juniors, we've learned a lot and it doesn't matter if you've to use a different language because thanks to our previous experience we're ready to learn FAST any new thing.

    We're curious people, we're hungry to learn and we're ready to be as good as anyone else and make great contributions to big projects no matters the IDE, language or tools.

    ResponderEliminar