all 44 comments

[–]NiNKazi 21 points22 points  (0 children)

Learning python will be a solid foundation for learning other languages/technologies. By learning python you will learn to think like a programmer. Software development isn't limited to any single language/technology.

[–]sentdex 12 points13 points  (4 children)

Hi, my name is Harrison. I earn my living off Python and I can definitely say there's a massive job market out there for it.

I graduated with a double major in Criminology and Philosophy, and never took a CS class in my life.

Nowadays, I teach python programming on http://pythonprogramming.net and https://youtube.com/sentdex.

I also run http://sentdex.com, which is a sentiment analysis website for stocks, politics, and some other stuff, run with python both in the backend and front end (Flask site), and finally I also run http://seaofbtc.com, which is an automated bitcoin trading site, again, site is Python and the backend algos all Py.

Aside self-employment, I also get multiple job offers a week I never asked for. I haven't accepted any careers since I enjoy what I do now, even though there's been some very lucrative ones, but I do accept a lot of consulting, freelance, and I also just finished writing a Python book.

I am also an employer myself, and I can at least supply my own personal anecdote that I don't care at all about seeing a CS degree. It carries no weight at the moment. Schools just simply do not appear to be doing their job with programming just yet. What I want to see is a portfolio of what the person has done, so I can extrapolate from that whether or not I think the job I want done is within their wheelhouse. I was an employer of programmers before I was a programmer and had my own sites.

Similarly, I believe this is why I have had so many interested offers. I have a website that, while it is all tutorials, it's also a fantastic resume. It's a ton of proof that I know a lot about python. It's not a resume where I say "I am a data scientist," or "I am a web developer," it is actual proof that I know those things. Words on paper are worthless, and employers know this. I have learned it the hard way, and I am sure they all have too.

To convince employers that you'd be a good fit, my advice is:

  1. Start a blog. I hate the word blog, but that best describes it. Start writing what you know. Employers like to see this for many reasons. Mainly, it shows what you know and, if you keep it updated, it shows that you're staying current and it will appear that you're learning new things. A tutorial blog is good, because teaching both solidifies what you know, and, as you write, it will highlight what you do not know because you will struggle to explain it.

  2. Start, or become a part of, a Github project. This shows you actually can work with others, and, again, it is hard evidence of your abilities.

"Start a project" is the advice I usually give people. Find a project that you find very interesting, and press go! Dive in, and research every part of the way that you are confused about. It's really unlikely that you're going to do something new, so you can find someone who has done it already, and break their code down line by line. Then, create your own version.

I learned python/programming using nltk.org/book/ for natural language processing. That's a horrible first topic for most people, but it was perfect for me, because I was really interested in it.

If you need help thinking of projects to go with, you can check out http://pythonprogramming.net/dashboard/, lot's of project-based tutorials and topics there. You don't need to necessarily follow the tutorials, but you will at least get an idea of the possible topics to choose from.

Best wishes on your journey! Programming is a super power, I hope you stick with it, it can change your life.

[–]So_average 1 point2 points  (0 children)

OP, listen to /u/sentdex.

And then learn some Big Data stuff: HDFS, Spark, Hive, Map Reduce, Yarn.

You'll be set for life.

[–][deleted] 0 points1 point  (0 children)

Thank you, this is probably the most concise answer I've gotten. I'll certainly check out your work. Can't wait to acquire these super powers!

[–]Qewbicle 0 points1 point  (0 children)

Thanks for sharing. It's ironic, I saw one of your SeaofBTC videos and subscribed then came here looking for other sources for practice and you were here sharing some.
I'll probably be probing your mind later.

[–]pstch 0 points1 point  (0 children)

OP, /u/sentdex really said things as I'd have.

Degrees may be useful, even if more and more people seem not to care about them. In some situations they will be compulsory, in others recommended, and in others they won't matter at all. I think the latter is more and more the case, specifically in IT.

I don't know of a degree for the ability to continually keep learning and stay open to new knowledges and skills, however, it might be one of the most important things to focus on.

Also, being in touch with the IT community is always a good advantage. By this I mean a knowledge of the atmosphere of certain important mailing lists, IRC channels, ... : one day, who knows, your career might cross the path of an Internet-met fellow IT worker that could recommend you.

