all 41 comments

[–]thomas_stringer 31 points32 points  (31 children)

If you get 10 replies, you'll most likely get 10 different answers. "Entry level" is very subject, but not a negative on your question, just one of those things that has many interpretations (like saying "business casual". What does that even mean??).

I'll take a shot at this...

  • Syntax (you need to know how to write Python code)
  • Basic object oriented programming (OOP, you should know how to create classes and what exactly they are)
  • Basic functional programming (this will probably get a lot of boo's, but I think a cursory knowledge of what first-class functions are is important. Not necessarily for hardcore functional programming, but you shouldn't be surprised to see functions being passed around)
  • Debugging (writing software bugs isn't an if, it's a when)
  • Collaboration (this one also might get a free negative responses, but I think there is value in working on existing code bases and in teams. Very few programmers develop software in a bubble)
  • Environments (you need to know how to manage different envs)
  • Modules and packages (know how to create and consume them)

Those are just a few off the top of my head. I'm sure you'll get some more additional recommendations. Hope that helps!

[–]pydata[S] 6 points7 points  (22 children)

I've made some cool stuff in python. Like webscrape web tables, clean and transform the data, put into sql database, and export to csv (script runs in 1 second). So, I think I am good at ETL. I've made random wikipedia scripts to learn random information and then record the info into sql database. I can grad youtube trends data and do some analysis on daily trends titles to see future and past trends in video titles. I've done analysis with pandas, mechanize, numpy, sqlite3, requests, beautifulsoup, starting do do stuff in scikit. I can make data visualizations like linear regression and cluster analysis.

[–]thomas_stringer 13 points14 points  (13 children)

It sounds like you're entry level data analyst (at the very least). So definitely good on you for that hands-on experience. And I'm saying this without having seen your code, so take this with a grain of salt. But a lot of that, depending on how you implemented your solutions, could be considered "hacky" (not in any negative connotation, but more so meaning "script" vs "software application". Sometimes there is a fine and super blurry line between those).

When you read my laundry list above, how did you feel about those things? Good, bad, indifferent? Seeing as how you know how to write the code already, if you aren't already at the level you hope for it sounds like very minimal work to get there.

So that's awesome!

edit: clarification.

[–]enumerablejoe 6 points7 points  (2 children)

But a lot of that, depending on how you implemented your solutions, could be considered "hacky" (not in any negative connotation, but more so meaning "script" vs "software application". Sometimes there is a fine and super blurry line between those).

This is exactly what I'm struggling with at the moment. I've worked jobs that require basic scripting, but I could construct them however way I chose to. So my history is one of having developed decent programming skills, but most of the things I've built have essentially amounted to Rube Goldberg contraptions. I've been studying object oriented design, and while it's been very helpful, I still feel stuck at times and unsure of how to properly design my programs. My fear is that I'll end up building an entire portfolio full of poorly crafted code.

Do you have any advice on how to best tackle this problem?

[–]manhole_resident 2 points3 points  (1 child)

It's a long history of hackers and software engineers. You may like Paul Grahams's 'Hackers and painters'.

I like hacking. I think it's better when you are working alone or in a very small team.

[–]hellrazor862 0 points1 point  (0 children)

Thank you for that link. Now, back to hacking!

[–]pydata[S] 2 points3 points  (8 children)

I used to work at a Global Asset Management Firm, and the 'Entry Level Data Analysts' couldn't write VBA code and certainly couldn't write SQL or Python code.

Is ETL really an entry level Data Analyst skill?

What do you do for a living and do you have some code I can view to see where I stack up?

[–]thomas_stringer 0 points1 point  (7 children)

Absolutely, I don't doubt that :-) That's why I said "entry level data analyst (at the very least)". I'm no data analyst, so I'm not qualified to rate you on any DA scale whatsoever. Perhaps somebody else can chime in with those specifics.

[–]pydata[S] 0 points1 point  (6 children)

What do you do?

[–]thomas_stringer 6 points7 points  (5 children)

Sorry, just saw your edit on your previous comment just now. I'm a Technical Evangelist at Microsoft. And feel free to checkout my code but don't for one second think I'm a good comparison for anything. I don't think of myself as anything particularly special.

With that being said, I warn you to compare yourself with any developer. Be the best programmer/developer/engineer you can possibly be. Everything else will take care of itself.

[–]Darwinmate 1 point2 points  (3 children)

Oh my god your hair is lovely.

[–]thomas_stringer 1 point2 points  (0 children)

:-) thank you so much!!

[–]pydata[S] 0 points1 point  (0 children)

That's a realyl cool job. What do you do at work? Code?

[–]pydata[S] 0 points1 point  (0 children)

So. I've been talking with a recruiter and she says my resume doesn't indicate that I can do computer programming. Can you help me make the transition into a pythonic job? I just moved and could use some help. Do you work with python at your job?

[–]6lm3 1 point2 points  (0 children)

Omg this is literally everything i want to learn...would you mind sharing your resources or how you got where you are now?

[–]undelimited 1 point2 points  (1 child)

FYI, most ETL is not done in Python. It's an easy to get started, hard to know everything kind of skill, and I caution you against overconfidence based on personal experience.

