Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python

Python for freelancing

Hey there! Over the last couple months I've been learning various aspects of web development, mostly the PHP development path here on Treehouse and also on my own through other resources. In the last couple of weeks I've taken a dive into learning Python after hearing a lot of great things about it. I've developed a pretty solid understanding of the basic aspects of Python, and probably even understand it more than I do PHP from the development track here on Treehouse. I was planning on jumping into learning some frameworks like Flask and Django to get my hands dirty in the web development aspects of Python.

Ultimately I want to get into freelance web development, as soon as possible really, and I'm curious what people think about pursuing Python for freelance web development.

Looking on a lot of common freelance websites, it seems that most of the web development (at least on the back-end) jobs are in PHP. Obviously this means there is way more competition as well, but I'm concerned that by continuing my studies in Python, I'll be shooting myself in the foot as far as getting freelance work anytime soon goes.

Would it be best to just put Python on the back burner and continue with PHP, since that pretty much seems to be the standard, at least with bottom level, sub-minimum wage freelance work? Or is it possible to get some good freelance work with Python as a beginner?

8 Answers

I would not say PHP is the standard. PHP is one of the worst programming languages ever invented. PHP is used a lot because it easy to implement and even easier to learn. If you want to make real money get into Java on the backend. The only problem with Java is that most Indian universities teach Java. Therefore Java is hard for freelancing because the Indians will undercut your prices similar to the wages of somebody working in a fast food restaurant. Python is not as common as PHP on the backend. Therefore less people will learn Python. At the same time that means your skills will be more valuable due to less people knowing it. So I say learn Python and then learn PHP because PHP is a weak language and you should be able to learn it in a week at most. Also a lot of networking utilities are being written in Python. You can write a lot of server scripts in Python. It is very valuable to know. Great for log files.

If it means anything a freelance software architect I worked with at an internship advised me to go with Python as a specialty. I would say learn about Linux administration and then take your Python skills and practice automating those procedures with Python. Debian is a good distro for web servers.

I would say it is not a problem of indians but companies doing outsourcing. Remember high paid jobs are being taken away mostly by cheap labor force (indians, philippines, chines, eastern europe). But mostly the corporations (companies being managed by managers with 0 knowledge are doing this...creating apps and sending jobs offshore.

Look at the treehouse. I doubt they outsource. 200k paycheck will not make you happy...only for a short time and you will be constantly worried about your corporate job being sent to elsewhere. And most of the time you will be developing "shitty apps" with shitty user experience. Do what you like and money will be just a reward but a satisfaction will be huge.

Whether it is Java or Python or PHP. If you are good at it you hopefully find a job. In countries like India, Philippines, China, Eastern European countries people can live a good life with 700 dollars a month. So people from those countries tend to work for 700 dollars.

I am a student and doing freelance work with one of Michigan based real estate company I do charge $17 per hour. Because I am more than happy with $17 dollars. So end of the day, people work for money that makes them happy.

John Borden have you had any time to mess around with the Flask framework? If so what is that like compared to Django? Have you been in a situation yet that required you to use your Python knowledge to write any scripts for automating tasks related to your web applications and/or parsing log files for data? If not does Django provide utility packages for handling stuff like that?

John Borden
John Borden
11,674 Points

I admittedly haven't really had time to mess around with Flask yet, though I've heard plenty of good things about it, that it's great for projects where Django would be considered overkill.

I haven't really found myself in a situation where I had to really approach a problem with a Python mindset rather than a Django mindset, Django does a ridiculous amount of stuff for you. I guess the closest example would be the time I wrote a script that executed every day right before midnight (via cron job) and basically did a tally of registered users on this app I was building and showed me basic analytics data. Even then though, I felt like I wasn't so much writing something in Python as much as I was writing something in Django, if that makes sense.

A really fun Python book is called "Deadly Python". It teaches you a lot about Python. Instead of hello world in Chapter one you actually write a complete port scanner utility.

Really cool stuff to hear, and thanks for the reply. I'll have to take a look at that book now (I think it's actually Violent Python?) it sounds really cool from the description. I'm not sure what I think about Java, especially since I have no clue about Java, and honestly didn't even realize you could do backend stuff with it. I'm really liking Python so far, and I don't want to do too much bouncing around with languages unless it's really worth it, but I'm definitely going to look more into that kind of stuff, same with the whole linux administration.