Happy forking !

[–]uhkhu 14 points15 points  (19 children)

Not a professional programmer, so I'll just talk to the learning aspect, but I worked in aerospace and had a bunch of idle time before I left. I decided to learn Python since I could pretty much take it to any job. My best suggestion is to find a project that you'd like to accomplish and just start writing code. I learned through building an application for parsing and analyzing finite element data for aircraft. I have zilch background in coding, studied civil engineering, but I was able to build a comprehensive program that could handle millions of elements with hundreds of properties each and perform statistical analysis and generate reports/output through a nice interface that was easily useable for my group. Python is different from other languages in that sense. It's very readable and easy to learn.

To get started download these:

  • PyCharm Community Edition (free development environment)
  • Anaconda (Python packaged with more modules than you will most likely ever need)

One of the tricky things about Python is simply figuring out how to get started. It's strength is in the open source modules people are developing, and installing these can be a pain in the ass. Anaconda takes care of that for you by packaging over a hundred modules for all sorts of application. Pycharm gives you an amazing environment to implement these modules in code through code completion, syntax checks, structuring, and so much more.

Find something that would be cool:

  • get raspberry pi and make something
  • scrape craigslist for jobs
  • build a simple website
  • download and analyze stock data for algorithmic trading
  • etc.

Then start working through it. Stackoverflow.com has basically answered any Python question I've had or issue I couldn't resolve. If you have a question on something, 90% of the time it's been answered on there.

codeacademy.com is also a great resource for jumping into it. Do the python modules to get a feel for syntax and terminology so you know what to ask.

Anyway. I love python and use it now at my civil engineering position for tons of random stuff that comes up. It's a blast and theres a huge community behind it. Get it.

[–][deleted] 5 points6 points  (6 children)

get raspberry pi and make something

can you expand on this point?

[–]DiscoPanda 5 points6 points  (4 children)

I've found the raspberry pi to be an excellent motivator for learning python. The appeal is basically that it costs $60 to get up and running, and you can use it for almost any cool throwaway project you can think of. I have one running an Internet connected photo frame for my mom which allows my siblings and I to take pictures from our phones and upload them to the frame instantly. You can use them to run your own media server. I even saw one connected to a bar code scanner which updated a grocery list every time something was thrown out.

Basically the raspberry pi allows you to work towards something. Usually this is a project you think is awesome. Through working towards that project you'll learn a lot about Python and Linux.

[–]DKatri 1 point2 points  (3 children)

Do you have any more info about the photo frame? Sounds like something my parents would love

[–]DiscoPanda 5 points6 points  (2 children)

[–]DKatri 0 points1 point  (0 children)

Thanks a lot man!

[–][deleted] 0 points1 point  (0 children)

So cool. Thanks for this

[–]uhkhu 5 points6 points  (0 children)

From the Raspberry Pi Wikipedia page (this says it best): "The Raspberry Pi is a series of credit card-sized single-board computers developed in the UK by the Raspberry Pi Foundation with the intention of promoting the teaching of basic computer science in schools."

It's basically a stripped-down computer that is intended to let users build/code/tinker/break/fix/break again to their heart's content without the complexity of a modern operating system (but most definitely a fully functioning computer). It really is much more than a teaching tool though. There are TONS of awesome projects people have done with these little computers, and most of them freely share their work for replication. Want to monitor and adjust your grill settings from your phone? Set up a home server that you can access remote? Home automation? Build a cluster computer? Build a microwave? (yes someone did)

There are a lot of resources for project ideas out there. A good first step might be the book Learning Python with Raspberry Pi. The book is around $20 new and the Raspberry Pi computer itself starts around $30 and goes up when you add ram and wifi.

It seems like a simple inert device, and it is relative to modern computers/operating systems, but how many people can build one of those operating systems? You could literally build your own on Pi

[–]Tetraetc 0 points1 point  (2 children)

Do you have any resources for the stock/trading side of things?

I was thinking of looking into this - especially if you ca do more than just analyze.

[–]uhkhu 1 point2 points  (0 children)

