Improving as Developers

A presentation at FrontFest 2018 in February 2018 in Madrid, Spain by Belén Albeza

Slide 1

Slide 1

IMPROVING AS DEVELOPERS Belén Albeza @ladybenko belenalbeza.com

Slide 2

Slide 2

A BIT ABOUT MYSELF… • 8 years of experience in the industry, in UK and in Spain • Game development for mobile and Facebook • Front-end, back-end, a bit of devops… • R&D and tiger team • DevRel at Mozilla • First joined a developers community at 14 yo.

Slide 3

Slide 3

BEING A FRONT-END DEV TODAY • LOTS of shiny new stuff every day • New frameworks, new tools, new API’s, new CSS properties… • LOTS of meet ups and conferences to go to • LOTS of pressure to “contribute to the community” • Do you have projects on Github? • Do you contribute to open source? • Do you write technical articles?

Slide 4

Slide 4

WHO IS OVERWHELMED?

Slide 5

Slide 5

Slide 6

Slide 6

IN THIS TALK • We’ll see which myths & beliefs are holding us back • How we can improve our performance, and learn effectively during our career • How we can make our teammates and colleagues better

Slide 7

Slide 7

MYTHS & BELIEFS

Slide 8

Slide 8

PASSION

Slide 9

Slide 9

ARE WE SURE “PASSION” IS WHAT WE ARE LOOKING FOR? • “Passion” tells nothing about a person’s talent, skills, or performance • “Passion” is sometimes used as an excuse to get advantage of people • Remember that we can be passionate and still have a life outside software • Let’s look for professionalism!

Slide 10

Slide 10

“ Professionalism is about knowing your job, doing it well, and being proud of it […] 
 Passion is no guarantee of talent or even basic competence. Ability, pride, discipline, integrity, dedication, organization, communication, and social skills are much more useful to an employer than passion is.

  • Ernest Adams 
 Passion versus Professionalism (Gamasutra)

Slide 11

Slide 11

OUR HEROES

Slide 12

Slide 12

BAD ROLE MODELS • Questionable ethics / behaviour • Being a genius doesn’t excuse bad actions • It’s naïve to assume their beliefs / actions don’t affect their code or the communities they lead

Slide 13

Slide 13

WHO CAN BE A GOOD ROLE MODEL FOR US? • A person we can relate to (similar background, circumstances, characteristics…) • Someone whose core values we respect • Ideally: someone we can hang out with

Slide 14

Slide 14

MERITOCRACY 
 & OPEN SOURCE

Slide 15

Slide 15

“ “Hackers should be judged by their hacking, not bogus criteria such as degrees, age, race, or position.”

  • S. Levy 
 Hackers: Heroes of the Computer Revolution

Slide 16

Slide 16

Slide 17

Slide 17

THE MYTH OF MERITOCRACY • It does not exist neither in our society, nor in tech • Read Toby Morris’ On a Plate comic 
 http://thewireless.co.nz/articles/the-pencilsword-on-a-plate

Slide 18

Slide 18

THE PROBLEM WITH OPEN-SOURCE • On paper it’s great… • …on practice, a lot of people get excluded • Lack of time and energy due to family care or housework • Lack of resources / space at home • A lot of people just can’t afford to work for free • Read Ashe Dryden’s " The Ethics of Unpaid Labor and the OSS Community"

Slide 19

Slide 19

WHY TALK ABOUT THIS?

Slide 20

Slide 20

WE ARE LOSING A LOT OF PEOPLE AND WE NEED THEM

Slide 21

Slide 21

Source: Women in tech: the facts (2016 update) 


Slide 22

Slide 22

IMPROVING OURSELVES

Slide 23

Slide 23

IF WE BURN OUT, WE’LL STOP DEVELOPING

Slide 24

Slide 24