Does the kind of stuff you mentioned translate well into freelancing? Most importantly as a beginner freelancer - or is it more advanced/real-job kind of positions?

For me I really want to get my feet wet, I mean I've come to realize that the best way to learn this stuff, at least for me (and probably learning anything) is to just get some great sources of reliable information, and dive in, hands-on with challenging practical projects. On top of that, if I could start making money from this kind of thing real soon, not even talking big money right now, but to just start gaining some real "industry" experience, a little side cash, building up experience/portfolio and all that good stuff, I'd be over the moon.

Heck I've even been offering friends and others I know to build them free websites just so I can have real projects to work on, because I'm a bit dry on ideas myself at the moment.

If you haven't done so already I would recommend also checking out the free open course ware offering from MIT. It is the Introduction to Computer Science course that their student's take. They video recorded every single lecture and provided all of the handouts, and quizes, and assignments given to students in the same way as if you took the class as a registered student at MIT. It is really a great offerring for free.

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/

If you are a student at a university or community college...chances are they have a subscription to Safari Books. The violent Python book is included in the web site's library.

http://safaribooksonline.com/

A good way to check if the institution has a subscription is to do this search in google..just substitute the text for the site parameter yourschool.edu with own school's home page. ;)

Here's two different ways you can try to do this*:*

  • site:yourschool.edu intext:safari books online
  • inurl:yourschool.edu intext:safari books online

Violent Python is the name you are correct. I don't know man. I spent 2 years with Java as my first language and just recently started looking at other languages. It's easy after you learn one. Also if you go into software development as a one trick pony hell bent on never changing you might as well learn a brand new language instead. That is a horrible idea and you won't have much of a future in software development. You need a toolbox full of tools. You can't just say "I know Python". Good luck man.

Yeah I've actually been looking around for stuff like that, thanks for the link - I'm definitely checking it out. I've been told recently that algorithms and at least some other CS stuff is pretty important/useful, even for someone not getting a CS degree, so I don't want to deprive myself of that.

Much appreciated man, thanks for all the info.

Oh yeah. Do a computer science course like that one linked above and then knock out a data structures and algorithms course but skip MIT as that will be much more in-depth then you need.

Once you have those two under your belt knock out a course on relational databases and you will be set. Data structures are cool because you learn how programs are designed and how the different class files interact with each other to form complete programs.

John Borden
John Borden
11,674 Points

This is going to be a fun one to answer. I personally use Python combined with Django. It was my first framework (because it has a really good comprehensive tutorial in the form of the Django Book, which is free, though a tad dated), and I haven't had any regrets about learning it ever since. It's my sort of default go to when I'm working on a personal project, though I'm slowly migrating towards Go (if you ever get the time, check it out, you won't regret it).

Unfortunately PHP has had years of what amounted to essentially zero competition in the back-end world, and as a consequence it's everywhere, which means that working on a pre-existing website usually entails using PHP.

Wordpress hasn't helped out either, seeing as it powers roughly a quarter of all websites out there (the percentage for bad websites is much higher). Clients with a DIY bent typically favor Wordpress for its ease of use, which means you'll be working with PHP yet again, this time with even more spaghetti code.

So yeah, as far as web dev goes, you'll probably be stuck doing PHP/Wordpress. To get around this, I justify my use of Django (or other framework) by being paid for both development AND maintenance. The idea here is that they're paying me for quality and maintenance, so I strongly recommend to them that I use my tools of choice, or I charge extra to keep their disaster of a Wordpress site from bursting into flames because of some plugin update or security oversight. You have to get creative, or try and focus on web apps that have more functionality than your standard blog / brochureware site.

No it makes since. John Borden is Django a framework written in Python? If so that would make a lot of sense but in it still would "feel" like the language it was implemented in because a lot of the syntax and semantics would be the same for the constructors, methods, classes etc.. . Actually you don't have to answer that lol. I'll just Google. Seems easy enough. Thanks man!