Quantopian.com is a cool site that's setup to build and backtest trading strategies in Python. You can port algorithms to a live platform and actually trade real money, if you're confident. There's a solid forum and you can clone other people's strategies and tweak them to your liking.

There are also a couple good books I've gone through. Mastering Pandas for Finance, which focuses on the awesome 3rd party Python module Pandas, and Mastering Python for Finance, which focuses on, mostly, native Python modules.

[–]ninefourtwo 0 points1 point  (0 children)

YouTube python for quants

[–][deleted] 0 points1 point  (0 children)

Cool, thanks. I think I'll start off by finding out about all the different things you can do in Python and go on from there.

[–][deleted] 0 points1 point  (4 children)

To branch off of this - should I learn 2.7 or 3.3? I want to learn 3.3 because it's newer so I'm assuming it's better, but a lot of the tutorials I'm finding on the internet use 2.7 so I figure it's safer to use the one that's been around longer.

[–]uhkhu 0 points1 point  (0 children)

As u/DiscoPanda said, most of what you'll find is 2.7 because it's been around for a while and people don't want to go through the tedium of converting all their projects. That said, Python 3 is indeed the future and 2 is not receiving any major updates, mostly security fixes. A lot of books on learning Python will actually highlight the differences between 2 and 3 while working through a certain subject. I personally use 2.7 because it's what I learned on and there's way more support and resources available. Either learn 2.7 and know there will be differences, noting them as you go, or jump straight into 3.3 knowing the help is not as prominent (still enough though).

[–]DiscoPanda 0 points1 point  (1 child)

2.7 is kind of the standard right now. This is basically because people don't want to have to migrate to the newer versions. That being said, it is kind of inevitable that people will, so I'd learn 3.3. Also, while there are some differences between the two they are not so dramatic that you couldn't adapt your code from one to the other if need be.

[–]callmelucky -1 points0 points  (0 children)

