DISCLAIMER

The following is the path I took to reach my goal of becoming a software engineer. Please realize this is what worked for me, it may not be what works for you. That being said it’s a good place to start! Just don’t treat it like the gospel.

1. FIND A FRIEND

In this case I was lucky in that my brother was willing and able to help me along my path.  Learning to program in a vacuum can be especially daunting and discouraging.  Find a friend or family member that can sponsor you and help you on your journey.  Programmers tend to be very passionate about their trade, and they will most likely be overjoyed that you are looking to join their trade.  If friends and family aren’t an option, find an online forum devoted to helping new programmers and start posting your questions.  Also, a very powerful and well connected friend is your dear uncle Google.

2. CREATE A LINUX ENVIRONMENT

You will find that Python development is just easier in a linux environment or on the unix based Mac OS (if you have a mac you can skip the rest of this section and just use it).  I run a dual boot setup on my machine with Windows 7 for day to day personal stuff and gaming, and Ubuntu (a Linux based operating system) for my Python development.  Alternately you can setup a virtual linux machine inside of Windows and put Ubuntu on it if you don’t like the idea of re-installing your operating system.  Be warned though that depending on your RAM a VM can run rather sluggishly.  The following are links to resources for both options.

3. GET COMFORTABLE WITH THE CONSOLE

Getting used to navigating the console is a crucial skill for programmers.  A tutorial for learning basic linux console commands can be found here.

4. CODECADEMY/edX

I learned the basics of both Python Development and HTML/CSS code from an incredible and absurdly free web based resource called Codecademy.  Create a login, select the Python track, and get rolling.  When you are done with that, bang out the HTML/CSS track.  Devoting a couple hours an evening I was able to finish both tracks in roughly two months.  You will be absolutely stunned by how much you can learn and how quickly you will learn it.

Recently I’ve expanded my knowledge of Python further by taking an MIT course offered online by edX.  MITx: 6.00.1x Introduction to Computer Science and Programming has been a real boon for my growth as a developer and I’ve learned so much.  Like Codecademy you can audit this course for free.

You will also want to start a Pastebin account.  If you get stuck on a problem in Codecademy or any other course and want to share your code, Pastebin is the way to do it, as it will format the code and make it easier for your friend to read.

UPDATE: Codecademy has a new feature that lets you take on project challenges to test your skills after completing one of their knowledge tracks.

UPDATE: There are more options out there today then there were when I wrote this blog. FAR more. Codecademy and edX are still great resources, but don’t be afraid to try something different.  I’ve also heard that programming bootcamps, while expensive, have a very high success rate as far as placing graduates of their programs.

5. LEARN BASIC SQL

In this day and age you will find nearly impossible to work as a professional developer without encountering relational databases based on SQL at some point.  While you don’t need to be a SQL expert to become a Python developer, have a knowledge of the basics can be extremely helpful, particularly in Web development.  I used “Sams Teach Yourself SQL in 10 Minutes” by Ben Forta.  It is 22 10 minute lessons that guide you through creating and working with databases using a variety of different DBMS’s (database management systems).  I chose MySql for my DBMS while working through the book, as it is free and widely adopted.

I highly recommend using the free 45 day access to the digital version of Teach Yourself SQL that comes with the paper version or buying the digital version of the book.  If you have a multi-screen setup (HIGHLY recommended if you want to pursue development seriously) or even have the browser with the book and the MySql workbench open on the same screen it will save you a lot of neck and eye strain.  And if you do three lessons from the book a day you can get it done in roughly a week, so 45 days is plenty of time.  When you are done doing the exercise, hang on to the book as it has excellent appendices and makes a great SQL reference guide.

6. INSTALL YOUR PYTHON IDE OF CHOICE

An IDE (Integrated Development Environment) is one of the most critical tools in a developers arsenal.  This is where you will write most of your code.  IDE’s make code easier to read, eliminate redundancy and human error with code auto-complete, and have a host of other benefits that I am only just beginning to appreciate.  My preferred IDE, PyCharm, is NOT free.  It has a 30 day trial period and after that a single user license is $99.  I felt this was an investment worth making as PyCharm is an exceptional IDE and I am and will be using it a lot, but if you are looking for free options they are certainly out there.  I’ve included links to both PyCharm and a free IDE called Komodo-Edit.

UPDATE: PyCharm now has a free version as well.

7. START YOUR FIRST PROJECT

This was a very difficult step for me to take.  After completing the steps above, a heavy feeling of “So now what?” will probably set in.  It is time to begin your own project.  You should know enough about programming now to think of a simple problem you could solve with code.  Maybe you’d like to expand on one of the ideas you came across in Codecademy, like a more robust, web based version of the vacation calculator?  For me, I chose to develop a web app using Django, a python based web framework.

Whatever you choose to do, there is no time like the present!  The longer you hesitate the harder it will be to start, and if you don’t use your new found knowledge you risk losing it.  Below is a link to a Django tutorial that walks you through making a simple polling app for a website (my first project) and a link to a thread with tons of other ideas for first Python projects.

8. ASK YOUR FRIENDS ABOUT CONTRACT WORK

Another way to rack up experience (experience that you can add to your work history!) is by looking for simple contract work from your developer friends.  Don’t be shy, there is nothing wrong with asking and you may be surprised how useful you can be.  There are many menial debugging tasks and basic feature adds that you are definitely qualified to help with at this point.  Make sure you keep good records and have a way to invoice people in a professional manner.  I’ve found FreshBooks works well for me and it is free. You’ll find a link to it here.

 

 9. START APPLYING FOR POSITIONS

You’ve learned to program, you have a project and maybe some contract work under your belt.  Time to apply for a job!  List the languages you know in you summary and list your experience teaching yourself and doing freelance work/working on your project as a self employed position.  Tell people you are a self starter that taught himself to program and has X amount of experience under your belt, X being the amount of time you’ve spent programming and developing your skills.  Don’t be intimidated by job postings asking for 1-2 years of experience and an IT degree.  They put that there as a guideline, but the bottom line is that they want someone that is capable of writing code and understanding computational thinking.  I can’t tell you how many times I’ve spoken with people in the industry that have told me “actually doing stuff is a lot more important than having a degree.”  And if you have followed along with this guide and put your time in, then you sir have been “doing stuff”.  Good luck!