Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Overview ➔ Share my coding journey. ➔ Answer “Why Python?” ➔ Share my thoughts on mentorship through a project.

Slide 4

Slide 4 text

My background

Slide 5

Slide 5 text

Childhood in the rural areas 1998

Slide 6

Slide 6 text

Zimuto High School, Masvingo 1999

Slide 7

Slide 7 text

Then I met a tech enthusiast...

Slide 8

Slide 8 text

Making the decision for a career in tech…

Slide 9

Slide 9 text

And my coding journey begins…

Slide 10

Slide 10 text

1. Computer Studies, Computing High School Student

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

What role do I apply for?

Slide 17

Slide 17 text

Met another old friend...

Slide 18

Slide 18 text

Why Python?

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Working with Python

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Major challenges ➔ We don’t use Google Maps that much. ➔ Had never heard of Google Fusion Tables in my life!

Slide 26

Slide 26 text

Initial attempt ➔ AngularJS ➔ Django Rest Framework ➔ Django 1.9

Slide 27

Slide 27 text

Initial feedback ➔ No testing. ➔ No validation. ➔ No documentation.

Slide 28

Slide 28 text

Time for some personal development...

Slide 29

Slide 29 text

Developing coding skills ➔ Learnt Angular online. ➔ Did a workshop tutorial on Django + Angular + DRF.

Slide 30

Slide 30 text

Second attempt ➔ Google Map rendering issues with ngMap. ➔ POST requests were a huge struggle.

Slide 31

Slide 31 text

Third attempt ➔ Angular, DRF and Django. ➔ Javascript to load map. ➔ Still struggled with Angular POST requests.

Slide 32

Slide 32 text

Asking for help ➔ Twitter - for Angular POST. ➔ A friend responded and pointed me to a tutorial on CodeCraft.

Slide 33

Slide 33 text

Asking for help ➔ Harry Percival- Testing & other stuff @ PyCon Namibia. ➔ Harry recommended books for coding interviews.

Slide 34

Slide 34 text

Asking for help Marc Tamyln - Django dev and Validation

Slide 35

Slide 35 text

Asking for help Daniele Procida- documentation @ DjangoCon EU

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

Project redesign ➔ Django ➔ Javascript ➔ AJAX ➔ Django Rest Framework Amazon

Slide 40

Slide 40 text

Getting a mentor ➔ Asked Tom Christie for help with AJAX via Twitter since DRF also uses AJAX.

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

Testing ➔ Functional tests. ➔ Unit tests. O’Reilly Media

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

Documentation Tutorial How-to Guides Explanation Reference

Slide 47

Slide 47 text

Documentation ➔ Small project so followed the format but in a README.md. ➔ Best documentation I have ever done for a project!

Slide 48

Slide 48 text

More feedback ➔ Good documentation and tests, though incomplete tests. ➔ Reverse geocoding to be done in backend.

Slide 49

Slide 49 text

More feedback ➔ Resetting with a GET request wrong. ➔ Recommended reading resources. ➔ Validation not enough.

Slide 50

Slide 50 text

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.

Slide 51

Slide 51 text

My reaction to the feedback?

Slide 52

Slide 52 text

My ultimate career plan?

Slide 53

Slide 53 text

Site Reliability Engineering

Slide 54

Slide 54 text

Key lessons to draw from my journey...

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

My thoughts on mentorship...

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

Getting involved in Africa…

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

“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.”

Slide 63

Slide 63 text

Thanks! Contact: @amakarudze [email protected]