Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

How to act like you (maybe actually) care about...

Jacob Mather
November 17, 2012

How to act like you (maybe actually) care about your work - Full Talk

Programming is a very involved career path, with many ongoing requirements to stay up on. Here we talk about those requirements and how to equip yourself with the tools to succeed.

For more information, see http://jmather.com/talks/2012-11-17/

Jacob Mather

November 17, 2012
Tweet

More Decks by Jacob Mather

Other Decks in Programming

Transcript

  1. Jacob Mather Co-Founder of Point Five Foundry IRC:  jmather  

    Twi0er:  @thejmather   Blog:  jmather.com  
  2. Where  to  start   •  Know your stack enough to

    debug. •  Pick an editor, and use it. •  Push outside of your comfort zone. •  Find a nerd-crush. •  Learn common patterns. •  Build a pet project.
  3. Where  to  start   •  Know your stack enough to

    debug. •  Pick an editor, and use it. •  Push outside of your comfort zone. •  Find a nerd-crush. •  Learn common patterns. •  Build a pet project.
  4. Where  to  start   •  Know your stack enough to

    debug. •  Pick an editor, and use it. •  Push outside of your comfort zone. •  Find a nerd-crush. •  Learn common patterns. •  Build a pet project.
  5. Where  to  start   •  Know your stack enough to

    debug. •  Pick an editor, and use it. •  Push outside of your comfort zone. •  Find a nerd-crush. •  Learn common patterns. •  Build a pet project.
  6. Where  to  start   •  Know your stack enough to

    debug. •  Pick an editor, and use it. •  Push outside of your comfort zone. •  Find a nerd-crush. •  Learn common patterns. •  Build a pet project.
  7. Where  to  start   •  Know your stack enough to

    debug. •  Pick an editor, and use it. •  Push outside of your comfort zone. •  Find a nerd-crush. •  Learn common patterns. •  Build a pet project.
  8. Where  to  start   •  Know your stack enough to

    debug. •  Pick an editor, and use it. •  Push outside of your comfort zone. •  Find a nerd-crush. •  Learn common patterns. •  Build a pet project.
  9. It  takes  10,000  hours   To become truly, objectively great,

    it takes tremendous effort. 0   2   4   6   8   10   12   80   60   40   20   Years To Master Hrs/wk
  10. You  must  learn  to  learn   A lot of people

    won't do something because they're afraid they will fail.
  11. You  must  learn  to  learn   If you can learn

    new things quickly, the only way you fail is by not trying.
  12. How  to  know  you  are  on  track   You should

    be learning at such a constant rate that the code you wrote six months ago embarrasses you now.
  13. Having  a  cheerleader  helps   Some people function better with

    regular outside input. Mentors can provide that! http://phpmentoring.org or #phpmentoring on Freenode
  14. Be  a  part  of  the  community   •  IRC • 

    Forums •  Mailing lists •  User groups
  15. Take  advantage  of  the  community   •  Stop reinventing the

    wheel. •  Stop being afraid of other people’s code •  Stop solving uninteresting problems.
  16. Take  advantage  of  the  community   •  Stop reinventing the

    wheel. •  Stop being afraid of other people’s code •  Stop solving uninteresting problems.
  17. Take  advantage  of  the  community   •  Stop reinventing the

    wheel. •  Stop being afraid of other people’s code •  Stop solving uninteresting problems.
  18. Take  advantage  of  the  community   •  Stop reinventing the

    wheel. •  Stop being afraid of other people’s code •  Stop solving uninteresting problems.
  19. Automate  everything   Anything you have to do by hand,

    you can (and will) mess up. Eventually.
  20. Automate  your  history   Version control solutions let you track

    the timeline of your soware, and assists coordination between multiple people on the same project.
  21. Automate  your  history   Use Git. Or Mercurial, or Subversion.

    Pick one. Use it. Constantly. Seriously. How? at’s another presentation.
  22. Automate  your  tes?ng   “Computers are great at doing the

    same thing the same way every time you ask it to. Humans, not so much” —  Chris  Hartjes,  @grmpyprogrammer  
  23. All  code  is  tested   Every line of code is

    eventually tested. All too oen, that test happens in production, in front of actual users. ere is a better way.
  24. Decide  to  test  up  front   Control how and when

    you test to get the most bene t out of it. Do everything you can to ensure show- stopping bugs do not reach production.
  25. The  soTer  side  of  tes?ng   ere is something special

    that happens when you stop thinking that your code works, and start knowing that it does. What else we can automate?
  26. Automate  your  deployment   “Prayer should not be part of

    the steps in the deployment process.” —  Ayende  Rahien,  @ayende  
  27. Automate  your  deployment   ere are tools speci cally designed

    to help. •  Capistrano •  Magallanes •  Phing •  Bash Scripts
  28. Automate  your  plaUorm   ere are services that can make

    this easier. •  PagodaBox •  Orchestra.io •  AppFog •  Heroku
  29. Automate  your  process   Continuous Integration can use your tests

    and your deployment setup to push updates to production as quickly as possible.
  30. That’s  a  lot  to  take  in   So let’s take

    a moment and re ect on things from a higher level.
  31. Realize  your  actual  job   “Soware developers tend to be

    soware addicts who think their job is to write code. But it's not. eir job is to solve problems.” —  Jeff  Atwood,  @codinghorror  
  32. When  solving  problems   Be sure that you are: 1. 

    Solving  a  problem  the  client  has.   2.  With  a  solu?on  that  makes  sense.   3.  That  it  is  fit  for  the  purpose  built.  
  33. Let’s  say  for  example…   •  You are running a

    conference. •  You built your own ticket sales system. •  You need a list of people coming. •  You’ll have to check them off.
  34. That’s  easy,  right?   ID   First  Name   Last

     Name   Email   Purchased  On   1   Igor   Wiedler   [email protected]   01/15/2007   2   Fabien   Potencier   [email protected]   01/17/2007   3   Rasmus   Lerdorf   [email protected]   01/25/2007   4   Cal   Evans   [email protected]   01/30/2007  
  35. Let’s  try  it  in  prac?ce.   ID   First  Name

      Last  Name   Email   Purchased  On   1   Igor   Wiedler   [email protected]   01/15/2007   2   Fabien   Potencier   [email protected]   01/17/2007   3   Rasmus   Lerdorf   [email protected]   01/25/2007   4   Cal   Evans   [email protected]   01/30/2007   Find Mr. Potencier
  36. Let’s  try  it  in  prac?ce.   ID   First  Name

      Last  Name   Email   Purchased  On   1   Igor   Wiedler   [email protected]   01/15/2007   2   Fabien   Potencier   [email protected]   01/17/2007   3   Rasmus   Lerdorf   [email protected]   01/25/2007   4   Cal   Evans   [email protected]   01/30/2007   Find Mr. Potencier
  37. Let’s  try  it  in  prac?ce.   ID   First  Name

      Last  Name   Email   Purchased  On   1   Igor   Wiedler   [email protected]   01/15/2007   2   Fabien   Potencier   [email protected]   01/17/2007   3   Rasmus   Lerdorf   [email protected]   01/25/2007   4   Cal   Evans   [email protected]   01/30/2007   Find Mr. Evans
  38. Let’s  try  it  in  prac?ce.   ID   First  Name

      Last  Name   Email   Purchased  On   1   Igor   Wiedler   [email protected]   01/15/2007   2   Fabien   Potencier   [email protected]   01/17/2007   3   Rasmus   Lerdorf   [email protected]   01/25/2007   4   Cal   Evans   [email protected]   01/30/2007   Find Mr. Evans
  39. #   First   Last   Email   Purchased  

      21   Dave   Marshall   [email protected]   02/15/2007   22   Heather   Buchel   [email protected]   02/17/2007   23   Graham   Boyes   [email protected]   02/25/2007   24   John   Kary   [email protected]   02/30/2007   25   Casey   Wilson   [email protected]   02/30/2007   26   Eric   Houge   [email protected]   03/01/2007   27   David   Clark   [email protected]   03/01/2007   28   Rich   Bowen   [email protected]   03/01/2007   29   Damon   Jones   [email protected]   03/02/2007   30   Stuart   Herbert   [email protected]   03/02/2007   31   Omni   Adams   [email protected]   03/02/2007   32   Tyler   Stoud   [email protected]   03/02/2007   33   Marco   Pive0a   [email protected]   03/03/2007   34   Jonah   Lupton   [email protected]   03/03/2007   35   Al   Ganiev   [email protected]   03/03/2007   36   Michael   Horn   [email protected]   03/03/2007   37   Andy   Leon   [email protected]   03/03/2007   38   Baulder   Rensch   [email protected]   03/04/2007   39   Joshua   Estes   [email protected]   03/04/2007   40   Jeremy   Mikola   [email protected]   03/04/2007   #   First   Last   Email   Purchased     1   Igor   Wiedler   [email protected]   01/15/2007   2   Fabien   Potencier   [email protected]   01/17/2007   3   Rasmus   Lerdorf   [email protected]   01/25/2007   4   Cal   Evans   [email protected]   01/30/2007   5   Ma0   Farmer   [email protected]   01/30/2007   6   Jeremy   Crump   [email protected]   02/01/2007   7   April   Mather   [email protected]   02/01/2007   8   Dave   Schup   [email protected]   02/01/2007   9   Michael   Hilde   [email protected]   02/02/2007   10   Jamie   Plato   [email protected]   02/02/2007   11   Pablo   Godel   [email protected]   02/02/2007   12   Andrew   Kaser   [email protected]   02/02/2007   13   Jeremy   Cook   [email protected]   02/03/2007   14   Larry   Garfield   [email protected]   02/03/2007   15   Adam   Culp   [email protected]   02/03/2007   16   Luis   Cordova   [email protected]   02/03/2007   17   Lonnie   Brown   [email protected]   02/03/2007   18   Jeff   Carouth   [email protected]   02/04/2007   19   Jeremy   Kendell   [email protected]   02/04/2007   20   Ismael   Ambrosi   [email protected]   02/04/2007  
  40. #   First   Last   Email   Purchased  

      21   Dave   Marshall   [email protected]   02/15/2007   22   Heather   Buchel   [email protected]   02/17/2007   23   Graham   Boyes   [email protected]   02/25/2007   24   John   Kary   [email protected]   02/30/2007   25   Casey   Wilson   [email protected]   02/30/2007   26   Eric   Houge   [email protected]   03/01/2007   27   David   Clark   [email protected]   03/01/2007   28   Rich   Bowen   [email protected]   03/01/2007   29   Damon   Jones   [email protected]   03/02/2007   30   Stuart   Herbert   [email protected]   03/02/2007   31   Omni   Adams   [email protected]   03/02/2007   32   Tyler   Stoud   [email protected]   03/02/2007   33   Marco   Pive0a   [email protected]   03/03/2007   34   Jonah   Lupton   [email protected]   03/03/2007   35   Al   Ganiev   [email protected]   03/03/2007   36   Michael   Horn   [email protected]   03/03/2007   37   Andy   Leon   [email protected]   03/03/2007   38   Baulder   Rensch   [email protected]   03/04/2007   39   Joshua   Estes   [email protected]   03/04/2007   40   Jeremy   Mikola   [email protected]   03/04/2007   #   First   Last   Email   Purchased     1   Igor   Wiedler   [email protected]   01/15/2007   2   Fabien   Potencier   [email protected]   01/17/2007   3   Rasmus   Lerdorf   [email protected]   01/25/2007   4   Cal   Evans   [email protected]   01/30/2007   5   Ma0   Farmer   [email protected]   01/30/2007   6   Jeremy   Crump   [email protected]   02/01/2007   7   April   Mather   [email protected]   02/01/2007   8   Dave   Schup   [email protected]   02/01/2007   9   Michael   Hilde   [email protected]   02/02/2007   10   Jamie   Plato   [email protected]   02/02/2007   11   Pablo   Godel   [email protected]   02/02/2007   12   Andrew   Kaser   [email protected]   02/02/2007   13   Jeremy   Cook   [email protected]   02/03/2007   14   Larry   Garfield   [email protected]   02/03/2007   15   Adam   Culp   [email protected]   02/03/2007   16   Luis   Cordova   [email protected]   02/03/2007   17   Lonnie   Brown   [email protected]   02/03/2007   18   Jeff   Carouth   [email protected]   02/04/2007   19   Jeremy   Kendell   [email protected]   02/04/2007   20   Ismael   Ambrosi   [email protected]   02/04/2007  
  41. #   First   Last   Email   Purchased  

      1   Igor   Wiedler   [email protected]   01/15/2007   2   Fabien   Potencier   [email protected]   01/17/2007   3   Rasmus   Lerdorf   [email protected]   01/25/2007   4   Cal   Evans   [email protected]   01/30/2007   5   Ma0   Farmer   [email protected]   01/30/2007   6   Jeremy   Crump   [email protected]   02/01/2007   7   April   Mather   [email protected]   02/01/2007   8   Dave   Schup   [email protected]   02/01/2007   9   Michael   Hilde   [email protected]   02/02/2007   10   Jamie   Plato   [email protected]   02/02/2007   11   Pablo   Godel   [email protected]   02/02/2007   12   Andrew   Kaser   [email protected]   02/02/2007   13   Jeremy   Cook   [email protected]   02/03/2007   14   Larry   Garfield   [email protected]   02/03/2007   15   Adam   Culp   [email protected]   02/03/2007   16   Luis   Cordova   [email protected]   02/03/2007   17   Lonnie   Brown   [email protected]   02/03/2007   18   Jeff   Carouth   [email protected]   02/04/2007   19   Jeremy   Kendell   [email protected]   02/04/2007   20   Ismael   Ambrosi   [email protected]   02/04/2007   #   First   Last   Email   Purchased     21   Dave   Marshall   [email protected]   02/15/2007   22   Heather   Buchel   [email protected]   02/17/2007   23   Graham   Boyes   [email protected]   02/25/2007   24   John   Kary   [email protected]   02/30/2007   25   Casey   Wilson   [email protected]   02/30/2007   26   Eric   Houge   [email protected]   03/01/2007   27   David   Clark   [email protected]   03/01/2007   28   Rich   Bowen   [email protected]   03/01/2007   29   Damon   Jones   [email protected]   03/02/2007   30   Stuart   Herbert   [email protected]   03/02/2007   31   Omni   Adams   [email protected]   03/02/2007   32   Tyler   Stoud   [email protected]   03/02/2007   33   Marco   Pive0a   [email protected]   03/03/2007   34   Jonah   Lupton   [email protected]   03/03/2007   35   Al   Ganiev   [email protected]   03/03/2007   36   Michael   Horn   [email protected]   03/03/2007   37   Andy   Leon   [email protected]   03/03/2007   38   Baulder   Rensch   [email protected]   03/04/2007   39   Joshua   Estes   [email protected]   03/04/2007   40   Jeremy   Mikola   [email protected]   03/04/2007   is worked with four people. is does not work with 40. is will not work with 400.
  42. Let’s  really  solve  the  problem   ID   First  Name

      Last  Name   Email   Purchased  On   4   Cal   Evans   [email protected]   01/30/2007   3   Rasmus   Lerdorf   [email protected]   01/25/2007   2   Fabien   Potencier   [email protected]   01/17/2007   1   Igor   Wiedler   [email protected]   01/15/2007  
  43. Let’s  really  solve  the  problem   ID   First  Name

      Last  Name   Email   Purchased  On   4   Cal   Evans   [email protected]   01/30/2007   3   Rasmus   Lerdorf   [email protected]   01/25/2007   2   Fabien   Potencier   [email protected]   01/17/2007   1   Igor   Wiedler   [email protected]   01/15/2007  
  44. ATer  deciding  on  a  solu?on   Once you have decided

    how you will solve your user’s problem, it is time to make the magic happen. Let’s talk about code.
  45. Code  is  a  frenemy   You need to use code

    to build soware that solves users problems. Every line of code you write is another potential entry point for a bug.
  46. When  you  write  code   Remember that you will have

    to maintain it. Try to write so that when you come back in six months (and see how bad it is) you still understand what it is doing.
  47. Spaghej  code   e way you test spaghetti code is

    the same way you test spaghetti. row it against the wall, and see if it [works]. Spaghetti code actively resists testing.
  48. Write  code  deliberately   Using proven methods of soware development,

    you can make you job easier, and build better soware faster than was ever possible before.
  49. Don’t  repeat  yourself   If you’re using the same code

    in multiple places, abstract it to a shared class, so when requirements change, you only have to change them once.
  50. S.O.L.I.D.   •  Single Responsibility •  Open for extension • 

    Like their sub classes •  Incorporate interfaces •  Depend on abstractions
  51. Proudly  invented  elsewhere   e less code you write, the

    less code you have to maintain. Using other people’s code means that your soware can improve while you sleep.
  52. We’re  in  the  home  stretch   We’ve covered learning, what

    to learn, how to make time to learn, and things to consider when practicing what we’ve learned. ere’s one last thing I want to make clear.
  53. People  are  good  at  different  things   Your coworkers were

    all hired for a reason. Let them do their jobs, and even help them do their jobs better when you can.
  54. You’re  not  the  only  geek   As excited as you

    get about code, others get about their specialties.
  55. Some  typical  job  roles   •  Designers •  Project Managers

    •  Marketing / Sales •  Frontend Developers
  56. Some  typical  job  roles   •  Designers •  Project Managers

    •  Marketing / Sales •  Frontend Developers •  Backend Developers
  57. Unfortunate  truth  #1   Not everyone will be quali ed

    to do the job they are hired to do.
  58. Unfortunate  truth  #2   Not everyone who is quali ed

    will actually be any good at what they were hired to do.
  59. Unfortunate  truth  #3   Not everyone who is actually good

    at something will be given the freedom to prove it.
  60. How  to  not  be  that  programmer   Investing a little

    time in two things will help your career immensely 1.  Actually learn how to make friends. 2.  Actually learn how to make small talk.
  61. Do  you  have  a  great  team?   If you don’t

    know that you have a great team, then you likely don’t. e only way to x that is to nd a new one.
  62. Having  a  great  team  ma0ers,  really   Work with your

    team collectively to accomplish things that individually would never be possible.
  63. In  closing   Learning is the core of what we

    do. Community shows us what to learn. Automation makes time to improve. Solve problems, don’t just write code. Let your team back you up.