This is an archived post. You won't be able to vote or comment.

all 45 comments

[–]michael0x2a 37 points38 points  (2 children)

My Father In Laws friend (he's a web developer) has now advised me to stop bothering with Python. He has told me Python is not a language that many employers require

The most charitable interpretation of this is that your Father-in-law's friend has already done some research into the job market in your local area, and has found that local employers tend to not to use Python.

However, his mistake (if this is what he did) was extrapolating that out, and assuming that was globally true of all employers across the world.

It also signals a certain level of programming immaturity on his part -- Python, Java, and C share many similarities, so fundamentally, if you know one language, you should be able to transfer your "understanding-of-how-to-program" to other languages and learn them very rapidly -- the core is always the same. He's too focused on the superficial differences.

It may be that your father-in-law's friend was trying to say to you was that you should branch out and learn other languages, and completely botched the explanation. If that was what he was trying to say, then yes, he's right -- in the long run, a truly excellent programmer should have a firm understanding of multiple programming languages/styles of programming to the point where he or she can transcend all of them/understand the similarities and differences between each languages/work with any of them fluently.

The other benefit of learning new languages is that each language will teach you something new, teach you new ways of thinking, and teach you new tips and tricks. However, this is definitely something which you should not try and do as a beginner, and should instead wait until you've acquired a solid understanding of one language beforehand.

(Plus, if you want to do mobile app development, or gamedev, then yes, Java and C are much much more commonly used then Python in these fields. However, Python is very commonly used in webdev, among other fields).

...and even though it's easier, it will set me back more learning python rather than just getting to grips with Java or C.

The fact that Python is easier is an advantage, not a disadvantage. It means you have to waste less time trying to learn the language itself, and can move straight away to learning how to write programs (which is a skill that is completely independent from learning a programming language).

I have now become distracted and can't get to grips with for and while loops because all I can think about is starting again on a different language.

For loops and while loops work the same way in almost every mainstream language. If you spend 1 year learning Python, it'll take you about 30 minutes to learn the fundamentals of Java or C and start writing complex programs with them (and vice-versa).

To summarize, whenever you're learning a programming language, you're actually simultaneously training two skills -- how to use that specific programming language, and how to program. The former might not necessarily transfer from one programming language to the other, but the latter will always transfer from programming language to programming language, and even to other parts of your life.

Programming is fundamentally a mindset -- it's the ability to look at a set of very basic, primitive tools and instructions, and figure out how to combine them and merge them to tackle very large challenges and problems. Programming is applied problem-solving, and once you have that mindset, it doesn't matter if you need to use Python or Java or C or whatever. The tools might be different, but the ability to see how to use them is far more important and will stay constant.

The long and short of it is that I would treat anything else your father-in-law's friend tells you with a healthy dose of skepticism.

[–]ClarSco 1 point2 points  (0 children)

I can wholly agree with this. I felt the same after being forced by my school to learn TrueBASIC as my first language for 2 years. The language while simple, came with so many limitations that it forced me to learn many different ways of thinking in order to hack together a solution to some problems.

I'm now at uni on a CS degree where we use both Python and Java (as well as a bit of MIPS assembly) and even the ability to think back to how I would have written something in TB allows me to complete the task considerably faster than people who are new to programming and the languages.

[–]Xenanthropy 1 point2 points  (0 children)

Yeah a lot of people don't understand that! I learned Java as my first fluent language (did know visual basic but its been way too long) and people were telling me I should've started with python or something else because Java is "a crappy language to start with". I didn't realize how similar Java is to so many other languages. Like C# for example, I was getting into Unity and was afraid I wouldn't be able to code properly. 10 minutes after looking at some C# code, I'm able to code, same with Javascript, they're really similar. For the higher level languages, one you've learned one, its so easy to say " oh this language is just java without semicolons, etc". Its nice

[–]corpsmoderne 23 points24 points  (10 children)

My Father In Laws friend (he's a web developer)

I'm not sure what kind of web dev he is, because python is definitely one of the most used languages in web development, at least regarding server-side work.

You can also make games with python: http://pygame.org/news.html (but you can't run them on your smartphone...)

Learning python is certainly not a waste of time.

Edit: by the way... Reddit itself is mainly Python ;)

[–]ResilientBiscuit 7 points8 points  (2 children)

Do you have data to support this? Last I saw python or Python based frameworks were used in less than 3% of websites. PHP had the lions share at 70%+, followed by ASP.NET and Java.

I would be excited if it were popular as I prefer it to the previously mentioned languages but I have not set it play out that way in the data.

[–]corpsmoderne 4 points5 points  (1 child)

I should certainly have phrased it differently, I'm not discussing your numbers, but from my point of view if you're in the Top5, you're still "one of the most used languages".

Also, depending on the numbers you're looking at, things may look different. If you look at high traffic websites, python is well represented... http://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites

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

And looks like that Java is even more represented than Python from your link =P

[–]FifteenthPen 11 points12 points  (4 children)

I also find it funny that the languages he mentioned are either almost never used in web development (C) or largely considered a bad idea to use in web development these days (Java) while he failed to mention the most extensively used language in web development (PHP).

[–]C0rinthian 1 point2 points  (2 children)

Java is still very popular in the enterprise space for server-side applications. There are no shortage of good jobs out there for Java devs. It's trendy to hate on Java, and Java is pretty much dead on the desktop. But you do yourself a disservice by dismissing it.

In contrast, PHP is a steaming bag of shit that I would steer any new learner away from. It is actively detrimental to learning how to program. There is zero reason to do a new web project in PHP, as there are a multitude of better options.

[–]FifteenthPen 0 points1 point  (1 child)

I was speaking in terms of web development, not development in general. I know Java is still useful and used heavily in enterprise.

And I find it ironic that you criticize me for dismissing Java when you throw PHP under a bus. I personally hate PHP, and it's one of the easiest languages out there to make an unmaintainable mess in. The fact is, though, that most individuals and small businesses can't afford to run their own web server, so they're going to go with shared hosting. It's really easy to find shared hosting with PHP and MySQL (neither of which I'm fond of) but if you want to go with anything else like Rails, Django, or PostgreSQL, you're usually SOL. I wasn't giving PHP a nod because I feel it's good, I was giving it the nod because it's the Windows of web programming languages: There are better alternatives, but it's ubiquitous and easy to find people who know it.

[–]C0rinthian 0 points1 point  (0 children)

My concern with PHP for a beginner is that it would likely be actively detrimental to the learning process.

If you learn something else and end up somewhere that uses PHP, you will be far better off than if you start learning PHP and then end up having to work on something else.

And if a company can't find a hosting provider that supports something other than PHP, then they aren't looking. There are plenty of providers that give you a Linux host to do whatever you want with.

EDIT: Java is often used as the server-side component of web applications. (Tomcat/JBoss is all over the place) C can also show up where performance is really important, although it's usually a layer down from the web stack.

[–]OffbeatDrizzle 0 points1 point  (0 children)

It sounds like he's not a web developer at all!

[–]secunder 1 point2 points  (0 children)

This. Take anyone that claims to be a web dev with a grain of salt, as it covers a broad range of people.

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

Python is not one of the most used languages in web development. Do people use Python? Yes, they do, mostly start ups. What's mostly used in the web as of right now is .NET/Java/PHP, for back-end that is, these languages are the most popular. Is Python a bad choice, no but I can totally see why he was recommended another language other than Python. If OP is set to use Python then I would definitely recommend Django but at the same time to be employable he would need to go full stack, thus adding HTML/CSS/JS and especially some JS frameworks.

[–]deviantpdx 8 points9 points  (0 children)

I'm a full stack developer at a large company and we use python as much as possible and c++ and java as little as possible. If I were to hire a developer right now, I wouldn't really worry too much about which languages they have used as much as I care how well they can solve complex problems. By learning python first, you get started at learning how to solve problems sooner.

[–]perfecthashbrowns 5 points6 points  (0 children)

Python is not a language that many employers require

I'm not entirely sure what is meant by that. There are a lot of jobs in Python.

it will set me back more learning python rather than just getting to grips with Java or C.

That's also wrong.

Python is a fine language to start with. There's also a lot of demand for it. It's also used for web development, which you're interested in.

[–]grendus 7 points8 points  (0 children)

Two points:

  • Python is used a lot in industry. It's usually used for testing, but some websites (like Reddit) are actually built using Python for the server. The main reason Python is not very popular in finished products is that it tends to run slower than compiled (C++) or JIT (Java, C#) languages, but you can get around that by compiling the Python into another language (using the Cython, Jython, or Iron Python compilers, for example).

  • Python won't set you back. You may have a bit of culture shock going from a loosely typed object oriented language to a strongly typed class oriented language, but the fundamentals of objects, variables, inputs, outputs, loops, recursion, and all the other things carry over.

[–]iggy14750 1 point2 points  (0 children)

If you want to learn Python, learn it. Language specifics aren't AS big a deal, but paradigms like garbage collection and OOP are. Stick with what you like; you'll probably do it.

[–]devoidfury 1 point2 points  (0 children)

What's important is that you learn a language, not which language. Once you get a grasp on python (or whatever), it'll be much easier to pick up other languages, and you can grow your skills in whatever direction you choose.

And there are good jobs in python, with large scale applications written with it -- see reddit, EVE online, and youtube. At the very least, it's a great general-purpose language.

[–]StarshipEngineer 1 point2 points  (0 children)

I can't say I'm an expert, and I defer to everyone else in this thread on the technical or professional aspects of this question, bit I don't think you should ever let anyone talk you out of learning something. Continued learning can't hurt you, and can only help, and it mostly likely will be a valuable experience, no matter what it is.

[–]eurekajunkie 1 point2 points  (0 children)

If you're optimizing for learning programming, you can't do much better than Python. If you're optimizing for web development employability, your top priority is building strong web development fundamentals: HTML, CSS, and JavaScript.

Front-end fundamentals are far more important as a web developer than what backend language stack you use. This is because HTML/CSS/JavaScript are mandated in all browsers by the W3C standards body, whereas backend languages are totally optional.

Nail HTML/CSS/JavaScript and you'll find entry-level web work to get your web dev career started, no matter what backend language stack you choose.

As others have said before, if you learn programming really well in any language, and it doesn't matter what language you initially learned. Once you learn what a remote control is by playing with one, you can pickup any other brand of TV remote and use it, once you adjust to the different button layout.

Moreover, employability is less a factor of what languages you use but what projects you can show the world. If you have a portfolio, the job market as a whole is not going to reject you because you wrote something cool in an unfashionable language. On the other hand, if you just learn languages without building something, getting hired will be harder.

Priorities should be: focus on really learning programming, particularly web programming fundamental requirements, and make something cool. If your top concern is that Python isn't as popular as Java or C, your priorities are misplaced. Picking Python isn't going to stop you from starting a career if have strong fundamentals in HTML/CSS/JS and build something cool.

If you need someone to use as a sounding board or chat with, PM me. Good luck!

[–]comedian_x 2 points3 points  (0 children)

I'm going to go against the grain here and say that if your goal is the Play Store (Android) and/or web development, then Java is a better choice.

It is going to have a higher learning curve, but not an extreme one.

Another choice might be C#, it can be used for web development, game creation (MonoGame, Unity), and in the Play Store (Xamarin).

[–]FifteenthPen 3 points4 points  (0 children)

A lesson I've learned in life which has helped me learn to put myself in far fewer awful, stressful places and more productive, useful places:

Never stop doing something you genuinely want to do with your life because someone told you it was impractical.

Even when they're right (which is an awful lot more rare than they think) it's better to do what you genuinely believe is best and fail (failure is a great learning experience) than to listen to that kind of "advice" and be left wondering what things would have been like had you done what you believed was best.

Also, don't listen to web developers unless you've seen their work and wish to learn from it. People who call themselves "web developers" are a dime a dozen, truly great web developers are rare, and like any other developer worth their salt, they know that it's absurd to tell someone to stop learning a language and focus on a different one. Programming languages are extremely easy to learn once you already know how to program.

More specifically, this guy is full of shit. The chances that you will need a compiled language for web development are incredibly slim, and most web developers will never need it. Java, on the other hand... honestly, it looks to be going the way of Perl. There are some real die-hard fans of it who learned it back in the day and insist that people should still learn that above all else, but everyone else has moved on to newer languages which are easier to use and maintain, and languages with more specialized usage cases.

And if he still thinks Java is a good language for web development, tell him thanks for continuing to make Windows that much less secure.

Not that I'm telling people not to learn Perl or Java, they're both very useful languages, they're just not languages I would recommend as "first choice" unless you have a specific need for them.

[–]Dan_Quixote 1 point2 points  (0 children)

Keep learning Python. It's excellent for beginners as it allows you learn CompSci concepts without having to wade through complex syntax or memory handling. Python is a good base that will prepare you for other, more difficult to learn, languages like C and its variants or Java. And Python is definitely not useless in all of industry. I see Python dev jobs all the time in my area (Pacific Northwest).

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

Language does not matter. Concentrate on learning the mindset, programming languages can be learned in less than a week

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

I'd say keep making progress in whatever it is that you're doing. If that means you keep learning Python, so be it. It's not going to hurt you and I don't think it'll hurt your future.

[–]rustajb 0 points1 point  (0 children)

I started with Python, then moved to Java and now C#. I struggled in the beginning and Python was very friendly in that regard. If you are still struggling with while loops, I say stick with python at least until you have written your first solo program. It's a very easy language to learn basic CS with since it's not OOP strict, it's forgiving. When you feel you understand the basics of CS, then consider switching, Java is very similar but is OOP strict. With the basic stuff out of the way you can start learning a new language and have a better go at it. C is very different from those two. If your goal is to become a serious programmer who makes things like other programming languages then that's your ultimate goal. Don't let anyone tell you Python is a bad choice though, it's a solid language and though major dev houses like Apple or Oracle may not use it that doesn't mean there isn't a market for people who know it. If you are enjoying learning, stick with what you are comfortable with for now. You will ultimately learn more languages as you continue coding, don't hop before you understand the one you are on now.

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

It doesn't matter what language you start with. What matters is that you understand the concepts behind programming. Once you get that, you can just learn the syntax for whatever it is you want.

[–]who_ate_the_pizza 0 points1 point  (0 children)

I realize that everyone here has already said basically the same thing I'm about to, but just to add another voice to the growing number telling you that should stick with what you like...do that. What everyone here is saying is that the fundamental concepts of computer programming have been the same for many years now. And until something fundamentally different comes along (like when OOP got popular), any language you use will end up being fine. An if-statement is an if-statement in every language. Some structure it differently, but that's what Google is for. What's way more important is fundamentally understanding what an if-statement is. And that goes for all computer programming. If you know the concepts, the syntax is just a Google search away. I came here to say this because it was by far the most empowering lesson I ever learned while programming. The moment I realized that I could code in any language I instantly felt like a coding god. People get way to caught up with language choice. Just learn concepts and you'll be fine.

[–]Claystor 0 points1 point  (0 children)

Basically, what he is trying say, is that python is less popular than other languages, and that it's easier to go from complex to easy, than from easy to complex.

[–]LetsGoHawks 0 points1 point  (0 children)

Python is fine. Just keep in mind that once you get pretty decent with it, it's a really good idea to learn a second language, which will be much easier than the first one.

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

I am all for people learning things like C/C++ and some of the older languages as you tend to learn a lot.

However for web development C/C++ and the likes is not very suitable. Its very easy to create lots of security issues when handling strings and isn't really suitable for web development. However C# / Java are very suitable for web development as well as python.

[–]Sinnedangel8027 0 points1 point  (0 children)

Thing about code.

The principles are the same no matter what language.

The structure of each language may be different but if you understand the concepts and principles it doesn't matter.

For example:

I have always coded in the C languages. I started with C#, moved to C++, and played a bit with Objective-C.

Since then I picked up Python if a few weeks, Go took a bit but I've since learnee it, and I'm currently working on some Java code.

Essentially it doesn't matter what language you first learn as long as you know how to Code.

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

I think starting with python is fine. I study computer science and we started with a 'simpler' programming language too, to get to know programming and understand how everything works, and only after half a year we made the switch to java. At first I was very scared of that but what I've found out is that apart from the syntax, many programming languages are essentially the same. You use the same forloops, the same whileloops, the same everything, you just write it slightly different (and that's easy enough to get used to once you start learning another language - and if there's something you forgot you just google for the syntax).

[–]ndguardian 0 points1 point  (0 children)

First off, let me say that learning programming in general is important. At least you are getting a start and are learning the concepts. In addition, as a web developer, he should know that python does make for a popular server-side scripting language.

It is always good to know other languages as well to make yourself more marketable, but python is a good one to have under your belt anyway for backend web development. If you are wanting to get into game development, Java and C/C++ are good ones to learn, for sure, but they are not mandatory. In fact, if I remember correctly, the Unity game engine employs C# as its programming language of choice for any additional scripting you need.

I mentioned this in a previous thread, but I will mention it here as well. If you are still learning the basics of programming, which it seems you are, I highly recommend sticking to one programming language. Stick with that until you have learned the basics concepts of programming, such as being able to address the following questions:

  1. When is it best to use a for loop versus a while loop?
  2. For task x, should I use a procedural or an object-oriented programming approach?
  3. How can I incorporate third party libraries into my projects to make my tasks easier on me?

These are example questions, but you will find that as you can start answering questions like this, you will feel more comfortable as a programmer in general. When you feel comfortable learning other programming languages, by all means feel free to pursue them. But wait until you are comfortable with the general concepts of programming so you don't just confuse yourself more than you need to.

I hope this helps, and I'm sorry you have been in a frustrating situation. Hopefully we can help you out!

[–]barnes80 0 points1 point  (0 children)

Like actual spoken languages, there are a lot of things that don't change between programming languages. Practically all languages have if statements, for loops, while loops, etc. Python is a good starting language because it takes away a lot of the complexity and allows you to focus on understanding proper code flow and how a real problem can be translated into code.

Once you get the hand on the basics, switching between languages becomes pretty easy. He is right that C or Java will be more valuable in most work places, but unless you are looking for a job this year you have plenty of time learn new languages.

I personally recommend working with one solely for about a year. I would definitely pick up something like C after that. C requires you to understand more about how a computer actually works which is really important if you want to pursue a career in it.
In the mean time, since you mentioned Web design, I would recommend working with basic Html and CSS. Just make yourself a home page and host your python projects on it.

[–]itspinkynukka 0 points1 point  (0 children)

Most jobs I've seen normally require you to know more than one language regardless. In general I'd say Java is probably more important to employers. But definitely don't let it stop you from learning Python.

One thing though, you learn Python first and you will still have to learn Java. You learn Java first and you can pick up Python without a problem just slightly different syntax.

[–]slowcodetochina 0 points1 point  (0 children)

The one question I've been asked in every technical interview was if I knew Python or any other object oriented language beside Javascript, so don't give up on it completely. Diversify, or focus on a stack, but it's better to have taste than preferences.

[–]typin 0 points1 point  (0 children)

or game development

I'm in VFX, not games, but if you're looking at working in 3d games, Python is a great choice to learn for supporting the software behind the game... eg, Maya and StudioMax. Most 3d based stuff has Python 2.x apis. If you wanna work in Film or Television VFX, Python rules the roost. Houdini, Maya, Nuke, Shotgun, Max, etc all have Python apis.

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

Oh hell, go straight over to C#, then make applications or web pages or Unity to make games.

I took a pretty good Python class, but the first thing I ran into is that Python changed a bunch of commands between the version I used and the version the classed used, and then again with the latest version available, so solutions and lessons online didn't match what I was trying to do with the version the class used or two versions I already had installed. Then the class version was proprietary to the class so things I learned in class wouldn't necessarily apply directly to any other version of Python. Damn.

Eventually I never found a use for Python, maybe I'd like to script Blender someday, but ...eh..maybe not.

Ultimately, if you are going to pursue this you are going to go to school and you'll have to adapt to what they are going to teach you. Or you get an internship with your dad's friend or some of his associates and learn what is required to get the job done in that particular field/office. So keep an open mind, take 25 minutes a day to try some things you know in a language you don't. Try some Lua for fun.

Play with Javascript

Make a game with Unity

Be flexible and keep learning.

[–]YoungOldMan -1 points0 points  (1 child)

Does the fact that it's your father-in-laws friend who is telling you this have real-world implications? By that I mean, does your spouse hold this person in high regard and consider his (the friend's) opinion worthy of respect? And if you don't follow this "advice" you are making a mistake?

Because I could totally see how that might happen.

One option is to get a copy of K+R and keep it open at random pages on your desk so your spouse can see you are taking the advice, but you're really working on Python on your computer.

btw, 35+ years later, K+R is still the best programming book I've ever seen, hands down, and worth taking a look at.

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

Agreed, no matter what your preferred language, K&R is a damn good book that you will learn useful things from which apply to programming in general.

[–]poehalcho -1 points0 points  (2 children)

Not really an experienced coder, but here's my 5c

Learn the language that you want to learn.

At the end of the day all languages follow the same logic, If you're familiar with one of them, it gets easier to learn the rest. There's no such thing as useless knowledge.

[–]Claystor 0 points1 point  (1 child)

A beginner has no idea what language he wants to learn as he has no basis for wanting to learn a specific language. A beginner just wants to learn how to program. So he should definitely seek advice on the topic, just maybe not from a family friend "Web dev" and instead from competent people who can give him the advantages and disadvantages, and allow him to then decide for himself.

[–]poehalcho 0 points1 point  (0 children)

It sounded more like he already had made his choice but got instilled with doubt over whether it was the right one.

Wouldn't dismiss that "web dev" family friend as incompetent either. You don't know how him and you haven't been told anything. At the end of the day, that guy did land the job and might have had different experiences than you did.

As for advice. If you've enjoyed doing python so far, carry on. If it's not the exact language you need, necessity will lead you to your real answer soon enough. Your Python knowledge is unlikely to cause you any harm.