Upgrade to Pro — share decks privately, control downloads, hide ads and more …

My Journey With Code

My Journey With Code

In this presentation I tell my story about how I learnt to code, what drew to code, why I chose Python as a language of choice and my whole career journey to get me where I am today. This was my DjangoCon US 2018 Keynote.

Anna Makarudze

October 16, 2018
Tweet

More Decks by Anna Makarudze

Other Decks in Programming

Transcript

  1. My Journey With Code
    by Anna Makarudze
    DjangoCon US 2018
    @amakarudze

    View Slide

  2. About me Fundraising
    Coordinator, Django
    Girls Foundation
    Django Software
    Foundation Board 2018

    View Slide

  3. Overview

    Share my coding journey.

    Answer “Why Python?”

    Share my thoughts on mentorship
    through a project.

    View Slide

  4. My background

    View Slide

  5. Childhood in
    the rural
    areas
    1998

    View Slide

  6. Zimuto High
    School,
    Masvingo
    1999

    View Slide

  7. Then I met a tech
    enthusiast...

    View Slide

  8. Making the decision for
    a career in tech…

    View Slide

  9. And my coding journey
    begins…

    View Slide

  10. 1. Computer
    Studies,
    Computing
    High School
    Student

    View Slide

  11. 1. Computer
    Studies,
    Computing
    High School
    Student
    2. University
    Student,
    Intern

    View Slide

  12. 1. Computer
    Studies,
    Computing
    Student
    2. University Student,
    Intern
    3. Network
    Technician

    View Slide

  13. 1. Computer
    Studies,
    Computing
    Student
    2. University Student,
    Intern
    3. Network
    Technician
    4. Senior ICT
    Technician

    View Slide

  14. 1. Computer
    Studies,
    Computing
    Student
    2. University Student,
    Intern
    3. Network
    Technician
    4. Senior ICT
    Technician
    5. NOC
    Technician,
    Billing
    Analyst

    View Slide

  15. 1. Computer
    Studies,
    Computing
    Student
    2. University Student,
    Intern
    3. Network
    Technician
    4. Senior ICT
    Technician
    5. NOC
    Technician,
    Billing Analyst
    6. Senior
    BSS/OSS
    Consultant

    View Slide

  16. What role do I apply
    for?

    View Slide

  17. Met another old friend...

    View Slide

  18. Why Python?

    View Slide

  19. 1. Computer
    Studies,
    Computing
    Student
    2. University Student,
    Intern
    3. Network
    Technician
    4. Senior ICT
    Technician
    5. NOC
    Technician,
    Billing Analyst
    6. Senior BSS/OSS
    Consultant
    7. Consultant,
    Python
    Developer

    View Slide

  20. 1. Computer
    Studies,
    Computing
    Student
    2. University Student,
    Intern
    3. Network
    Technician
    4. Senior ICT
    Technician
    5. NOC
    Technician,
    Billing Analyst
    6. Senior BSS/OSS
    Consultant
    7. ICT Consultant,
    Python
    Developer
    8.
    Fundraising
    Coordinator

    View Slide

  21. Working with Python

    View Slide

  22. Full Disclosure/
    Disclaimer
    This is not my best project and it’s
    still incomplete. Work in progress.

    View Slide

  23. Github repo
    https://github.com/amakarudze/sh
    erpany-task

    View Slide

  24. Question
    Build a single page app with a full
    viewport map on top and a list of
    addresses below based on Django
    1.9.

    View Slide

  25. Major challenges

    We don’t use Google Maps that
    much.

    Had never heard of Google
    Fusion Tables in my life!

    View Slide

  26. Initial attempt

    AngularJS

    Django Rest Framework

    Django 1.9

    View Slide

  27. Initial feedback

    No testing.

    No validation.

    No documentation.

    View Slide

  28. Time for some personal
    development...

    View Slide

  29. Developing coding skills

    Learnt Angular online.

    Did a workshop tutorial on
    Django + Angular + DRF.

    View Slide

  30. Second attempt

    Google Map rendering issues with
    ngMap.

    POST requests were a huge
    struggle.

    View Slide

  31. Third attempt

    Angular, DRF and Django.

    Javascript to load map.

    Still struggled with Angular POST
    requests.

    View Slide

  32. Asking for help

    Twitter - for Angular POST.

    A friend responded and pointed
    me to a tutorial on CodeCraft.

    View Slide

  33. Asking for help

    Harry Percival- Testing & other
    stuff @ PyCon Namibia.

    Harry recommended books for
    coding interviews.

    View Slide

  34. Asking for help
    Marc Tamyln - Django dev and
    Validation

    View Slide

  35. Asking for help
    Daniele Procida- documentation @
    DjangoCon EU

    View Slide

  36. Asking for help
    Emma Delescolle- Django Rest
    Framework @ DjangoCon EU

    View Slide

  37. Asking for help
    Ola & Ola, Markus, Norma – Django
    & AJAX

    View Slide

  38. Sourcing books
    Raphael Michel helped with the
    shopping pre-DjangoCon Europe.

    View Slide

  39. Project redesign

    Django

    Javascript

    AJAX

    Django Rest Framework Amazon

    View Slide

  40. Getting a mentor

    Asked Tom Christie for help with
    AJAX via Twitter since DRF also
    uses AJAX.

    View Slide

  41. Brute force solution
    ➔Load map and do reverse geocoding
    for clicked places with Javascript.
    ➔Save to database and Google Fusion
    Tables using AJAX.

    View Slide

  42. Architecture
    ➔JavaScript and AJAX for frontend.
    ➔Django backend.
    ➔Django Rest Framework to link the
    two.

    View Slide

  43. Working with AJAX
    ➔I was new to AJAX and jQuery.
    ➔Required many Twitter DMs between
    me and Tom Christie to get the
    project working.

    View Slide

  44. Testing

    Functional tests.

    Unit tests.
    O’Reilly Media

    View Slide

  45. Validation
    Custom validator to check for
    “Unnamed” and duplicates for
    Address Model.

    View Slide

  46. Documentation
    Tutorial How-to Guides
    Explanation Reference

    View Slide

  47. Documentation

    Small project so followed the
    format but in a README.md.

    Best documentation I have ever
    done for a project!

    View Slide

  48. More feedback

    Good documentation and tests,
    though incomplete tests.

    Reverse geocoding to be done in
    backend.

    View Slide

  49. More feedback

    Resetting with a GET request
    wrong.

    Recommended reading resources.

    Validation not enough.

    View Slide

  50. More feedback
    ➔Question: What’s my career plan?
    ➔Joining a small team would be ideal for me
    to learn and would one day become a great
    developer.

    View Slide

  51. My reaction to the
    feedback?

    View Slide

  52. My ultimate career
    plan?

    View Slide

  53. Site Reliability
    Engineering

    View Slide

  54. Key lessons to draw
    from my journey...

    View Slide

  55. ➔Attending meetups, conferences,
    sprints helps meet potential mentors.
    ➔ASKING FOR HELP is crucial.

    View Slide

  56. ➔DO NOT dismiss a beginner.
    ➔Encourage.
    ➔DO NOT tell them how poor their
    code is - they that know already.

    View Slide

  57. My thoughts on
    mentorship...

    View Slide

  58. I feel so blessed to have so
    many kind people who take
    their time to look at my code
    and help me improve it.

    View Slide

  59. Getting involved in
    Africa…

    View Slide

  60. ➔Mentoring someone/ some people.
    ➔Speaking at conferences.
    ➔Help organise conferences.
    ➔Sponsor in some way.

    View Slide

  61. ➔Join our mailing list and help
    organise Pan-African events in Africa.
    [email protected]
    https://africa.python.org/en/

    View Slide

  62. “The key to realizing a dream is to
    focus not on success but significance,
    and then even the small steps and little
    victories along your path will take on
    greater meaning.”

    View Slide

  63. Thanks!
    Contact:
    @amakarudze
    [email protected]

    View Slide