Skip to content
This repository has been archived by the owner on Apr 2, 2020. It is now read-only.

Latest commit

 

History

History
127 lines (71 loc) · 9.32 KB

README.md

File metadata and controls

127 lines (71 loc) · 9.32 KB

Software Literature

INTRODUCTION

Hi everyone, my name is Ksenija and I work as a Product Manager in development company minus5. Today’s topic is not really a PM theme, but is related to one of my passions - that is bringing structure to chaos. And let’s be honest there is at least a little bit of chaos in each and every small software development company today.

What I will show you here today is WHY you should start reading books as one part of your career grow so in ten years you will not be just good but one of the few excellent developers. And I will present you with a recommended reading list that we prepared in-house and that should help you on that journey.

I will explain why we needed Career Path, which skill areas we believe are elemental and to which skill area this recommended list is related to.

TECHNICAL CAREER PATH

It all started when we grew from a company that employees few engineers (that were all seniors and mostly our friends) to a bigger company of about 20 people where not anymore everyone was at the same skill and experience level. After some painful project failures, we realized we had to found a way to scale one of the main values we have built our company on - and that is technical excellence. We had to adjust our expectations to different levels but at the same time we didn't want junior level to become excuse for low expectations or weak performances.

To satisfy that need (and some other needs company faced at a time) we started by creating our Technical Career Path that consists of 5 levels:

  • Junior
  • Independent
  • Senior
  • Principal
  • Fellow

How many of you have heard about Career Path? Or Engineer Ladder?

What is important is that we do not look at it as an excuse for getting/not-getting raise or opportunity for putting some fancy title on LinkedIn. It is just a side effect.

We are all aware that these days you (software developers) are job-hopping and earning promotions on a daily basis. And your titles change as well, so you can earn expert-sounding ("rock-stars" and "ninjas") titles very quickly and probably in some cases much before your skill level deserves it. And that is fine, because it means you will also get good paychecks that goes with it, but titles are not important, your capabilities are.

We created this Career Path to support our company's practices, values and culture. And if your professional goals are aligned with company ones (and it should be if you want to grow your career within that company) then Career Path gives you something to work towards. Then you can look at it as the best possible framework for your personal growth and not something company enforces. And this is the way we look at it.

SKILL AREAS

Let's see which three main skill areas we detected each individual should work on during their professional growth.

Of course primary skill for each developer is his chosen technical field of expertise (domain) (be it backend, frontend, DB, you name it).

This skill area is related to HOW you do stuff (how you use revision control, specific framework, query a database). You are all aware it is critically important, you consciously put great effort in enhancing this skill area and most talks on this conference are related to it (if you don't know how to do stuff than nothing else is important). It is not my field od expertise I will not talk about it today.

Then there are communication skills. Last year's huge improvement in this field is being addressed with introduction of agile methods. We all are becoming aware that communication is important and I will not talk about it neither.

But there is one more crucial modern skill that is usually unfairly neglected and that is PROBLEM SOLVING (THINKING) SKILL.

It's not the same to have enough experience and knowledge to get stuff done; and to know why you are doing something in a certain way, and how it fits into the big picture.

“ten years of experience or the same year of experience ten times”

Why is this skill area so important?

That's because software isn't designed in an IDE or other tool. It's imagined and created in your heads. Programming is all about problem solving. It requires creativity, invention and critical thinking.

What I have noticed is that most never specifically focus on developing this skill area. It is common opinion that you will improve your problem solving skills by enhancing your field of expertise. But I don't agree.

I believe this area requires active focus and my todays talk is related to this area.

Within a company, we asked ourselves what can we do to help younger colleagues enhance problem solving and thinking skills? The problem is it's not so straightforward as enhancing your programming skills.

The first thing we did, we looked how our senior experts get there.

RECOMMENDED READING LIST

SLIKA NAŠE KNJIŽNICE + LINK NA PUBLIC KNJIŽNICU minus5 library

Our CEO and CTO are both bookworms, and we have a company library with over 250 printed pieces. So we realized that reading books was important part of their journey to expertise and realized one of the things we can do to support grow of our colleagues is to encourage them to read books as well.

So we could just tell everybody to read all 250 titles (and all other millions of books available online) and problem solved :)

Well, it turned out it's not that easy.

At some point during this process I was introduced to Dreyfus model of skill acquisition and it opened my mind by explaining that learning needs and styles differ depending on people's level.

DREYFUS MODEL

Dreyfus model was developed by two researchers (brothers) who studied how humans learn and gain new skills as they wanted to advance artifical intelligence. They wanted to write software that will learn and attain skills in the same manner that humans do.

As outcome of their research they developed Dreyfus model that explains how people acquire skills outlining five stages (Novice, Advanced Beginner, Competent, Proficient, Expert) through which one must pass on the journey from beginner to expert.

Dreyfus model describes that beginners and experts are fundamentally different. How you will see further how you progress on that journey you don't just "know more". How you see the world, how you react and what is the most important how you learn changes depending on your level.

Three most important changes along the way are the following:

  • Moving away from reliance on rules to intuition
  • A change in perception, where a problem is no longer a collection of equally relevant bits but a complete and unique whole where only certain bits are relevant
  • Finally, a change from being a detached observer of the problem to an involved part of the system itself

Although Career Path also has five stages it is important to understand the difference between the two. Career Path gives you overview what is expected on each level based on combination of different skill areas. Dreyfus model describes how we progress in acquiring one specific skill. Dreyfus model does not rate the whole person, it is applicable per skill. It is probably that you are at the different level at each of the three main skill areas I described.

I will now show you how we applied Dreyfus model to our Career Path to see learning needs of each level.

STARTER KIT - JUNIORS

  • they don't particularly want to learn; they just want to accomplish an immediate goal;
  • they want information fast (e.g. learning a new language and you are quickly looking for that one method, you are not interested in lengthy theory or the basics yet again);
  • they still do not see "the big picture".

Learning Strategy: "Show me how" and "Help me do it better"

SELECTED TITLES FROM JUNIOR'S LIST

AND BEYOND - INDEPENDENTS

  • they can troubleshoot problems on their own and begin to figure out how to solve junior's problems (ones they haven't faced before);
  • they will seek out and solve problems; their work is based more on deliberate planning and past experience (although without more experience, they'll still have trouble trying to determine which details to focus on when problem solving).

Learning Strategy: "Help me find what I need"

SENIORS

  • they need the big picture
  • they can correct previous poor task performance (they can reflect on how they’ve done and revise their approach to perform better the next time)
  • they can learn from the experience of others

Learning Strategy: "I create my own learning"

CONCLUSION

Einstein: We can't solve problems by using the same kind of thinking we used when we created them

The occasion for this talk was creation of recommended reading list that focuses not on your programming skills but on problem solving and provides you with the bigger picture that should help you with your professional grow. Nevertheless, although reading books is very important part of that journey, it is just one part of the puzzle.

There are many different ways for developing skills alongside reading books (by experience, by attending conferences, taking classes), and the best result will give combination of those.

What I would like you to take with you from this talk, is to keep focus on developing your skills, especially problem solving skills. I know that today with short deadlines and high job demands it is very hard to invest additional effort in learning. But once we stop learning, we start dying.