Becoming a Better

Developer

Your Host Today

Alex Fernández

@pinchito

My Story So Far

Learned programming when I was 10


Started working 20 years ago


Four years at ING Direct Spain


CTO at my (failed) startup


Senior developer at mediasmart


Freelancer in my spare? time

What We Will Cover


  • Advice For The Novice

  • Get Ahead Of The Curve

  • Top Of The Cream Of The Crop

  • Conclusion

Advice For The

Novice

Life As A Junior


“Junior developer after her first day”
Pablo Picasso, Oil on canvas, 1901-02

Learn From Others


Find a mentor


Work with seniors


Ask to work with seniors

Use Your Mentor!

“RTFM”
Charles West Cope, Oil on canvas, 1872

Be Ready To ACCept Criticism


“Junior dev gets aggressive after his first code review by senior peers”
Yoshimori Utagawa, 1862, Woodblock print

Learn Strategies


“Resolving technical debt”
Accumulated technical debt visible. Right image after refactoring.
Elías García Martínez, fresco,
c. 1930
Refactored by Cecilia Giménez

Track a Problem In Code


  • Follow the code,
  • add traces to the code,
  • google any error messages,
  • use a debugger,
  • comment out parts of the code,
  • write an example that fails in a similar way,
  • google for people with the same problem…


Every bug can be fixed

Ask For Help


“Git detached HEAD state”
Gustave Moreau, Watercolor, 1876

Get Ahead

Of The Curve

Are You Good?


“The Shell Scripter”
Osman Hamdi Bey, Oil on canvas, 1906

The 10x Developer


“The 10x developer”
Francisco de Goya, Oil on canvas, 1808–1812

Good and Bad Developers


Time to complete a programming task. Source: DeMarco and Lister: Peopleware (2nd edition), 1999, via Best Webfoot Forward.

Good Developers Cluster



Correlation between teammates. Source: DeMarco and Lister: Peopleware (2nd edition), 1999, via Best Webfoot Forward.


Your "Comfort" Zone


“John Hughes posts ‘Why Functional Programming Matters’”
Ferdinand Pauwels, Oil on canvas, 1872

Leaving the Comfort Zone



Why the #@&! would I want to leave my comfort zone?

Do these people even know what "comfort" means?

Translated from zezenzuska

Ways To Improve


  • Read a few books

  • Use a new framework

  • Learn a new language

  • And a few more

Trust Me, I'm An Engineer



Programmer: write code to spec


Developer: test and refactor as needed


Engineer: look at the failure modes of the system

Code Is Not The Goal



One of my most productive days was throwing away 1000 lines of code.

Ken Thompson

Impostor Syndrome


“Lead Angular Expert after announcement about moving the project to React.js”
Jan Matejko, 1862

Nobody Is Immune



The exaggerated esteem in which my lifework is held makes me very ill at ease. I feel compelled to think of myself as an involuntary swindler.

Albert Einstein

Beating Impostor Syndrome



Simple recipe:

  • Focus on achievements, not opinions
  • Work hard


A hard worker that focuses on results is always great!

Find Your Specialty


UX

Security

Scalability

Gaming

DevOps

Embedded

Data science

Machine Learning

Get Involved In The Community


Show up at a Meetup


Offer to give a talk


Go to a conference


Meet others with your interests

Meetups Are Fun!


“Haskell meetup”
Edward Hopper, Oil on canvas, 1942

Top Of The Cream

Of The Crop

Bring Me Problems, Not Solutions


“The allure of a full rewrite”
Viktor Oliva, Oil on canvas, c 1901-1903

The 10x Engineer, Revisited


“SRE tempted to ignore the on-call alert on a Saturday afternoon”
Pieter de Hooch, Oil on canvas, 1670

Not 10x, But 2x-3x



Time to complete a programming task. Source: DeMarco and Lister: Peopleware (2nd edition), 1999, via Best Webfoot Forward.

Ask For Help


“Programmer finds 1395 conflicts after ‘git merge develop master’, three days before deadline”
Gustav Courbet, Oil paint, 1844–1845

Resharpen Your Skills


“Thoughts on Flash”
William-Adolphe Bouguereau, Oil on canvas, 1848

The World in 2011


Containers meant VMWare

IE most used browser (Firefox 2nd)

iOS & Android below Mac OS

HTML5 not finished yet

Node.js was at 0.6.0

Java 7 just released

Golang was unstable

Elixir did not exist

Let The World Know


“Gentle technical discussion on IRC channel”
Francisco Goya, Oil on canvas, 1814

Show Your Work


Write a tech blog


Write a proposal for a CfP

(It's a great way to go to conferences for free!)


Improve your soft skills (writing, speaking)

Teach Others


“Philip Wadler explains ‘Propositions as types’ “
Carl Bloch, Oil on copper, 1877

Be Open To New Things



The key to having an interesting life

is to always say "yes" to anything crazy.

Freeman Dyson

Conclusion


Build Your Career


Set Yourself a Target


Build a Way to Get There


Don't Delegate this Burden on Anyone Else


Work Towards It!

Credits



Captions from Classic Programmer Paintings




Extended version:

http://alexfernandez.github.io/2016/becoming-a-better-developer.html

Thanks!