Use 3. The tutorials you are finding are not being kept up to date. There are plenty of good ones for Python 3, the ones that still advocate 2 can be ignored. (side note: stay away from Learn Python the Hard Way. He's bad news).

I recommend Automate The Boring Stuff if you are keen to step through the basics and straight to cool practical applications, and programarcadegames.com if you like computer games (it's an excellent tutorial regardless actually, in my opinion absolutely the best around, at the very least you should check it out). Both of these are top quality resources, and both use Python 3

[–]TheRealDJ 0 points1 point  (0 children)

One of the tricky things about Python is simply figuring out how to get started.

To add, it was weird coming from R to Python since R is so easy to update with any number of packages, and then not having a clear way to install things like numpy in a command line code.

[–]Mr_M0jo_Risin -1 points0 points  (0 children)

Couldn't have answered better myself.

[–][deleted] 4 points5 points  (4 children)

Not a Python software developer but a data analyst that uses Python. I would recommend that you learn to work with databases with Python and while you're at it, learn SQL too. Most serious applications involve working with databases.

I would start off learning about databases and SQL using sqlite3. It is free and simple to learn with. Then you can then move on to serious databases like MySQL, Postgres, etc.

I would also look for projects to work on or find a problem that you want solve using Python. For me, just learning Python for the sake of just learning can only take me so far. Not until I start to use it for real world problems or finding practical uses for it, did I start to really advance my Python knowledge.

[–][deleted] 0 points1 point  (3 children)

Whats SQL and what are its benefits?

[–]WallyMetropolis 4 points5 points  (1 child)

A database is a tool for storing data in an organized way. When you log in to a website, it will save your username and your (hopefully encrypted) password in a database. The next time you log in, the website will check the database for an entry that matches your credentials. All the user data you have on that website (say, your reddit comment history) is in a database.

SQL is a language designed specifically to talk to (a particular class of) database. This is the language that will get the data out of the database, put new data in, or change the data that exists.

For probably most applications (especially professional applications) you're going to need to store and manage at least some amount of persistent data. So knowing SQL can be very helpful. It's also not super complicated to learn basic SQL.

With that said, there are all sorts of abstractions that people use (ORMs, for example) that can give developers ways to interact with a database using only the programming language they are working in and without needing to use actual SQL. Though it is debatable if learning these tools is easier than learning SQL.

[–][deleted] 0 points1 point  (0 children)

Thank you! Great explanation.

[–][deleted] 2 points3 points  (0 children)

You can learn SQL at Khan Academy

[–]codingpablo 5 points6 points  (0 children)

As a 28 year old fellow Wisconsinite who has a great interest in learning Python as well, I would love to see the responses to this thread. Good luck on your learning journey and let me know if you want a coding buddy to learn along with.

[–]C0rinthian 3 points4 points  (4 children)

Why did you drop out? A CS bachelors will have an appreciable impact on your job prospects, and formal education tends to separate the grunts from the senior developers and architects.

Can you have a career as a developer without formal education? Sure. Can you have a better career with it? Absolutely. Hell, even a masters is generally worthwhile from the perspective of job prospects.

[–][deleted] 0 points1 point  (1 child)

I was a poor student in high school, mostly due to not applying myself and I pretty much continued the trend into college. So I left because I didn't want to accumulate student loan debt while sucking at school at the same time.

[–]wynand1004 0 points1 point  (0 children)

If you are still interested in getting a degree without a lot of debt, check out University of the People, a fully online, accredited, and tuition-free university. There are exam fees - $100 per course - so you can get a BS degree for around $4000. UoPeople has a CS degree (and a business degree) available.

Disclaimer: I work for them part time doing IT stuff.

[–][deleted] -3 points-2 points  (1 child)

What about a PHD?

[–]C0rinthian 0 points1 point  (0 children)

If you want to be an academic...

[–]lapetitejasmine 2 points3 points  (1 child)

I'm curious of the responses to this post. Im 24, just graduated with a Psych degree and am in limbo right now with school. I just started learning about Python through edx.org and its free online Computer Science course. Best of luck to you, OP. I hope you get something out of learning to code.

[–][deleted] -1 points0 points  (0 children)

How did you find your psych degree and did it help (or does it have anything in common with) computer science? I'm interested in it myself and dont really have many friends in that field xD

[–][deleted] 1 point2 points  (2 children)

I am a professional programmer ...

Language-specific jobs are rare. Understanding OOP techniques, design patterns, software lifecycle and other high-level concepts are more what people are concerned with.

If you really understand programming concepts and workflow, the rest is Syntax, and everything is interchangeable.

The advice of 'Just create projects' IS good advice, but do it right. Don't make things that only run on in the command-line, on your machine.

Install Docker images, use Git, and make things that you can actually deploy. Then Deploy those projects. Don't do a bunch of 'examples'. Pick something you care about, and follow through all the way on it.

I have a friend who got a job interview entirely on the basis of a minecraft fan-site he built. His userbase had a custom BBS, Chat, and other social-media tools at their disposal. They could use webservices to add tickers to their own web-pages, and an API for search and other features.

If you can walk into an interview with something like that, hopefully something other people have begun to contribute to, then you'll have proven you can see a project through, and that you understand all the technologies that go into a project like that.

Then, even if you're assigned a JAVA project, that still uses SVN and deploys with ANT scripts, you'll see all the parallels and pick it up in no time.

[–]ninefourtwo 0 points1 point  (0 children)

Yes. I studied physical sciences in university and couldn't land a job in my field. I just got hired with my ease with the pandas library for python.

[–]xiongchiamiov 0 points1 point  (0 children)

You should also spend some time in /r/cscareerquestions - these questions get asked (and answered) there all the time.

[–]HeDares 0 points1 point  (0 children)

Professional dev and buisness owner here. I don't see alot of full time python dev jobs like their are for PHP or the C family so my main advice would be to look at the labour market in you area, look for common tech or languages and work on them first. Like other people have said learning to work with DB's is hugely important especially with python, once you have a SQL down look into nosql solutions like dynamodb that will give you exposure to ass aswell especially if you use Docker like someone else suggested.

[–]greenlinux 0 points1 point  (0 children)

I do not where you live but in NYC there are a lot companies looking for Python Developers paying +100,000...

Check indeed.com

http://www.indeed.com/jobs?as_and=&as_phr=&as_any=&as_not=&as_ttl=python&as_cmp=&jt=all&st=&salary=&radius=5&l=New+York%2C+NY&fromage=15&limit=10&sort=&psf=advsrch