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.

F43d5f170347fcbd46ef0cc3bee45612?s=128

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
  2. About me Fundraising Coordinator, Django Girls Foundation Django Software Foundation

    Board 2018
  3. Overview ➔ Share my coding journey. ➔ Answer “Why Python?”

    ➔ Share my thoughts on mentorship through a project.
  4. My background

  5. Childhood in the rural areas 1998

  6. Zimuto High School, Masvingo 1999

  7. Then I met a tech enthusiast...

  8. Making the decision for a career in tech…

  9. And my coding journey begins…

  10. 1. Computer Studies, Computing High School Student

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

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

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

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

    Network Technician 4. Senior ICT Technician 5. NOC Technician, Billing Analyst
  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
  16. What role do I apply for?

  17. Met another old friend...

  18. Why Python?

  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
  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
  21. Working with Python

  22. Full Disclosure/ Disclaimer This is not my best project and

    it’s still incomplete. Work in progress.
  23. Github repo https://github.com/amakarudze/sh erpany-task

  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.
  25. Major challenges ➔ We don’t use Google Maps that much.

    ➔ Had never heard of Google Fusion Tables in my life!
  26. Initial attempt ➔ AngularJS ➔ Django Rest Framework ➔ Django

    1.9
  27. Initial feedback ➔ No testing. ➔ No validation. ➔ No

    documentation.
  28. Time for some personal development...

  29. Developing coding skills ➔ Learnt Angular online. ➔ Did a

    workshop tutorial on Django + Angular + DRF.
  30. Second attempt ➔ Google Map rendering issues with ngMap. ➔

    POST requests were a huge struggle.
  31. Third attempt ➔ Angular, DRF and Django. ➔ Javascript to

    load map. ➔ Still struggled with Angular POST requests.
  32. Asking for help ➔ Twitter - for Angular POST. ➔

    A friend responded and pointed me to a tutorial on CodeCraft.
  33. Asking for help ➔ Harry Percival- Testing & other stuff

    @ PyCon Namibia. ➔ Harry recommended books for coding interviews.
  34. Asking for help Marc Tamyln - Django dev and Validation

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

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

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

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

  39. Project redesign ➔ Django ➔ Javascript ➔ AJAX ➔ Django

    Rest Framework Amazon
  40. Getting a mentor ➔ Asked Tom Christie for help with

    AJAX via Twitter since DRF also uses AJAX.
  41. Brute force solution ➔Load map and do reverse geocoding for

    clicked places with Javascript. ➔Save to database and Google Fusion Tables using AJAX.
  42. Architecture ➔JavaScript and AJAX for frontend. ➔Django backend. ➔Django Rest

    Framework to link the two.
  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.
  44. Testing ➔ Functional tests. ➔ Unit tests. O’Reilly Media

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

    Address Model.
  46. Documentation Tutorial How-to Guides Explanation Reference

  47. Documentation ➔ Small project so followed the format but in

    a README.md. ➔ Best documentation I have ever done for a project!
  48. More feedback ➔ Good documentation and tests, though incomplete tests.

    ➔ Reverse geocoding to be done in backend.
  49. More feedback ➔ Resetting with a GET request wrong. ➔

    Recommended reading resources. ➔ Validation not enough.
  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.
  51. My reaction to the feedback?

  52. My ultimate career plan?

  53. Site Reliability Engineering

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

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

    HELP is crucial.
  56. ➔DO NOT dismiss a beginner. ➔Encourage. ➔DO NOT tell them

    how poor their code is - they that know already.
  57. My thoughts on mentorship...

  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.
  59. Getting involved in Africa…

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

    ➔Sponsor in some way.
  61. ➔Join our mailing list and help organise Pan-African events in

    Africa. python-africa@python.org https://africa.python.org/en/
  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.”
  63. Thanks! Contact: @amakarudze anna@djangogirls.org