INCREASING OUR PERFORMANCE • Sleep affects our learning, our performance, our decision-making, our stress levels, our health , etc 1 . • Exercise is crucial for health, energy and stress management • Meditation to handle stress and improve focus (apps: Headspace, Calm) • Try to be happy and fulfilled outside of work • Other activities can make us better devs (creative hobbies, sports, etc.) 1. Watch "What happens to your body and brain if you don't get sleep"

Slide 25

Slide 25

LEARNING

Slide 26

Slide 26

LEARNING: WITHIN THE COMPANY • Both the company and the employee benefit from training. • It’s easier to get your company to provide you training for things that are related to your current job. • i.e. “React” training if you are a front-end dev, or attending Google I/O if you develop for Android. • There’s a lot to learn in a 40h work week. Learn from your colleagues. Read their code. Try new things. Do your best.

Slide 27

Slide 27

LEARNING: ON YOUR FREE TIME • Can you squeeze some time from your day? (read on your commute, don’t watch TV…) • There are times when you just won’t have the time… and that’s OK. • Sacrificing things that are important to you is not sustainable in the long term… so reserve this for special moments: • Landing your first job • Switching sectors • Learn a critical skill for a promotion you want

Slide 28

Slide 28

LEARN EFFECTIVELY • Maximise your learning hours. Have a learning plan and don’t go blindly. • Enrol in a class / workshop. • Ask an expert for resource recommendations, which topics to learn and in which order. • You can repeat the plan for similar tech (i.e. create the same video game when learning different game engines). • If you can afford it, don’t be afraid of spending money on this. • Teach what you learn to consolidate it.

Slide 29

Slide 29

SIDE PROJECTS & MOTIVATION • Side projects are wonderful for learning new tech. • …but they are much more useful, career-wise, if we ship them. • Ways to keep your motivation high enough to finish it: • Mini-projects (ex: hackathons or game jams) • Break a long project in small milestones… than can be shipped on their own • Dog fooding

Slide 30

Slide 30

Slide 31

Slide 31

WHAT TO LEARN?

Slide 32

Slide 32

TRANSVERSAL SKILLS • English ! • Abstract thinking • Time management • Focus • Public speaking • Reading & writing • Professionalism

Slide 33

Slide 33

“EVERGREEN” TECH & TOOLS • Version control • Text editor (vim key bindings ftw) • UNIX tools: pipes, cat, grep, sed… • Scripts and automation • Debugging tools

Slide 34

Slide 34

“ETERNAL” CONCEPTS • Regular expressions • Programming paradigms: functional programming, OOP, pattern matching, polymorphism, etc. • Concepts / methodologies: SOLID, design patterns, data structures, algorithms, etc. • Concurrency

Slide 35

Slide 35

IMPROVING OTHERS

Slide 36

Slide 36

MAKE YOUR TEAMMATES BETTER • Your contribution to the team is not just your code… it’s also how you

affect other’s code as well. • If you are a senior developer, this is your job too . • Provide constructive feedback (be extra nice, some people have trouble separating their ego from their code). • Answer questions and be nice – don’t make your team fear or hate you. • Learn from each other: pair programming, code reviews, discuss together how to approach a problem, etc.

Slide 37

Slide 37

PSYCHOLOGICAL SAFETY • Read “High-performing teams need psychological safety” article • Study at Google on team performance saw that psychological safety

was the common factor of their highest performing teams. • In psychological safe teams, people are able to share ideas and execute them without fear of negative consequences, and they feel respected and accepted. • Don’t be the one who makes your team unsafe

Slide 38

Slide 38

YOU ARE NOT YOUR CODE • And others are not their code. • Don’t diminish yourself (or others) because of a mistake. What is important is learning from it. • Code is ideas, and we should be able to discuss ideas without personal attacks.

Slide 39

Slide 39

“SOFT SKILLS” ARE HARD! • So called “soft skills” are usually dismissed because we are bad at them or we don’t like them • They are crucial for your career • Learn to communicate, to speak, to give feedback, to lead, to handle conflicts, to be a team player, to be empathic… • … and you can keep them from job to job :)

Slide 40

Slide 40

THANKS!