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 trialAndrew Walters
8,876 PointsThe relationship between languages and job prospects? - Opinion
Hey everyone! Hope all == well! :P Warning! Large post incoming! As you can tell I'm new to programming and having a great time! So, I want to eventually pursue a career in web development but I'm having trouble in deciding the path I want to take. I understand that it's best to learn multiple languages (which I have every intention of doing), I just don't know how to go about it. I am enrolled in the MIT Python OpenCourseWare that starts in about a week, but I know PHP is more marketable (over here in Seattle) and I've noticed Ruby seems to be more of a prominent language than Python as well. Because of this, I feel it would be more beneficial to drop out of the python OCW, start the PHP track here, move onto Ruby, and end with Python on Treehouse (with Flask and Django of course!). And whichever one I like most, I will pursue a more advanced knowledge in through books, open source projects, and perhaps more website resources. So, in my particular case, it seems Python would be more of a language that compliments my primary language of choice (unless I like it most of course!). Would it be worth it to do the MIT OCW (it would most likely put my Treehouse learning on hold for a while) or do it on my own time on Treehouse since I don't know if I want to invest as much time as the OCW is asking? I'm curious about the relationship between the languages you know and how well/fast they translate to a job - one that pays relatively well so you can make a decent living. Do you think it's better to know many languages decently or a few languages pretty proficiently? Advice/opinions are greatly appreciated!
3 Answers
Tim Knight
28,888 PointsAndrew,
Well there's a lot to consider here in your question. First it's important to understand that the MIT course on Python is focused on Computer Science concepts using Python, not just the Python language. So you're going to be focusing on concepts of Computer Science (which is rarely associated with web development). You're basically going to be covering algorithms and data mining... so if you're new to programming it might feel a little intense. I'd probably hold off if your goal is to learn programming associated with web development (since you mention PHP and Ruby as well).
Here's my general thinking, and this applies to the people I hire as well. What they're looking for is systems thinking. How well can you solve a programmatic problem within a language? The more languages you are exposed to the larger your problem solving vocabulary. That being said the longer you work through one particular language the more complex the problems you'll be able to solve (just like the better a writer you'll be when you practice writing in your spoken language). So what I'd suggest is find one you love... dig into it... build things with it. And when you need a break from it take some time and experiment with another language that looks interesting and start comparing and contrasting.
More than the list of languages a person knows, I'm looking for problem solving ability and code samples that show they know how to solve them programmatically. Bonus if you're applying a languages idioms to improve the readability of your code. So don't feel like you have to "collect all three" in terms of languages—all the languages here on Treehouse are marketable to the job market, but it's experience and practice with programming that will increase your salary.
Andrew Walters
8,876 PointsThank you so much for you responses and clarifications, Tim, you were definitely helpful in putting things into a better perspective and I think I have a better understanding of the industry and career paths within and how to achieve an opportunity to do this for a living! Thank you for the recommendation of reading as well, I'll look into it! It's clear the I definitely still have a lot to learn, but now I'm more excited than ever! One last thing as a side question - I understand Ruby is a little difficult to learn for beginners as they don't know what's going on in their code (or perhaps would be more of "they don't know how to debug their code") due to potentially not knowing about databases and etc, would you hire someone who is good in Ruby/Rails if they didn't have experience in PHP or databases? Last question, I promise! And thank you so much for taking the time to educate me better, I really do appreciate it!
Tim Knight
28,888 PointsThat's really an "it depends" answer. I think Ruby can be difficult for new people who have web experience because most people who start in the web think of websites as "pages", when Rails and other MVC frameworks have a router that routes to a controller/view. But I think Ruby as a whole for programming is a great beginner language (see the book: https://pragprog.com/book/ltp2/learn-to-program). With a programmer who uses Ruby I know they are more likely to understand Object-Oriented Programming, where in PHP that's optional. If they told me they had strong familiarity with Laravel (the PHP framework) it would even things out for me because now I know they're using MVC, routing, and OOP... but again... those details are going to depend on the company. Either way, if you're programming for the web you really need to know databases, so don't skip that. Even if you're using an ORM like Rails I'd want them to know some SQL even if they have to hack their way through it.
Andrew Walters
8,876 PointsSounds good! From my perspective (as I'm learning through Treehouse and the community exclusively) I feel as though it would be beneficial to take the PHP track before the Ruby track as they teach about Laravel (albeit the basics), SQL and Databases right there in the track, whereas the Ruby track would require some digging in order to get this information. I feel as though I will thoroughly enjoy the Rails framework for Ruby, but I also don't want to rack my brain with it if it were to be my first language -- that could potentially leave a bad taste! Anyways, thank you so much for all the information and insight, you've given me a better understanding of everything and even more excitement than before! Thanks and happy coding!
Tim Knight
28,888 PointsGood luck with everything Andrew!
Andrew Walters
8,876 PointsAndrew Walters
8,876 PointsHi Tim,
Firstly, thanks for your response, it's very informative, and I appreciate that! I mostly appreciate you clarifying me on the Comp Sci Python course, I think I will disenroll in that not because I'm not up to the challenge, but because that isn't quite my target outcome in terms of my knowledge right now. Secondly, your background adds a lot of credibility and thereby a stronger point, and it's nice talking to someone who actually does some hiring, so thanks for responding, you've helped more than you know!
I think I understand what you are saying with being proficient in multiple languages as opposed to one, just pick up the proficiencies at different times i.e. when I'm burned out on one language. Would starting out the way I've outlined (try out multiple languages and begin my proficiency with the one I love most) be a good idea? Or are you more saying that it's best to just get good/great at the first one you pick and then once burned out/need a break, move on (of course never abandoning completely) from that?
From a hiring manager (or whatever your title may be) POV, are you more inclined to hire the person who knows PHP well and has great problem solving skills in it, or to hire someone who knows Ruby/PHP and has okay problem-solving skills (assuming either language is fine for the job)? And out of curiosity, what exactly is a problem so to speak that would need to be solved? I hear these skills are what hiring managers look for, but all I can think of in terms of problems with code is debugging perhaps? Like I said, I'm not far along in my studies by any means and quite possibly could answer my own question(s) pretty easily down the road, I would just like to better understand the industry. I know I'm very far ahead of myself and daydreaming quite a bit, but it's been my experience, and my lesson in code so far, that daydreaming of these impossible things and figuring out how to make them a reality seems to be what a good programmer does, so I'm just going with the flow :) Thanks in advance!
Tim Knight
28,888 PointsTim Knight
28,888 PointsIn terms of how you’d pick your language I would say that it’s going to really depend on how you feel about it. I would say start my doing an intro course in one… be it PHP, Ruby, Javascript, or Python and just see how it feels. Go through some of the exercises and build something. I’d do that for both PHP and Ruby and then just see which one is more comfortable. Once you have one you like, focus on it for awhile… get into the community, listen to Podcasts, post of forums, and embrace it… you’ll learn faster that way.
As for solving problems I’m speaking more toward communicating concepts into program code. For example, if I asked a junior programmer, “I want you to output a star rating for a product. The maximum rating is 5 and the rating you’ll get for the particular product will come from the model as product.rating as an integer. Output 5 stars, but only highlight the stars equal to the rating.” There are various ways to do this. But a more junior person will likely do a subtraction calculation and then two loops. One loop that creates the filled in stars and then another loop that calculates 5 - product.rating and creates the empty stars. A more advanced person will understand that regardless of the rating this is a loop 5 times and it’s only based on the value of product.rating being less than the current index of the loop that would change the look of the star on the screen to empty. There are other tests too that can be used to test basic programmatic awareness, FizzBuzz was a popular one years ago that you might look up.
There are actually a lot of books out there that speak to programming interviews, “Cracking the Coding Interview” by Gayle McDowell seems to be one of the more popular selections. To give you some perspective on my position in the hiring process, I’m not a hiring manager… most agencies don’t really have those. I’m a team lead. So you could call that a Product Manager, Web Producer, or whatever… basically I’m responsible for making sure my team and me get the project done in a way that will be successful for the client. I’m both a part of the team in that I have work that I product as well as the team’s organizer. When it comes to your resume I like to see that you have exposure to multiple languages, but at a point a red flag is raised. For example, let’s say I’m looking at two resumes and these are how each of them list them programming skills:
The other says:
I’m probably going to want to talk to the first person first. Why? Because I imagine that the experience of the second person, while broad, is probably pretty shallow because while they’ve being exposed to a lot of things I’m not sure where there interest lays nor where they believe themselves to be mostly competent. Now we could combine those two and say something like:
That’s a bit more transparent… I can see their interest and I know they’re not trying to lie to me that they’re an expert in everything. I’m want to talk with that person too.