There is nothing like a challenge to bring out the best in man. - Sean Connery

You don't have to be great to start, but you have to start to be great. - Zig Ziglar

Today marks exactly 2 years since we set off on our amazing PyBites journey. In this special post we look back and reflect on what we learned.

1. The best way to learn is to teach

We started out as a simple blog writing articles on Python because we wanted to learn more about this fantastic language.

our site after 6 weeks, we've come a long way

When you have to explain a concept you notice many gaps which when overcome solidifies your knowledge greatly. Our experience with PyBites fine tuned our learning which actually made it possible to teach.

It would probably not have happened without having each other (and later our community) as accountability buddies: the continuous bouncing ideas/brainstorming, inspiration, motivation, etc.

2. Getting started is more important than having a roadmap

Don’t expect to put up something perfect on iteration #1, nor to have all the answers from the start. We just started as a simple blog, documenting our learning.

Reflecting on our 2 year journey a lot of our important decisions were made on the fly. Our code challenges literally started by challenging each other to solve a coding problem. The same with our platform: we did not set out to build a coding platform from the start, but after 50 blog code challenges it made sense to take that step.

Our first successful piece came as a surprise too: From beginner to pro: Python books, videos and resources - it turned out many Pythonistas wanted a list of resources and we provided one. It went viral on Reddit and was the first time we were featured on a podcast (Python Bytes episode 14).

3. The #100DaysOfCode Challenge

This has been a pivotal moment in our PyBites and Pythonic career. In line with our habit of challenging ourselves and our community, we first took this challenge ourselves. It was tough but we came out stronger and with a portfolio of little scripts and utilities we could use in our later teaching.

Our endeavor sparked quite some traction on Twitter which led to us being interviewed about the challenge on the Talk Python podcast. This interview received incredibly positive feedback and led to our first Talk Python course (in collaboration with Michael Kennedy): #100DaysOfCode in Python which currently is helping a lot of new Pythonistas learn the language by building practical projects.

learning Python through our 100 days of code course

4. Growing a Slack Community.

From the start we tried to engage a wider community of developers / Python enthusiasts via our blog/Github tailored code challenges. However over time we wanted to have a more interactive way to engage with our community. Building a Slack community has been one of the best things we’ve done so far.

We’re stoked to facilitate a place where passionate Pythonistas can connect and share their learning. It has led to many interesting conversations and collaborations, and has allowed community members to help each other out when stuck on some code.

5. PyBites Platform

Launched one year ago, is the culmination of our learning and teaching of Python! We managed to build it using a cool stack of Django/pytest/Heroku/AWS. It lets you code and verify your solution in the browser. We are reaching 150 exercises and expect to launch ~ 100 more the coming year.

Our initial release one year ago:

launch of our code challenge platform 21st of Dec 2017

We’re most proud of the changes it makes in people’s lives ranging from finding paid gigs, new jobs or becoming better programmers overall. We also added gamification which keeps it fun and engaging:

one year later, a fully fledged Python platform where coding gets rewarded with Ninja badges and certificates

It’s for all levels, and we support external libraries like BeautifulSoup, feedparser, pytz, dateutil, requests, textblob and recently even Pandas! The main focus though is on Python’s versatile standard library.

We also integrated our blog code challenges (reaching 60 soon) and a #100DaysOfCode progress tracker. Other highlights (full feed of features) are our Enterprise tier for coding in teams (including interviewing new job candidates), PyBites ninja belts and certificates and Bite forums to share code / learn from each other.

We’re proud and humbled to see dozens of tweets flying by each day of people that are learning Python through our materials.

6. PyBites meets at Pycon!

After almost 10 years of friendship being forcefully remote (Spain / Australia) we finally got to meet at Pycon 2018 in Cleveland!

We also did a poster session of our project which was a blast! And we had our first PyBites meetup with members of our community.

pycon 2018 Cleveland PyBites poster session

Read Julian’s experience of his first Pycon and guest author Jason’s post on how to crack PyCon.

Of course we plan to attend Pycon 2019 in Cleveland again so we’re looking forward to meeting many passionate Pythonistas and sharing what makes Python awesome in our and your day-to-day.

7. Flask and Django

Julian launched his Flask Udemy Course and became addicted to Flask, ditto for Bob & Django which he could thoroughly get to know building

PyBites Flask Udemy course

8. Some Stats

We published 116 articles, 58 code challenges and 89 news digests. Bob wrote guest articles on, Twilio and RealPython. We are grateful for the 13 guest authors that wrote blog posts on PyBites, as well the almost 400 (!) PRs that were submitted for our challenges.

keeping it fun with PyBites Code Challenges

9. Getting more Pythonic at work

In our jobs we increased our Pythoning too!

Bob transitioned into a cloud developer team at Oracle 4 months after launching PyBites. He did Python for 5 years before, but being part of a professional dev team was an eye opener and he sharpened his saw. He also delivered a company-wide webinar about how to write more Pythonic code.

Julian has started running workshops within his org at AWS teaching basic Python to his team through simple, usable projects. While we can’t mention details here, he’s also working on some cool, Python-based tools internally.

10. Managing time/productivity.

Both of us have full-time day jobs and families! Yes, we’re not going to lie, at times juggling all 3 has been very hard/challenging.

Much of it comes down to priorities though: we mostly ditched TV and Netflix (but that's also because we are avid readers / Audible consumers). And yes we did lose sleep when delivering the platform and 100 Days course as these were monsters to create! They were however, worth every minute spent.

We learned how to focus and go “deep”. We learned about the Pomodoro technique. But overall it comes down to sprint and rest. Accept that you go in small increments, it all compounds to something great if you remain consistent and set your course correctly. It’s hard work for sure and requires a hell of a lot of tenacity, but above all requires a balance with rest and family time.

We could talk for days about this so we’re planning a community piece on productivity in the new year.

>>> from dateutil.relativedelta import relativedelta
>>> relativedelta(, date(2016, 12, 19)).years

We are stoked and energized, proud and humbled to reach such a wide audience!

We learned so much, we coded a ton, met a lot of great people along the way and most importantly never forgot to keep it fun.

Inspired by this great momentum we can only aim to - as Jobs said - stay hungry and foolish. So for 2019 we just want to continue this awesome journey of becoming more proficient at Python, becoming better developers and teaching more Pythonistas in innovative ways. It’s our passion and we are grateful for having so many passionate people supporting our mission.

I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times. - Bruce Lee

There is always opportunity for improvement, the Python space is never ending so we look forward to growing with you, our wonderful PyBites Community, and serving you over the next year!

we are all about learning by doing, learning by writing your own code

Keep Calm and Code in Python!

-- Bob & Julian from PyBites