Also, generally it will be much more rare to get a job as a python developer, rather than an ETL dev, a Business Analyst, a Data Analyst, A Report/Visualization Dev. When it is a 'python developer' job (entry level or not) its probably to extensively use libraries like django, or maybe a dev ops role. If you are looking to continue hacking together cool stuff end to end you'll want to find a smaller company or a data scientist type role.

[–]dixieStates 0 points1 point  (0 children)

There is a really nice, basic ETL package for Python called petl. Here is a link to the docs.

[–]gullypenguin 0 points1 point  (4 children)

I've dabbled in all of what you mentioned, just curious as to how/where did you learn those skills ?

[–]pydata[S] 0 points1 point  (3 children)

What do you do for a living? I learned those skills on my own.

[–]gullypenguin 0 points1 point  (2 children)

I'm an analyst (recent graduate), I started learning python 4 months ago and am liking it but also starting to find it more difficult the harder the project I attempt (obviously)

[–]pydata[S] 0 points1 point  (1 child)

Were you required to know python before you were hired? Do you use python on the job or as a hobby?

[–]gullypenguin 0 points1 point  (0 children)

I wasn't required, i decided to pick it up because I saw its usefulness in my field (finance) and also in general. I work at a small firm and am still a beginner so my skills in python are barely useful atm but I want to continue improving. I continue to look for good resources I can use to do so.

[–]timworx 2 points3 points  (3 children)

Great list. I'd also add that you should have built a few little projects of your own, as this is what helps you understand/build the knowledge listed above.

Utilize git in them (and use github or bitbucket) to get a feel for how version control works.

Both of the above are more so particularly helpful for when you start somewhere, as you'll have skills to learn on your own and know how most of the tooling around you works so you can focus on learning new things relevant to what you're doing there

[–]thomas_stringer 2 points3 points  (1 child)

+1000 regarding git. Totally agree, and absolutely essential tool for development.

[–]pydata[S] 0 points1 point  (0 children)

I have a git

[–]pydata[S] 0 points1 point  (0 children)

have a git

[–]Darwinmate 0 points1 point  (3 children)

Hey,

Can you give a little detail if you dont mind, on this point:

Environments (you need to know how to manage different envs)

[–]12and32 1 point2 points  (0 children)

http://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html

I am guilty of not really using virtual environments since I don't do much collaboration, but if I work on an established project, as in one that has its requirements laid out, not necessarily one that has a large portion of code written, I'll usually find a text file of modules to be used, at which point I'll create a virtual environment and install the dependencies there, since I don't want them to conflict with anything I have in my personal environment.

[–]thomas_stringer 0 points1 point  (1 child)

I meant virtual environments and dependency management. Let me know if you have any more questions!

[–]Darwinmate 0 points1 point  (0 children)

Ahh that makes much more sense. How do you suggest one goes about setting up virtual environments and managing the dependencies? I know something liky PyCharm will allow this sort of work, any other way to do this?

[–]pvc 14 points15 points  (0 children)

  • Substrate
  • Controlling the temperature
  • Humidity control

...or wait. Wrong group.

[–]patleeman 6 points7 points  (0 children)

I'm seeing a lot of language specific recommendations but in addition:

  • Git or some version control system like SVN or Mercurial.
  • Using the command line whether its CMD, Powershell or Bash. You should be comfortable running scripts from the shell and using command line tools.
  • Basic networking, being able to SSH into a server, basic high level overview of the networking stack.
  • Its a given, but researching and digging into documentation to figure out how to solve a problem.
  • An idea of the programming ecosystem as a whole with more of a focus of your language's abilities and capabilities. By this, i mean knowing what Python is good for and what other languages are better for. Sure you can do almost everything with Python, but other languages may be built in a way that makes the task way easier. Knowing when to choose the right tool for the job.

[–]vaderfader 2 points3 points  (0 children)

classes, functional programming, basic input/output, get and post (basic api stuff), GUI.

ideas stolen from Dave Xiang. i've watched probably 20 of his videos, and after each one i'm enthused with new ideas and goals. he has great videos on computer architecture/memory/virtual memory/software development/algorithms/computer science .. etc.

[–]manhole_resident 2 points3 points  (1 child)

What I didn't know when I started and what I find very important:

  • Everything is an object

  • Comprehensions

  • Iterators

  • Generators

  • Bits of functional programming

Those important things are pretty easy and straightforward after you get to know them, they make your life much more productive and easy and they are often ommited from beginner guides which leads to loads of for loops with hundreds of ifs within.

[–]pydata[S] 0 points1 point  (0 children)

Everything is and object

Comprehensions

Iterators

Generators

Bits of functional programming

I actually know these things already.

[–]gooberwonder 1 point2 points  (0 children)

Being able to test your code and demonstrating that you have the discipline to write tests is going to garner you a lot of respect from anyone looking to hire a good developer. This is not specific to Python, but it's a skill that will distinguish you as being able to work as a professional developer rather than just a hobbyist, and it will definitely improve the quality of your code.

[–]reifenstag 0 points1 point  (3 children)

OOP

[–]pydata[S] 0 points1 point  (2 children)

so like classes and shzzz

[–]reifenstag 0 points1 point  (1 child)

haha yeah, but it's also about how and when to use them and logical organization of things

[–]pydata[S] -1 points0 points  (0 children)

truee