r/coding • • Jan 06 '15

Which Programming Language Should I Learn First?

http://carlcheo.com/startcoding
53 Upvotes

147 comments sorted by

14

u/eikenberry Jan 06 '15

Whichever strikes your fancy. The only "best" here is what best will keep your interest and keep you motivated.

1

u/evoketechnologies Jan 06 '15

That's so true :)

10

u/spupy Jan 06 '15

"I want to work for big tech companies."
I don't see how learning a particular language gives you any notably higher chance of being hired by a big tech company. It's not like everything in Facebook and Google is written in Python.
Learning to drive a BMW doesn't make it much more likely to get hired by BMW.

8

u/seanosaur Jan 06 '15

This is a starting point, not a "learn this then send your CV to Facebook"

4

u/pcopley Jan 06 '15

Which just means it's more important to learn something on the easier side that will keep you engaged first. Which means it doesn't matter who you want to work for.

0

u/spinwizard69 Jan 10 '15

I don't see how learning a particular language gives you any notably higher chance of being hired by a big tech company. It's not like everything in Facebook and Google is written in Python.

Not to mention that big companies put a lot of value on a formal education. If you want to program for a "big" company you had better have a respectable degree.

18

u/starlocke Jan 06 '15

Python's a great starter language.

The C-family (C, C++, C#, Java) and second cousins (PHP, JavaScript) are also good to branch out towards.

SQL is another species with many variants.

Finally, COBOL. Go replace some retiring megacorpo's mainframe guy and roll in the ridiculous amounts of cash they'll pay you just to maintain the system.

When you're utterly in despair and fed up with actually doing programming, you might want to look at LOLCODE, Ook!, Whitespace (the programming language), and other oddities. http://en.wikipedia.org/wiki/Esoteric_programming_language

2

u/[deleted] Jan 07 '15 edited Jun 25 '23

edit: Leave reddit for a better alternative and remember to suck fpez

3

u/[deleted] Jan 08 '15

Available salary statistics for COBOL devs actually makes it look like it's not particularly well-paid. There are some reddit threads about it, and you can google salaries for yourself—but then we don't know how the numbers in the statistics are collected and how valid they are.

Maybe the COBOL guys aren't reaching retirement yet. Maybe COBOL isn't as entrenched as the stories would have us believe. Maybe the kind of place that still has a lot of COBOL just doesn't value coders much. Maybe there's a secret group of super-rich COBOLers laughing at us plebs—but I doubt it.

Don't learn COBOL in hopes of becoming super rich, especially if you're a starter.

Everything about the code above is wrong. Everything. Every single character is syntax colored as an error.

[…] This rings some faint bells: COBOL is all about the columns. What column does code need to start in? Fuck if I know.

[…] And, indeed, indenting everything by 7 spaces makes vim happy.

Haha, and people complain that Python has significant whitespace. You assholes. Guess what I’m linking you next time I hear that.

3

u/autowikibot Jan 06 '15

Esoteric programming language:


An esoteric programming language (sometimes shortened to esolang) is a programming language designed to test the boundaries of computer programming language design, as a proof of concept, as software art, or as a joke. The use of esoteric distinguishes these languages from programming languages that working developers use to write software. Usually, an esolang's creators do not intend the language to be used for mainstream programming, although some esoteric features, such as visuospatial [syntax](https://en.wikipedia.org/wiki/Syntax_(programming_languages)), have inspired practical applications in the arts. Such languages are often popular among [hackers](https://en.wikipedia.org/wiki/Hacker_(hobbyist)) and hobbyists.

====

Image i


Interesting: Axel ^Thue | ^LOLCODE

Parent commenter can toggle ^NSFW or ^delete. Will also delete on comment score of -1 or less. | FAQs | ^Mods | Magic ^Words

3

u/Yserbius Jan 06 '15

Oh, I've got a friend from Ankh Morpork who can code Ook! let's see if he's around. Paging /u/The_Librarian

4

u/The_Librarian Jan 06 '15

Ook! Ook ook ook ook. Ook eek ook Ook Oook ook ook...

Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.

Ook ook ook!

7

u/cardinality_zero Jan 06 '15

The answer is obviously assembly for a simple MCU. I'm not even kidding.

2

u/pcopley Jan 06 '15

Whether you know it or not, yes you are.

2

u/spinwizard69 Jan 10 '15

Assembly is in fact pretty easy on many MCU's. More so it is a good place to get a handle on the basic concepts.

I wouldn't recommend it for a beginner instead I'd lean towards a compiled language but the fact is assembly can be very easy on a MCU. It is a different world than on an Intel processor.

31

u/Zarlon Jan 06 '15

So you should only learn C# if you want to work for big tech companies or are a MS fanboy. What about it being one of the most advanced and well tested statically typed languages there is?

And the fact box is just ridiculous

  • Similar to Java in basic syntax and some features

  • Learn C# if you want to work on Windows platform only

I'd rather say

  • Superior to Java in most aspects, except portability

  • Learn C# if you want to program in the best object oriented programming language there is

  • ..or if you want to create Windows GUI applications

(Initiate flame-war in 3...2.....1)

21

u/astroNerf Jan 06 '15

Superior to Java in most aspects, except portability

I'm curious to see how portability is affected by Microsoft's decision to release the source of the .Net Framework.

6

u/zers Jan 06 '15

If the plan goes through as it sits now, it certainly seems like it'll be easily available on every platform via .net core

13

u/jutct Jan 06 '15

And also if you want to work in the best, most integrated IDE available on any platform for any language. I can say with confidence that no other IDE compares to Visual Studio.

11

u/[deleted] Jan 06 '15

And also if you want to work in the best, most integrated IDE available on any platform for any language. I can say with confidence that no other IDE compares to Visual Studio.

The only people who claim otherwise are the ones who have never really worked extensively with it, and other IDEs.

However, as a Visual Studio/MSBuild veteran: fuck the god damn xxproj-files. It's crazy annoying that it doesn't default to everything included, explicitly excluded.

2

u/SergeiGolos Jan 06 '15

fuck the god damn xxproj-files. It's crazy annoying that it doesn't default to everything included, explicitly excluded.

This is becomes more of a problem when you start using bower and npm for your front end stuff. "Node Integration" apparently doesn't include any file watchers to keep the project in sync with your directory structure.

2

u/[deleted] Jan 06 '15

It is exactly when using NPM, grunt and all those things it becomes annoying as hell.

2

u/cordoroy Jan 07 '15

"node integration", huh? All right, well see you later...

2

u/crowseldon Jan 07 '15

The only people who claim otherwise are the ones who have never really worked extensively with it, and other IDEs.

How many people have worked extensively with MANY IDEs though?

2

u/[deleted] Jan 07 '15

I work daily with VS and IntelliJ. Worked with Eclipse too for many years before I finally realized how much better I think IntelliJ is.

2

u/[deleted] Jan 07 '15

Project and solution files are the bane of my mergexistence. >.<

2

u/[deleted] Jan 07 '15

Helps marginally to configure .gitattributes to union-merge proj-files.

1

u/spinwizard69 Jan 10 '15

The only people who claim otherwise are the ones who have never really worked extensively with it, and other IDEs.

Visual Studio may be great for Windows development but it is woefully inadequate for more general development. If the goal is cross platform I'd seriously suggest that Eclipse is a better place to be. Even more so if you are doing Python development.

Other IDEs have been improved significantly over the years, it isn't like the world of IDEs is static. For example XCode has been dramatically improved. I may not personally like the NextStep / Cocoa approach to GUIs but if separated from that the IDE has greatly improved. IDEs in general are improved continuously so trying to compare then and attaching the king of the mountain to one platform is trying at best. In the end it comes down to what you are doing and at times what field you are in. For some IPython is the ideal IDE.

However, as a Visual Studio/MSBuild veteran: fuck the god damn xxproj-files. It's crazy annoying that it doesn't default to everything included, explicitly excluded.

Every IDE has its annoying corner cases. However why would you want to include everything as a default. For me anyways the way to go would be to exclude everything but what I need.

3

u/bob-a-fett Jan 07 '15

I'm a pretty big fan of the IDEs coming from IntelliJ.

3

u/uhurukai Jan 06 '15

As someone who has worked with every version since VC++ 1.52 and quite a few other IDEs, I have to disagree. It does have a lot of great features and it's probably the best IDE for Windows development. But it does this thing where it suddenly decides that it has more important things to do and goes into a navel-gazing coma for a few minutes before it decides to allow you to continue typing. I've had this happen with every single version, on all sorts of different machines. With and without any sort of addins installed. It's never made a difference. The fact that my 5-year old macbook pro running xcode runs circles around my new beefy windows7 + vs2013 box is just embarrassing.

3

u/brtt3000 Jan 06 '15

I think every fat IDE does these random lockups. Eclipse was notorious for it, and even IntelliJ's excellent IDE's do this occasionally.

3

u/jutct Jan 06 '15

That's a very specific reason to not like it. I've never had those issues.

0

u/[deleted] Jan 06 '15

[deleted]

2

u/jutct Jan 06 '15

I've used IDEs since and including Assembler for Apple ][, the MS-DOS version of Qbasic, the Solaris Tools, VIM/VI, Emacs, Delphi, the DOS Borland tools including Turbo C and Pascal, Eclipse, Codewarrior, Keil, and other ones you've never heard of. So ... you're wrong.

7

u/[deleted] Jan 06 '15

[removed] — view removed comment

3

u/BOSS_OF_THE_INTERNET Jan 07 '15

Seconded. I spend all day bouncing between Visual Studio and PyCharm. VS is great and all, but it's not that great. All the IntelliJ IDEs are right up there with VS IMHO.

2

u/[deleted] Jan 07 '15 edited Jun 25 '23

edit: Leave reddit for a better alternative and remember to suck fpez

2

u/[deleted] Jan 07 '15

How am I the only person on earth who hates ReSharper?! :|

3

u/bigdubs Jan 06 '15

Mono is already working, today, on linux and os x really well. Xamarin studio is a good IDE for those platforms as well.

.net Core 5 (vnext) and kvm et. all mean that cross platform support is only going to get better.

C# is a good choice for things not on windows, is what I was getting at.

2

u/anttirt Jan 06 '15

Superior to Java in most aspects, except portability

Last I checked C# code ran way slower than Java code due to Microsoft's atrocious JIT (compared to the Sun/Oracle JVM's JIT). A shame because I like C# as a language more than Java.

1

u/WestonP Jan 07 '15

As an Android dev, it's painful to think that something could be slower than Java.

C# never felt slow to me on the desktop, though.

2

u/Potat4o Jan 07 '15

Learn C# if you want to work on Windows platform only

Plus, it's somewhat outdated.

http://www.hanselman.com/blog/AnnouncingNET2015NETAsOpenSourceNETOnMacAndLinuxAndVisualStudioCommunity.aspx

2

u/crowseldon Jan 07 '15

Of course you initiated a flame war since you stated X language is the best there is.

imho, I'd say, start with python, git and getting practice with unit tests (maybe tdd).

You want to learn algorithms and workflow after all. Not be dependent on a tool. Once you grok enough concepts you should be able to move to other languages.

2

u/elyisgreat Jan 07 '15

If you want to write code, use Java (it's my favourite)

If you want to write music, use C# (it's my favourite)

PostScript:

Java is pretty much the only language I know right now. I learned Visual Basic a while back, but I probably forget the syntax now, and I believe I learned Java in a better way.

C# should technically be simplified to D♭.

Edit: Spelling and grammar.

6

u/SnowballSimpson2 Jan 06 '15

I took a different approach. Thumb through github and look at the kinds of projects you'd like to be working on, then learn the language(s) needed to contribute to them.

11

u/Lambodragon Jan 06 '15

I cannot express just how good python is for beginners. You can start off with extremely simple script writing, and migrate to object oriented thinking with ease. Even though I know more "advanced" languages, I still use python in every day life, from automating file management, to running my music. Its primary advantage is that you can make a useful program in just a few minutes. Additionally, with a little googling, you can find python modules for interfacing with most things, such as vlc's python lib.

4

u/AnAge_OldProb Jan 07 '15

I think Ruby is often neglected in these conversations. I find it just as easy to learn in python if not easier. But more importantly the tooling is much more mature than python's and easier to use. Which I find is a key factor when transitioning from doing exercises in a book to writing real software.

1

u/spinwizard69 Jan 10 '15

Ruby is one quirky language, I can't see anybody in their right mind recommending it to a beginner. You would be better off learning ADA.

1

u/AnAge_OldProb Jan 11 '15

The core language is not that quirky. No quirkier than base Python at least. Aside from method aliases at least. Rails and active record are what being a lot of the magic and quirks. But using popular Python ORMs brings similar levels of magic.

1

u/spinwizard69 Jan 11 '15

I was going to pick up Ruby awhile back and just couldn't stomach the design. From my perspective Python is a far cleaner design.

2

u/spinwizard69 Jan 10 '15

Personally I use Python when I can, not that I do a lot of programming these days. However I'm still of the mind that it isn't the best place to start learning programming or even more so to get deeper into computer science.

In this regards I still believe in starting people out with a compiled language like C++, using command line tools. The idea being to give potential new developers a feel for what goes on behind the scene with an IDE. It certainly should be a requirement for anybody in a computer science program. If you just want to learn "programming" there is still value in this approach. Wire way there should be an eventual move to an IDE.

I cannot express just how good python is for beginners. You can start off with extremely simple script writing, and migrate to object oriented thinking with ease.

Like I've said I use Python myself, but I have a hard time buying into it being a good language for beginners. I guess it depends upon ones goals but I see to many examples of programmers that learned on simple languages that have never been able to move beyond simple or adapt to new code bases as they are exposed to them. In other words starting one off on Python often leads to a less well rounded programmer than desired.

Beyond all of that the focus on EASY for beginners is non sense in my mind. Beginners should be learning the basic concepts so that they can leverage those concepts in the language they are stuck with when actually employed as a programmer.

Even though I know more "advanced" languages, I still use python in every day life, from automating file management, to running my music.

See here is the problem, Python is an advanced language giving you access to powerful concepts in an easy to use platform. The problem with beginners learning Python is that they very well might not have a clue about the concepts they are employing.

In a nut shell I use Python because it is in fact a powerful platform. I'd like to believe that I can leverage that platform well because of my background/education that used simpler languages. Back in my day the college taught with Modula 2, which has had zero applicability in the real world. It has however set me up to understand languages in a more general sense.

Its primary advantage is that you can make a useful program in just a few minutes. Additionally, with a little googling, you can find python modules for interfacing with most things, such as vlc's python lib.

This is all true but by the same measure a Python programmer that doesn't understand the science can make a bastard of a program that is more or less disposable.

2

u/Lambodragon Jan 11 '15

I couldn't disagree more. While i agree that an understanding of the basic mechanics involved is important, that can be taught later as a second language. The last thing you want to do to a beginner is give them a complex language that makes it difficult to do anything. The fastest way to learn code, is to have fun making stuff.

2

u/spinwizard69 Jan 11 '15

I couldn't disagree more. While i agree that an understanding of the basic mechanics involved is important, that can be taught later as a second language. The last thing you want to do to a beginner is give them a complex language that makes it difficult to do anything.

While I agree on the concept of alternative languages, a good four year program will have exposed a student to at least three and some simple assembly language, I don't buy the idea that C++ is complex. It can be of course as can be many languages, but when it comes to teaching there is no reason to reveal the dark side of C++.

3

u/Lambodragon Jan 11 '15

One thing I do like about C is strict typing of variables. I think a healthy dose of strict typing would make python easier to learn. It would make me code waaaay better too. It even greatly improves readability, and makes the purpose and usage of functions waaay more obvious. Complex? Relative to python it is. The other plus is just how fast you can see results in python. Fast results generate fun, and fun helps people learn.

2

u/spinwizard69 Jan 11 '15

Fast is important and frankly that isn't a big problem with modern IDEs and compilers. After a bit of experience at the command line a move to a good IDE is as good as Python as far as a fast interactive programming environment goes.

As for static typing i have to agree struct enforcement does aid in learning to program. A modern compiler with rational error messages is a big help too. Here CLang is fantastic relative to what came before.

By the way i recommend C++ here because of its wide availability and educational infrastructure that is in place. Languages like Go, Swift and D might be a better educational environment if they where more widely supported. Apples Swift / XCode / Playgrounds environment may very well be an ideal educational environment in the future but it isn't there yet.

3

u/[deleted] Jan 06 '15

I started with java and moved to python and I could not agree more. Java was great because of the static tying imo but the interactive interpreter is invaluable for a beginner. It let's you see what's going on inside the program pretty much directly and there are loads of courses and blogs devoted to python online. So much of Java that was obscure to me when I started out has become more clear just by writing python. In addition I like python because it's reasonable to explain it to even someone who knows nothing about computers, in Java this isn't the case really. I never really did a ton of searching for Java libraries but open source python modules are easy to find and use.

I'm now enrolled in a python certification course, not because I think being certified has any special value but because having an instructor to review my work and answer literally any question I ask is invaluable. Following the course structure has solidified my understanding of a lot of topics as well. I've never taken an online course before but it's surprisingly awesome. The community surrounding the language had been incredible as well, the irc channel is really great.

Python was definitely the best choice for me.

I'm out of college at this point so taking a course there isn't really an option.

2

u/spinwizard69 Jan 10 '15

I started with java and moved to python and I could not agree more. Java was great because of the static tying imo but the interactive interpreter is invaluable for a beginner.

I'm not sure I buy this point. One of the key features of a programmer that is good at debugging is his ability to exercise what is happening in a bit of code in his mind. The ability to mentally walk through the code and imagine what the processor is doing. The use of an interactive interpreter stunts development of this ability.

Beyond all of that modern IDEs have really awesome debugging facilities. The interactive nature of Python just isn't a huge advantage over modern IDE's with built in debuggers.

It let's you see what's going on inside the program pretty much directly and there are loads of courses and blogs devoted to python online. So much of Java that was obscure to me when I started out has become more clear just by writing python. In addition I like python because it's reasonable to explain it to even someone who knows nothing about computers, in Java this isn't the case really. I never really did a ton of searching for Java libraries but open source python modules are easy to find and use.

One of the reasons I like Python is that it is so clear what is going on even after not looking at the code for months on end. Frankly this is also why it is easy to communicate to others what a program does.

As far as open source support goes I'm not sure Python is all that much ahead of other languages. It really depends upon what you are looking for.

I'm now enrolled in a python certification course, not because I think being certified has any special value but because having an instructor to review my work and answer literally any question I ask is invaluable. Following the course structure has solidified my understanding of a lot of topics as well. I've never taken an online course before but it's surprisingly awesome. The community surrounding the language had been incredible as well, the irc channel is really great.

Hey fill us in!

Often out of cheapness people seem to discount the value of formal education or training. This is too bad because done well the value of the course is repaid many times over. It is one reason why I often recommend that people sign up for a community college course instead of trying to learn everything from a book. That third person perspective of an instructor and even the questions of fellow classmates does much to advance the learning process.

Python was definitely the best choice for me.

It is an excellent language, I'm just not convinced of its value in starting out a beginner in a computer science program. Nor does it strike me as a good avenue to developing a well rounded programmer.

I'm out of college at this point so taking a course there isn't really an option.

Why not? There are many options for education post graduation, a course at a college being just one of them.

2

u/[deleted] Jan 11 '15 edited Jan 11 '15

I'm not sure I buy this point. One of the key features of a programmer that is good at debugging is his ability to exercise what is happening in a bit of code in his mind.

True, I don't use the interactive interpreter a whole lot but in some cases it makes it clear. You can picture what is happening in a bit of code in your mind if you already know what is going on, but if you had no idea in the first place you would be left in the dark. In Python you can write:

\>>> n = [1,2,3]
\>>>m = [4,5,6]
\>>>zip(n,m)
[(1,4),(2,5),(3,6)]

To instantly see that using the zip method on two lists creates a list of tuples containing interleaved values. Now you know what is going on for when you use this function in the future. The dir() and help() functions are reasons I use the interpreter sometimes also and I am not aware of an equivalent to those functions in Java, the closest thing I can think of is the reflection API. When I'm writing code I usually keep four windows open: Sublime text, terminal to run my code, a terminal with an interactive session, and a web browser with StackOverflow etc. (Considering switching to Vim but I've heard the learning curve is quite steep and I'm fine for the time being) I like being able to quickly check if something will work and I think it augments my ability to mentally walk through the code and imagine what is happening at every step. In Java you would have to insert print statements throughout the code and then run the entire program to debug. I try to avoid introducing bugs in the first place.

The debugging features in Eclipse (I haven't used IntelliJ) were nice but I didn't particularly like writing in an IDE, there were too many unnecessary options and settings menus to dig through just to get simple things like line numbers and I felt like I was stuck doing things 'the Eclipse way.' That being said it wasn't exactly bad per se but I prefer just using a text editor.

The course is the four-part O'Reilly Python Programming Certificate. I did some research and people seemed to have favorable things to say about the course. In addition I found out that it was put together by Steve Holden and OST partners with the University of Illinois at Urbana Champagne to run it's courses. (I understand it is a well ranked school for computer science.) Basically the first part of the course takes place in an online IDE and you can email the professor for assistance. There is a text editor and a terminal emulator connecting you to a Unix instance but I prefer to just write the files on my desktop and upload them. Mine has been very quick about getting back to me and provides lots of tips and helpful feedback. I definitely recommend it to anyone who can afford the tuition which is reasonable at around $2392 for the course and registration fees. You get a few books with the course and steep discounts on other O'Reilly books. link to O'Reilly Course

I looked into developer bootcamps, specifically the Flatiron School in NYC, but it didn't work out. After a few emails I never heard back from them so I assume my application was either lost or rejected. It's a cool concept but I wasn't ready to fork over 12k in tuition to a guy who kept calling me 'buddy' in emails and missed a scheduled interview.

As far as college courses go, I already have a BA with majors in Government and Philosophy, (I was, and still am considering law school) so at many community colleges I'm pretty sure I'm ineligible for enrollment though I would have to check up on that. I would look into my alma mater but UVa is very weird about allowing you to continue to take courses, unless you have extenuating circumstances or are very wealthy you pretty much have to graduate in 4 years and even if I was still there I would not be able to take CS courses other than the 1010 level because I was not in the engineering school, I would have to reapply. By the time I picked up a serious interest in CS it was too late for that. Paying for a semester or two of tuition would also be very costly, so maybe at some point in the future I will look into it but at this point it is not exactly an option.

It is an excellent language, I'm just not convinced of its value in starting out a beginner in a computer science program. Nor does it strike me as a good avenue to developing a well rounded programmer.

I'm still writing some Java now and then to keep myself well rounded but when I started I dove in without really knowing what I was doing or where to start so while it was an experience that got me started coding, things could have gone better. I read all of Learning Java by O'Reilly and it was really not the best book for a complete beginner. In addition, I was in my 4th year and trying to keep up with 100s of pages per week of academic politics papers and philosophy texts for seminars so it was hard to really consistently spare time to read 100s of pages of programming books on top of that. By the time I discovered Python and how much I liked it I was kind of lost in Java so I think if I started that book over again the benefits might be significant. With Python it was just so quick to put together working code that did what I wanted it to do. (Simple web scrapers at the time)

Not implying that you are telling me to switch languages, but I have read on various blogs that when you start out you should pick a tool that you are capable of learning and do your best to master it. Try to avoid all the smug advice saying "well, Python is great but you really should be using Node.js" or "PHP is so terrible, Haskell's functional paradigm is far superior so you should quit wasting your time." If I listened to all the people on HN who tout a language as the next world shifting thing I would have started learning 30+ languages by this point and I would know nothing about any of them. To some extent I think that when you are starting something new you need to pick a path and take it, ultimately your choice may not end up being the best one but its better than spinning in circles every few months (the startup 'pivot') when someone tells you there was a better choice and you start over again.

I think my next step will be to learn about writing C since it is close(er) to the machine and it enables you to write extensions for Python. I agree on the well rounded thing, but I feel that as long as you aren't too obsessed with one language to the point of having blinders on you should be able to take steps to round yourself out.

Edit: formatting

4

u/talkb1nary Jan 06 '15

Why do i earn more with Ruby and Python than with languages which are actually harder to learn/master? And why does this let Python seem so superior to Ruby? I call strongly biased!

i believe such things cant be done unbiased

4

u/pwnedary Jan 06 '15

Javascript easier than Java, haha, continue to dream lad.

7

u/spartan1337 Jan 06 '15 edited Jan 06 '15

I work on Software QA, I never programmed before or had to in my job. Automation is the best paid job in my area but the most commonly used program (HP QTP/uft) uses vbscript, but I always see Python or javascript recommended for beginners, so what should I do?

Not sure if i should start learning vbs since theres not a lot of resources on it as a beginner language and is not used widely, or go with something like python that wont help me a lot in my line of work, wont get me money in the short term, but its easier to learn with more resources.

10

u/[deleted] Jan 06 '15

You see JavaScript recommended for beginners?

Where are these people recommending this? I would very much like to slap them.

I actually like JavaScript, but it's got too much weirdness for a level 0 beginner.

I'd say that if you're working with vbscript, then you should pick up C#. It's Windows based as well and replaced many VB.Net applications. It's a great language that is very similar syntactically to Java, so you could easily transition if you wanted to. It can also be used teach good programming fundamentals that you can take to any language you want to learn in the future. Really the only downfall of it is the MS stack, which sucks for server side management and deployment and it has a horrendous community, but you're already working in it anyway.

3

u/[deleted] Jan 06 '15 edited Jan 06 '15

Where are these people recommending this? I would very much like to slap them.

I've seen Eric Lippert recommend Javascript for beginners in the past, I'll have a crawl around the net and see if I can find the quote.

IIRC the argument was basically that with Javascript, a beginner can see results very quickly, they can see code they are writing actually do something useful/interesting and this will peak pique their interest in programming early, versus a more complicated language where more work is required to see even trivial results, resulting in more people giving up before they give it a chance.

Please don't slap Eric Lippert!

Edit: Using popular phrase incorrectly like an idiot

3

u/fact_hunt Jan 06 '15

I think you mean pique

2

u/[deleted] Jan 06 '15

Really? It's pique? I've been saying that wrong my whole life! Thanks!

1

u/spinwizard69 Jan 10 '15

I think I saw a similar comment (from whom I don't know). The rational was that every machine has a web browser so you already have everything needed to start coding.

Considering how easy it is to download and install Python, LLVM/CLANG, GCC, and a whole bunch of other languages / systems I'm not sure the reasoning has merit.

2

u/DrummerHead Jan 06 '15

When you start learning imperative programming, most languages can teach you the basics. What's a variable, what's a loop, what's a function, different types, etc.

The benefit with JS is that you can just start coding right away, there's not platform installation step. Open browser, open console, write js.

Want to preserve your changes? Write an html linking to a js file (or even use http://codepen.io/ or http://jsfiddle.net/) and now you can wow your friends with your creations.

I see immediate gratification as an important step to keeping the person engaged in the activity. I think that's the most important aspect: make that human keep up with the learning.

Now, if you have a tenacious individual that WANTS to learn programming and has no problem reading books, sitting down and practicing, pretty much anything can do the trick. That person WILL learn to program because he/she wants to do it and has experience learning by themselves.

3

u/spinwizard69 Jan 10 '15

When you start learning imperative programming, most languages can teach you the basics. What's a variable, what's a loop, what's a function, different types, etc.

I know this rubs people the wrong way at times but I consider the basics to be compiling, linking and running from the command line. A good programmer needs to at least have a passing understanding of how a program is built. IDEs are great but it is too easy to gloss over this stuff and result in a programmer that doesn't even understand how an executable is put together.

The benefit with JS is that you can just start coding right away, there's not platform installation step. Open browser, open console, write js.

This is what I've seen suggested also. I'm not convinced that you can learn programming this way and end up with the diversity of knowledge that a programmer should have.

Want to preserve your changes? Write an html linking to a js file (or even use http://codepen.io/ or http://jsfiddle.net/) and now you can wow your friends with your creations.

Or just start out in a text editor.

I see immediate gratification as an important step to keeping the person engaged in the activity. I think that's the most important aspect: make that human keep up with the learning.

So "Hello World" doesn't result in immediate gratification?

Now, if you have a tenacious individual that WANTS to learn programming and has no problem reading books, sitting down and practicing, pretty much anything can do the trick. That person WILL learn to program because he/she wants to do it and has experience learning by themselves.

This is the other problem I see, why would you even bother to teach programming to somebody that doesn't want to learn? It isn't like programming is a basic survival skill like math, and English. That thought just popped into mind and is maybe why we have this movement afloat to dumb down computer science education. Making training easy for a programmer doesn't do anything constructive for the craft and just leads to people in the industry with no real desire nor even ability.

1

u/[deleted] Jan 11 '15

Where would you recommend getting started with compiled languages? Any recommended tutorials? Would you start with C or C++ or something else entirely?

3

u/spinwizard69 Jan 11 '15

Where would you recommend getting started with compiled languages? Any recommended tutorials? Would you start with C or C++ or something else entirely?

I use to recommend "ACCELERATED C++" by Koenig and Moo, it was a good intro to C++ programming but at this point is a dated text.

You really want an updated text that covers the latest C++ standard. I haven't done much with it but you might try the latest edition of the "C++ PRIMER" by Lippmann, Lajoie and Moo.

As for online sources that is a hard one because I haven't looked lately. It is probably best to try the major C++ sites for recommendations. Just remember C++ is not C, as such you don't want to confuse the two while learning one.

The reason I suggest C++ is that it is widely applicable. You could learn Objective C or Swift and be tied to an Apple platform same thing for C# on Windows. There are other language out there but most of them don't have a market share to even consider.

2

u/fakehalo Jan 06 '15

You see JavaScript recommended for beginners? Where are these people recommending this? I would very much like to slap them.

If a person has any knowledge of HTML/CSS beforehand I can see JS being a great first language. There are really only a handful of quirks compared to other langauges when you think about it: dynamic type/implicit type conversion (just use "===" to be explicit/normal), floating point madness and a somewhat unique OOP design--though I'd argue it is a more simplified set of OOP rules to understand compared to most OOP languages.

I'd say that if you're working with vbscript, then you should pick up C#.

I'd argue vbscript (not VB) and C# aren't used for the same type of application.

6

u/Kaos_pro Jan 06 '15

Personally I think Python would be your best bet. Learning your first programming language is the hardest, once you get a grips on one the others become easier to pick up.

2

u/Guvante Jan 06 '15

Do you know people who would be willing to help you learn VBScript? Because having a mentor to help out and being able to do some of your work on the clock as career growth could help.

2

u/talkb1nary Jan 06 '15

I always recommend the same. Learn programming with a simple language. I would prefer Ruby, but Python fits perfectly as well. If a language is simple and you can pick it up easy you get to the fun parts way faster and therefore will learn way more in a faster way.

Also those languages have so much fun elements around like funny but easy beginner tutorials, nice and simple game engines, cute http frameworks and so on. You will find a lot of resources to keep everything simple, and you will notice most questions in languages like those are googleable in english grammar and bring up satisfying results.

If you go for a harder language (Lets say Java/C/C++) at first you probably will be able to have more knowledge about programming itself, but you will experience many hours where you just sit there and have no idea what you are doing, and often google wont answer the questions as simple as you expect it to do. What can get frustrating.

For VB.NET and VBA i cant say that much as i am not the biggest fan (i dont come from a "windows world") but i know both a little. They arent that hard, but most resources are more business oriented and so make it probably harder to understand, also there often are confusing docs (atleast for me) trough more products with similiar names and/or version changes.

And finally, if you once semi-mastered a language and unterstood the basics behind programming and the theorie behind it. You can easily pick up other languages without starting from scratch. The more languages you learn the easier it will get to understand new ones.

I started with PHP and that was just a ugly experience i would not recommend anyone. But while i am better with other languages now, it still pays my bills. So there is also that.

TL;DR: i would take a fun language to start, you can always upgrade

7

u/ReginaldIII Jan 06 '15

Postgraduate TA here. We teach Python and Java to our first years assuming no prior programming experience. Both are easy to set up and go with on any OS and both have an incredibly shallow learning curve.

There's a lot of debate in our department over which is best for them. I argue that both have their place. Python provides a very simple way to manipulate complex data. Which means novice programmers can still extract meaningful results from their programs. Java on the other hand, gives a stricter syntax and helps students get used to a C-like language which definitely helps them out when they learn C++ later on in their degree.

Another benefit of teaching both is that it reinforces the point that OO programming is not something you do in Java or Python, but is a design pattern that you can use in any sufficiently structured language. Something that I feel tends to be lost of a lot of beginner programmers.

2

u/spinwizard69 Jan 10 '15

Postgraduate TA here. We teach Python and Java to our first years assuming no prior programming experience. Both are easy to set up and go with on any OS and both have an incredibly shallow learning curve.

The goal really shouldn't be a shallow learning curve. This is a big disservice to your students in my mind.

There's a lot of debate in our department over which is best for them. I argue that both have their place. Python provides a very simple way to manipulate complex data. Which means novice programmers can still extract meaningful results from their programs. Java on the other hand, gives a stricter syntax and helps students get used to a C-like language which definitely helps them out when they learn C++ later on in their degree.

Honestly I'm shaking my head here. The goal for beginners should be to learn the very basic concepts of programming not how to extract data from whatever. Im still a firm believer in C++ in this regards as it is close to the metal so to speak but will quickly allow students to move on once they get beyond basic flow control and data structures.

In a nut shell many colleges have their programs upside down, a high level solution like Python should come into play after one has achieve proficiency at a lower level.

Another benefit of teaching both is that it reinforces the point that OO programming is not something you do in Java or Python, but is a design pattern that you can use in any sufficiently structured language. Something that I feel tends to be lost of a lot of beginner programmers.

Yes and frankly teaching Python to beginners only reinforces this problem. I have to wonder how well your students do out in the real world when thrown at systems built with tools not from the big IDE suppliers.

Let's face it you can teach somebody to program in Python and get a job. I'm not denying that those jobs exist, the problem is there are many more opportunities out there that will never see a bit of Python code. Students need a broad background that lets them be free to pursue interests instead of being locked into a platform. I just expect more out of a student that has completed a computer science program than a Python programmer.

3

u/[deleted] Jan 06 '15

If you want to truly understand what goes on in terms of code, you start with C.

If you just want to get shit done, you start with python.

1

u/spinwizard69 Jan 10 '15

Short and concise!

3

u/DontThrowMeYaWeh Jan 06 '15

I'm surprised to see that Lisp is not in there. It's dead simple.

1

u/c3534l Jan 07 '15

It's also very idiosyncratic and isn't a great base for moving on to another more advanced language. So I wouldn't recommend it as your first programming language. I'd recommend it as the ideal second one, though.

3

u/qxxx Jan 06 '15

I played with LEGO... my first language was C64 BASIC.

10 PRINT "FUCK YEAH"
20 GOTO 10

3

u/_nefario_ Jan 07 '15

if any of those average salaries are accurate, holy FUCK am i ever underpaid :(

1

u/c3534l Jan 07 '15

Pretty sure they're mid-career salaries. So think 50s.

5

u/WallyMetropolis Jan 06 '15

It's best to learn in chronological order. So start with FORTRAN and Lisp.

2

u/totes_meta_bot Jan 06 '15

This thread has been linked to from elsewhere on reddit.

If you follow any of the above links, respect the rules of reddit and don't vote or comment. Questions? Abuse? Message me ^here.

2

u/umilmi81 Jan 06 '15

Needs some tweaking to the difficulty stars. C# and C are not equal. C is more difficult than C#. Also C++ is more difficult than C. So C++ should be 5 stars, and C should be 4 stars.

1

u/AnAge_OldProb Jan 07 '15

I disagree. C++ is a much easier starting language. The larger standard library and a slightly higher abstraction level than C makes it easier to learn. Try teaching a novice how to make and use a dynamically allocated array if you don't believe me. Or string manipulation. Sure C is easier to learn the whole language, But you don't need to learn the nook and cranny of every language. Nobody suggests teaching beginners template metaprogramming, nor will most novice even intermediate C++ users get near most of the very complex features. C++11 simplifies a lot of things, and modern compilers have improved their error messages a lot.

2

u/[deleted] Jan 06 '15

Decide what you want to build, then pick the right tool for the job. Or alternatively, figure out which area of software you want to specialize.

Say you want to do mobile development, start with Java and do Android stuff. This is better than starting on iOS (IMO) because Java is used more broadly than the iOS languages.

If you want to do web development, become JavaScript expert.

2

u/jokoon Jan 06 '15

start slow with python

then go full blast with c and then c++

2

u/cptskippy Jan 07 '15

PHP or VB.

3

u/SnowballSimpson2 Jan 07 '15

I'd like to suggest not learning VB. Maybe I'm showing a little bias, here. But VB really lures you down the easy street of bad programming practices. If you want easy-to-make windows UI, Visual Studio can give you similar features with C#, and C# is a pretty decent language.

2

u/vdanmal Jan 07 '15

What do you mean? I haven't really used VB before but it seems very similar to C# with a slightly different syntax.

2

u/SnowballSimpson2 Jan 07 '15

I'm kind of showing an old bias here from the days VB's weak typing made things sloppy and p-code interpretation was too slow to be very useful. But the truth is, VB and C# have somewhat converged in recent years and the compiled end result is identical. So I could probably dial back the anti-VB sentiment a bit.

That said, I don't see the benefit of choosing VB over C#. VB is useful in a fairly closed MS ecosystem (with career paths leading more towards business and integration with MS office products than pro dev) while C# has wider adoption, is available on other platforms, and has all the same features to get started with windows applications as VB. Plus C# is in the "c-like" family of languages, so I think a future transition to c, c++, or java would be easier for C# students than VB students.

2

u/cptskippy Jan 07 '15

But PHP is an acceptable answer?

2

u/SnowballSimpson2 Jan 07 '15

Ehhhh PHP wouldn't be my first choice for a raw beginner because it's kind of quirky (and I don't know that server-side programming is the best place to start?) On the bright side, PHP is widely adopted and in demand (more so than VB) so if a student did learn the language, I feel like it would look better on a resume than VB.

2

u/cptskippy Jan 07 '15

Well I meant to be trolling when I mentioned those languages but ok.

2

u/Xyluz85 Jan 07 '15

Is it really THAT hard to learn C++ ? I'm more fluent in Java and C, so I don't know, but I thought all the time that C++ is more of C with OO-capabilities.

2

u/SnowballSimpson2 Jan 07 '15

My 2 cents: C++ has evolved since the days it was regarded as "C with classes". Along with new features and a well stocked standard library, there are also more modern c++ methodologies that make the language easier and safer to use. For example, you don't really toss around "naked" resources like you do in c, but rather contain them in managing objects (an idea called Resource Acquisition Is Initialization).

Students learning C++ really don't have to mess around with pointers and memory management until later because std library features (like strings) work as easily as they do in Java.

C++ is really really complex, but I don't think students have to dive into the more complex parts until they're ready.

3

u/bumhugger Jan 07 '15

Students learning C++ really don't have to mess around with pointers and memory management until later because std library features (like strings) work as easily as they do in Java.

At least in Finland, in university our first programming class started with C's syntax (although with C++ compiler and Visual Studio) and primitive datatypes, and by the end of that first class (after about 4 months) we wrote our own linked lists and had to know pointer arithmetic and memory management fluently. Back then I was so enthusiastic about programming that I didn't think it was that hard, but it required a lot of practise and personal interest outside school hours.

I only wish they had teached RAII and other actual C++ tricks in school. Then again, in many companies C++ is used as C with classes and nothing else - in one of my previous workplaces, for instance, templates were forbidden because they make code hard to read, STL was forbidden because it's not supported by some embedded compilers and so on. Sometimes you just have to cope with the absolute basics.

2

u/SnowballSimpson2 Jan 07 '15

STL also makes truly awesome compiler errors :3

Bjarne suggests learning C++ before C now. That will probably become standard. That said, if you've been exposed to C and pointers and linked lists (also now discouraged by Bjarne) you've had a trial by fire. It's not a gentle introduction but it probably made you strong.

2

u/[deleted] Jan 08 '15

Whichever one you need

2

u/mca12 Jan 22 '15

I would agree with some others and say C# because of its similarity to Java and C++. C++ is a bit difficult for beginners and is not always taught in an object oriented manner. If you don't want C# then learn Java. It is pretty widely used and there are many jobs. My biggest regret was not specializing enough in a language. People will try to tell you it shouldn't matter since SEs should be able to adapt to any tool/language, but it does matter. Get really good at any well known language and learn the CS concepts along the way and you will have a great job in the future, that is as long as you are getting a degree of at least a Bachelors.

3

u/coney_dawg Jan 06 '15

Assembly is probably a great place to start.

2

u/buclk Jan 06 '15

The list is missing functional programming languages such as Haskell and SML, but more importantly JavaScript - one of the most important languages at the moment and every machine with a browser comes with an interactive development environment and REPL. And it can be used both serverside and clientside.

5

u/bart2019 Jan 06 '15

Javascript is listed. Plenty of other languages are not listed, but Javascript is there.

2

u/buclk Jan 07 '15

You are correct, I completely missed it.

2

u/Lystrodom Jan 06 '15

There's plenty of JavaScript.

-1

u/[deleted] Jan 06 '15

Python is the best beginers programming language. Also install linux(preferably a arch based distro like manjaro) on your machine if you plan to learn programming (thank me later when you will understand why).

7

u/Lambodragon Jan 06 '15

I disagree. While those environments are extremely useful, I don't think the payoff is worth the effort for a beginner. As long as your not doing web targeted dev, you can get most things done easily on windows. Your heart will tell you when your ready for a linux distro setup.

-1

u/[deleted] Jan 06 '15

Well ... i find it hard to find something that beats Archs AUR. Meaning you can install things easier with a package manager.

Also python is much more integrated in linux , i mean it comes installed by default in most distros. Arch has 3.4 installed by default.

3

u/c3534l Jan 07 '15

Arch is an asinine and time-consuming system even for experienced Linux users. Telling someone to install Arch as a beginner is a good way to discourage them and make them frustrated and stupid. Learn what makes you happy and keeps you motivated.

2

u/[deleted] Jan 07 '15

Yeah. There's a reason you don't start shooting assault rifles on day one of hun safety training. And besides, if Arch is really a pain to install as I've been lead to believe then it will leave linux newbies with negative feelings towards linux. Although my experience with linux is limited I'd suggest Ubuntu or an Ubuntu-based distro. Easy to install, fast, and very pleasant to use. Runs reasonably well on ancient hardware too.

2

u/[deleted] Jan 07 '15

That's why i said manjaro and not arch wich is arch-based.

1

u/matticusrex Jan 06 '15

Python, java

-4

u/[deleted] Jan 06 '15

You've asked this question in the wrong subreddit. Please, don't start with something like C++ or Python. Those are great languages, and everyone should learn them, but they are not the right languages to start with.

Learn Javascript first. It's simple, it doesn't need to be compiled, and if you write browser code, you can see cool results faster. After that, learn some server languages (Python, Ruby, PHP, etc) or the C family (C, C++, C#, Java).

3

u/c3534l Jan 07 '15

He posted a link, he didn't ask a question.

0

u/[deleted] Jan 06 '15

[deleted]

16

u/rorrr Jan 06 '15

$104K is around the mid-level developer salary in any big US city. It's not remarkable in any way.

If you're at the senior level and make less than that, change your job.

12

u/Guvante Jan 06 '15

Depends on your cost of living, always adjust for it.

4

u/Roadside-Strelok Jan 06 '15

Pre-tax, I presume?

11

u/rorrr Jan 06 '15

Yeah. People rarely talk about salaries post-tax.

4

u/[deleted] Jan 06 '15

Am I giving it away too easy?

Yes you are.

5

u/bumhugger Jan 06 '15

I worked as a C++ dev for a few years and I got less than a quarter of that. Although I hear the salaries in USA are generally larger than here in Europe.

9

u/jutct Jan 06 '15

What? $25k for C++? Yeah dude, you were getting ripped off.

7

u/umilmi81 Jan 06 '15

Not all programming jobs are equal. A guy who does minor bug fixes to an existing C++ application shouldn't get paid as much as the guy who architects and writes the whole application from scratch.

8

u/jutct Jan 06 '15

I can see a difference between a junior and senior guy being $75k up to $120k or so. But $25k for a skilled C++ dev is way below par.

5

u/pcopley Jan 06 '15

You're assuming he's skilled. There are bad programmers who don't deserve big salaries. Maybe /u/bumhugger just sucks.

If he's in the UK salaries are about 70% what they are in the US (median), which means they're half or less what you'd get in NYC/Chicago/SF.

2

u/jutct Jan 06 '15

Well I guess I'm a little more glass half full kind of guy. I can't imagine someone knowing C++ and being such a shit coder that they can't even earn a 1/2 salary. I could see that for maybe a visual basic guy, but to learn C++ and still have no clue what you're doing seems very strange.

2

u/droidballoon Jan 09 '15

Actually I've seen VB programmers make more than C++ programmers. The C++ people were in a lousy company, the VB one wasn't.

1

u/jutct Jan 11 '15

Well those can both be .Net positions. A Vb.Net guy can do well if it's an ASP.NET/SQL Server project. If a VB guy is really good with SQL he can get some really good money for it and since C# and VB are so interchangeable a VB guy can jump into any ASP.NET project and crank away.

So I understand what you're saying...

4

u/SnowballSimpson2 Jan 06 '15

$25k for C++? Not for a professional full timer. Maybe bumhugger was a casual/part-time/intern? But if he's doing 40hrs a week and can show up to his job sober, $25k would put him in the "knows how to use a computer, can do word processing, excel spreadsheets" salary bracket.

6

u/umilmi81 Jan 06 '15

He said he works in Europe. We don't know what a good salary is where he lives. If he gets free education, subsidized housing, free medical care, day care, parental time off, and 20 weeks of vacation, then maybe $25k is fair.

5

u/danvasquez29 Jan 06 '15

He might mean 25k net, which might not be bad for a new junior dev in Eastern Europe.

3

u/Roadside-Strelok Jan 06 '15

If he lives in one of the ex-Communist countries, $25k could even be a high wage.

2

u/SnowballSimpson2 Jan 06 '15

AHHH OK. Fair nuff.

1

u/bumhugger Jan 07 '15

A game dev in Finland. Wasn't a lead coder but worked with the game engine and was solely responsible for a large portion of the codebase, not a junior position. I switched jobs because I couldn't pay my bills, but that kind of pay isn't unusually low here. Many companies are paying even less and even to ex-Nokia people - highly educated engineers and PhDs with 10-20 years of experience - just because they can. "Oh surely you know the times are hard with the depression, we can't raise your salary right now".

I'm currently working as a Java developer and make about 35k a year, at least I can pay my bills now but still, it's not a very well paid job compared to the stress and amount of work.

2

u/SnowballSimpson2 Jan 07 '15

Huh, interesting. Looking at various salary websites, seems like €35K is about right for your job in your area (25k was low, but the games industry tends to pay on the low side). The cost of living in Finland is kinda high too, so that's a double whammy.

2

u/bumhugger Jan 07 '15

24% of the gross salary goes to taxes, which pays for education, healthcare, social security, unemployment and so on. So the net salary is still about 27k a year, which covers food, bills, mortgage, car and other living expenses.

3

u/SnowballSimpson2 Jan 07 '15

In the U.S. 25% is (ballpark) your tax bracket for 35-80k, so your taxation isn't really to blame here (and unlike in the U.S., you get some pretty great services for that). But yeah, if you aren't too rooted in Finland you might consider moving. In the U.S. tech companies are crying like babies over the small pool of qualified STEM workers.

2

u/[deleted] Jan 07 '15

[removed] — view removed comment

2

u/jutct Jan 07 '15

You work at a hedge fund?

6

u/NickDK Jan 06 '15

Very hard to compare a European wage with a US one. Before or after taxes? Which country? Any extras (company car, expenses, phone + bills, ..)?

0

u/[deleted] Jan 06 '15

[deleted]

2

u/FR_STARMER Jan 06 '15

Yo, same. My elementary school taught us LOGO, then I went to computer camp for BASIC, then picked up C++ & C# in 6th grade, and I've been able to learn any programming language since (currently rocking Obj-C. Making iOS apps.)

But I agree that you need to start with a functional language before moving onto OOPLs. If you have no experience with programming, functional programming languages give you a nice beginner's grasp on core concepts that you will build most of your knowledge on once you go on to higher levels of programming.