Project Euler had me print every Fibonacci number from one to 4 million, but when the bleep am I going to use that in real life?

–Quote from a frustrated user.

I wish there was a site like Project Euler, but for creating code that wasn’t so practically useless.
— Another quote

It is a question every beginner, even people who have been programming for a year or two, thinks about:

“I’ve gotten to the point where I feel I’ve progressed beyond the “beginner” stage with Python. Want to progress to the intermediate stage, but getting frustrated. How do I progress?”

(from a student of Python)

Python is easy to pick up. You know the syntax, you can solve toy problems on sites like Project Euler. But deep inside you, there is a fear.

Am I good enough?

You worry you aren’t a good enough programmer, that you are a fraud who will be found out. So you go online, search for how to become a better programmer. The advice given is usually along the lines:

Learn another language, new libraries, OOP, functional programming, logic programming, machine learning, data analysis, web frameworks, GUI programming, C, Linux, server management, and a lot of other stuff you haven’t heard of.

And pretty soon you realise it’s impossible to keep up with everything, and you give up, feeling depressed.

But what if I told you you don’t need to learn every possible fad out there to become good?

Becoming a great software engineer(as opposed to just a code monkey) is more than just typing code. It’s a mindset, a way of thinking, a way you can learn.

What if programming felt natural to you? What if code flew naturally from your fingers, and you could tackle the thorniest of problems with ease?

Becoming a great software engineer is about having the confidence that you can solve any problem using code. This confidence doesn’t come from solving toy problems in Project Euler. It comes from having a solid understanding of software engineering principles. Things like:

  • Why you always design your solution and think about testing before writing a single line of code
  • Code is read more times than it is written, and so it needs to be clean and self documenting
  • You can write all the tests you want, but your code will have bugs. Get used to getting your hands dirty debugging. This is even more fun when working with 3rd party code!
  • There is a human using your code. Your user experience and documentation must be designed for them, not some robot from the future.
  • Pick up new skills on the fly, while getting work done
  • Code reviews, bug tracking, project management, project estimation etc

These are the things the cool code schools and hacker schools don’t teach you. But it’s the sort of things the top software companies in the world will expect you to know.

You can learn all this from Amazon. Or from all the hundreds of free tutorials on the web. But all it will do is leave you fumbling in the dark, trying to figure out what is necessary, and what isn’t. And at the end, you may still wonder: Am I still good enough?

Yes you are!

Learning these skills isn’t that hard, just that no one wants to talk about them.

Introducing the Python Apprenticeship Program

Learn the skills you need to work in a top tier software company. Have the confidence to pick up the thorniest software problem, and dive right in with self-assurance.

I built this course after working with many beginners, supervising new graduates in my job, as well as talking to other senior/lead engineers in other companies. They all complained about the same things: Beginners had too much focus on writing code, and not all the stuff that goes around it. In other words, the beginners had too much code monkey in them, and did not understand that software engineering is an art, as much as it is a science.

This program was created to take YOU from a beginner/intermediate programmer to an advanced programmer in the fastest time possible.