• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Programming |OT| C is better than C++! No, C++ is better than C

Yea and don't just take that list as gospel either, you have to run it in your area. For example here in Silicon Valley, i get:

Java: 6,056 (fuck that language)
Python: 5,600
C++: 4,416
Javascript: 2,948
Ruby: 1,295
PHP: 1,252
Objective C: 1,010
C#: 938
Visual Basic: 895
Swift: 288
 

pompidu

Member
Wow that site is awesome, thanks a bunch. Trying to land in a language that would preferably pay more. Java is OK but man I want to stay away from it. I'll putz around on there and see what I can shoot for.
 

oxrock

Gravity is a myth, the Earth SUCKS!
Hey all, been a while since I posted in here but I'm hoping some of you wouldn't mind sharing some knowledge and insight with me. I'm a self taught programmer learning mostly from courses like those offered at udacity,code academy and challenges at hackerrank.com. My goal was to be an indie game developer and have since released my first mobile game in the godot engine(Plink Tactics) and have been working on a much more sophisticated game for my second release in the unity engine (shown here: untitled game in development). The problem being, the first game has made me all of $10 in ad revenue and the 2nd game of course isn't making me any money while I'm slowly developing it. Being I'm self taught, I don't have any accreditations to show employers on a resume. I'm honestly hoping to to do contract work here and there that would get some cash-flow in while leaving me to spend the remainder of my time pursuing my passion. Because I find it unlikely I'd be hired as a game developer at this point.

So I guess my real question is with all that previous info in mind, what skills/languages are often sought after for people to do contract work and how could I get some jobs under my belt so that my lack of experience and empty resume stops being such an issue? Thanks all for reading this mess, looking forward to your responses.

Edit: If it's of any relevance the 2 languages I feel most comfortable in are python and c# as I started in the pygame game engine and then migrated to unity which uses c#. I have a remedial understanding of c++ from a beginner's course I took somewhere and a brief stint in the unreal engine. I also have limited experience with javascript thanks to a screeps addiction I recently conquered.
 
Figured this might be the best place to post this, if not send me away.

I'm about 2.5 years away from being vested in my 401k and pension at my current job. I mostly use etl tools and Oracle SQL here , and I'm looking to move away from that stuff.

So I'm asking for some guidance on what the job market is for different programming languages. I have 2.5 years to refresh myself on different languages but I figure I should concentrate on one language or a core of them and develop some portfolio.

So what are the new techniques/technologies I should focus on? There a way to guage the local market job pool without shifting through all the job openings? Should I call a tech recruit to get an idea? Job openings don't normally post salaries, there a good reputable source for that?

Thanks in advance!

You will probably need to know Javascript + one other language.

You can never go wrong with Java or C#, with C# being the better language but Java having the better educational resources. The advantage of going with Java/C# over python at first is that it forces you to really learn the principles of OOP, which most employers expect you to know. Switching to python afterwards isnt too hard. But if your local job market is 90% python you should of course just go with that. Where i live 90% of jobs ask for Java/C# or c++, python simply does not exist outside of system administration jobs it seems.

However, to get a job as a programmers its not so much about knowing the syntax of a language, its about knowing basic CS principles. So data structures, algorithms, design patterns, that kind of stuff. A language is just a way to express those things.
 

Makai

Member
You don't have to settle for just one boring enterprise language (C#/Java) in 2.5 years. Also try Python, JS, C, and even a weird language like Clojure!
 

Makai

Member
Hey all, been a while since I posted in here but I'm hoping some of you wouldn't mind sharing some knowledge and insight with me. I'm a self taught programmer learning mostly from courses like those offered at udacity,code academy and challenges at hackerrank.com. My goal was to be an indie game developer and have since released my first mobile game in the godot engine(Plink Tactics) and have been working on a much more sophisticated game for my second release in the unity engine (shown here: untitled game in development). The problem being, the first game has made me all of $10 in ad revenue and the 2nd game of course isn't making me any money while I'm slowly developing it. Being I'm self taught, I don't have any accreditations to show employers on a resume. I'm honestly hoping to to do contract work here and there that would get some cash-flow in while leaving me to spend the remainder of my time pursuing my passion. Because I find it unlikely I'd be hired as a game developer at this point.

So I guess my real question is with all that previous info in mind, what skills/languages are often sought after for people to do contract work and how could I get some jobs under my belt so that my lack of experience and empty resume stops being such an issue? Thanks all for reading this mess, looking forward to your responses.

Edit: If it's of any relevance the 2 languages I feel most comfortable in are python and c# as I started in the pygame game engine and then migrated to unity which uses c#. I have a remedial understanding of c++ from a beginner's course I took somewhere and a brief stint in the unreal engine. I also have limited experience with javascript thanks to a screeps addiction I recently conquered.
Just put your game on your resume. Revenue is not an expected bulletpoint. Many companies make interactive 3D apps which is pretty similar to game development - shoot for a fulltime position there
 

Somnid

Member
If anything start wih Python or C since those are better for learning fundamentals than Java or C#.

C is simple but it's too low level. I'd discourage any pointer-based language as a first language because to me that's like trying to learn to count by learning number theory and increasingly software doesn't go down to that level because it's not safe anyway. I'd rather push a language that can get you going fast and abstracts as much as possible away to let you worry less about implementation. Also having a good set of rails for style and package management so you can easily consume other code to do the things you want. Python seems more up to that task, Swift, C#, and Java are to varying degrees as well.

The more I think about it, the more javascript is such a good first language. You get free and easy distribution, the absolute best GUI building, no environment setup, best-in-class debug tools (And you already have them setup), completely platform independent, a zillion packages to do anything you want, and it can transfer into both traditional OO, and functional styles, don't have to worry about pointers, types, generics etc. The biggest downside is that there's a few legacy gotchas (which every language has) and style is pretty much the wild-west, not good to learn how to structure an application unless you put the time in to learn a framework.
 

pompidu

Member
You will probably need to know Javascript + one other language.

You can never go wrong with Java or C#, with C# being the better language but Java having the better educational resources. The advantage of going with Java/C# over python at first is that it forces you to really learn the principles of OOP, which most employers expect you to know. Switching to python afterwards isnt too hard. But if your local job market is 90% python you should of course just go with that. Where i live 90% of jobs ask for Java/C# or c++, python simply does not exist outside of system administration jobs it seems.

However, to get a job as a programmers its not so much about knowing the syntax of a language, its about knowing basic CS principles. So data structures, algorithms, design patterns, that kind of stuff. A language is just a way to express those things.

You don't have to settle for just one boring enterprise language (C#/Java) in 2.5 years. Also try Python, JS, C, and even a weird language like Clojure!

I figure Java might be my best bet since I've had my hand in it somewhat for a few years now. I think I may concentrate on that and C#.

Edit: ^ I'll take a look a JavaScript too. Thanks
 
I figure Java might be my best bet since I've had my hand in it somewhat for a few years now. I think I may concentrate on that and C#.

Edit: ^ I'll take a look a JavaScript too. Thanks

I would not learn both C# and Java. Most shops use one or the other, rarely both. If you're going to learn C#, then complement it with ASP.NET and Javascript.

If you're going to learn Java, then learn JavaScript and something like JSP and Node.js
 

Koren

Member
Yeah, I'd start with JavaScript in a framework like Node.js or React.
To target specific jobs?

Because that seems dreadful.


I joined developpers on new year eve, they joked about me being crazy when they saw me reading a node.js book (for work). Maybe the only think they would agree is that you should never touch Javascript even with a miles long pole ^_^

I'm less allergic (there's only Java I can't stand) but it would be really low on my list of candidates for first language.


Also, I still haven't found how you properly end a program in node.js ^_^
 

Slo

Member
To target specific jobs?

Because that seems dreadful.

Is the goal to put a programming language on your resume in order to make it past some hypothetical HR filter, or is the goal to teach yourself how to program and see maximum results with minimal barrier to entry? If it's the former, he should take a Java for Android 101 class and maximize the number of buzzwords he can put on the resume.

If it's the latter, Node.js is infamous for being a great language to prototype in because it's built to get shit off the ground in a hurry.
 

Koren

Member
If it's the latter, Node.js is infamous for being a great language to prototype in because it's built to get shit off the ground in a hurry.
That doesn't sound a great argument for a learning language to me. That being said, it's a hard question, so there's not a single answer.

It also feels strange to me to learn basis with an asynchronous language that react to events. It's probably "cultural", though.

(also, words on a resume probably won't help that much in the interviews if you only half ynderstood the logic behind coding)
 

upandaway

Member
I would not learn both C# and Java. Most shops use one or the other, rarely both. If you're going to learn C#, then complement it with ASP.NET and Javascript.

If you're going to learn Java, then learn JavaScript and something like JSP and Node.js
If most places use only one or the other, doesn't that mean they're both good to learn together? If you're trying to cover as many bases as possible and they're both popular with no overlap, that sounds perfect. Plus, they're very similar both on the outside and on the inside.
 

Somnid

Member
If most places use only one or the other, doesn't that mean they're both good to learn together? If you're trying to cover as many bases as possible and they're both popular with no overlap, that sounds perfect. Plus, they're very similar both on the outside and on the inside.

Not really. You could switch without much trouble if your job depended on it, but one is clearly superior to the other.
 
If most places use only one or the other, doesn't that mean they're both good to learn together? If you're trying to cover as many bases as possible and they're both popular with no overlap, that sounds perfect. Plus, they're very similar both on the outside and on the inside.

Better to be a master of one than a master of none. Most companies you apply at are only going to care about one of them and the other won't be relevant. No matter which job you end up at, you'll advance faster and climb the ladder faster if you're better at the thing they hire you for.
 

Slo

Member
(also, words on a resume probably won't help that much in the interviews if you only half ynderstood the logic behind coding)

I don't disagree with that at all. But if the goal is to land a job as a self taught programmer without a CS degree, you're going to have to demonstrate that you can actually do the work. That usually means pointing to your Github and having actual working projects out there.

If you're teaching yourself C, the build up from your HelloWorld.c program to something actually impressive and complete is much longer.

I do agree with you about learning in an asynchronous language though.
 

Makai

Member
Better to be a master of one than a master of none. Most companies you apply at are only going to care about one of them and the other won't be relevant. No matter which job you end up at, you'll advance faster and climb the ladder faster if you're better at the thing they hire you for.
Learning esoteric languages made me way better at C#
 

Slo

Member
Better to be a master of one than a master of none. Most companies you apply at are only going to care about one of them and the other won't be relevant. No matter which job you end up at, you'll advance faster and climb the ladder faster if you're better at the thing they hire you for.

To a point this is true, but at some point you have to transcend the language if you're going to advance far enough to begin having company wide architectural influence.

Not saying this is true for you, but one pet peeve of mine is hearing a lot of engineers talk about programming languages like they are flavors of magic instead of just a tool to do a job. Like Java is White Magic and C++ is Black Magic you have to pick a class at the beginning of an RPG or something. I prefer to look at them as tools no different than a hammer or a screwdriver. You'd never hear a construction worker say that he only swings hammers. Pick the right tool for the job.
 
Learning esoteric languages made me way better at C#

I agree, but that was only after you knew enough C# to get a job, I imagine.

To a point this is true, but at some point you have to transcend the language if you're going to advance far enough to begin having company wide architectural influence.

Agree, but if you're still at the stage where you want to know what to learn to get a job, I think this doesn't really apply yet.
 

pompidu

Member
I'm reading all of this and I appreciate all the responses. Sucks that the job market for programming sucks around here. I know a fair bit of Java(it is a hell of annoying) so I think I may dip my toe in C# and JavaScript and see what I really enjoy doing. I'll keep checking back if people have any more thoughts. Thanks!
 

Kalnos

Banned
I'm reading all of this and I appreciate all the responses. Sucks that the job market for programming sucks around here. I know a fair bit of Java(it is a hell of annoying) so I think I may dip my toe in C# and JavaScript and see what I really enjoy doing. I'll keep checking back if people have any more thoughts. Thanks!

Where is here? I find it hard to believe that it's truly 'bad' in any city but it's understandable if you're in a rural area.

If in a city I would advise joining your local technology slack group, lots of job postings in the one where I'm from.
 
cppking, what did you think of the C++17 working group's "results"? ;)

I haven't read up on it, what happened? (I guess I could Google it (or ask the man himself at work on Tuesday))

Edit: wait the next committee meeting isn't for another month, I must be out of the loop. Are yiu just referring to past meetings?
 

Koren

Member
But if the goal is to land a job as a self taught programmer without a CS degree, you're going to have to demonstrate that you can actually do the work. That usually means pointing to your Github and having actual working projects out there.

If you're teaching yourself C, the build up from your HelloWorld.c program to something actually impressive and complete is much longer.
In that case, yes, I can understand. There's some languages where you can build a portfolio quicker.

I think Python can also be a contender in this case (and I think it's a friendlier language to begin with), but I'm not sure you'll get fancy graphics easily. I'm not that fond of tk, I've yet to make pyfltk working, and I haven't done any openGL/bitmap work in Python (partly because I'm not that fond of Python for large projects).


Although at the same time, having a course that allows quicker results also means that more people can do similar things. I guess it makes things a bit harder to

(Out of curiosity, is GitHub specifically important? I should put my work there sooner or later... the thing is that I don't like Git, and I don't see how it'll be that useful till I search for a job)
 
the thing is that I don't like Git, and I don't see how it'll be that useful till I search for a job)

I think it would be a good time to get to like Git or otherwise you will have a very bad time across nearly all the programming sectors. Or even worse you might land into a company that doesn't do version control at all and you'll end up having even worse time.
 
I haven't read up on it, what happened? (I guess I could Google it (or ask the man himself at work on Tuesday))

Edit: wait the next committee meeting isn't for another month, I must be out of the loop. Are yiu just referring to past meetings?
I got banned the day after the last meeting

Anyway they couldn't even get parallelism, modules, and coroutines finished. Mildly frustrating. I expect the last two to hit comment period next month but who knows when they'll figure parallelism or concurrency out.

I mean, this is what Herb reports:

wg21-timeline.png
 
I got banned the day after the last meeting

Anyway they couldn't even get parallelism, modules, and coroutines finished. Mildly frustrating. I expect the last two to hit comment period next month but who knows when they'll figure parallelism or concurrency out.

I mean, this is what Herb reports:

wg21-timeline.png

To be fair, hard things are hard. I'm not a fan of how long design by committee takes to make meaningful progress, but at least it helps reduce the chances that a poorly designed feature make it into the language. We've seen what can happen when things go wrong (i.e. vector<bool>, allocators, and to a lesser extent std::unordered_map) so I can only imagine how many more things would have gone wrong by now without a committee.

That Herb Sutter timeline honestly doesn't seem too bad to me, but it also doesn't seem very realistic. I do expect modules to ultimately make it into 17, but probably not concurrency and parallelism. On the other hand, I also think modules is one of the most important things to happen to C++ since templates, so I value it quite a bit more than concurrency / parallelism.
 
To be fair, hard things are hard. I'm not a fan of how long design by committee takes to make meaningful progress, but at least it helps reduce the chances that a poorly designed feature make it into the language. We've seen what can happen when things go wrong (i.e. vector<bool>, allocators, and to a lesser extent std::unordered_map) so I can only imagine how many more things would have gone wrong by now without a committee.

That Herb Sutter timeline honestly doesn't seem too bad to me, but it also doesn't seem very realistic. I do expect modules to ultimately make it into 17, but probably not concurrency and parallelism. On the other hand, I also think modules is one of the most important things to happen to C++ since templates, so I value it quite a bit more than concurrency / parallelism.
I'm not impugning DBC because it's obviously better than having a single driving personality. I do want them to get it right. I just also want it to get done ;P

Modules and Concepts will absolutely improve the language, so glad those are in the pipeline.
 

Koren

Member
I think it would be a good time to get to like Git or otherwise you will have a very bad time across nearly all the programming sectors.
Well, I can use Git, I've done it often. It's not that I don't like it because I haven't experienced it, I don't like it because I have used it and dislike some of its principles (editing history seems awful to me).

I just prefer Hg. I know it's less popular, but I think it's saner. Since I work on my own projects, I have the chance to be able to choose my versionning system (and some formatting rules for the source code).

If I ever join a company that use Git, so be it, I'll live with it. But I don't see the appeal to use a tool I value less than another just because the other is more popular.

Well, would you ditch functionnal programming because there's more ressources online for Javascript?


On the other hand, I also think modules is one of the most important things to happen to C++ since templates, so I value it quite a bit more than concurrency / parallelism.
I'm more interested in modules, but given the evolution on hardware and networking, I wouldn't be surprised that concurrency / parallelism is the most important feature.

Modules is increased comfort. Parallelism may be a requirement soon to do anything that need some power.
 
Well, would you ditch functionnal programming because there's more ressources online for Javascript?

Well, functional programming is awesome in JavaScript so that's kinda bad example :)

That said, you can (if you want to) use hg-git plugin (http://hg-git.github.io/) to get some Mercurial-Git interop. Great that you are using a VCS regardless (
that isn't SVN or Perforce or other terrible thing)
 
Well, I can use Git, I've done it often. It's not that I don't like it because I haven't experienced it, I don't like it because I have used it and dislike some of its principles (editing history seems awful to me).

Do you mean the ability to edit older commits, rewriting history? If so, I mean just don't do it. I don't like multiple inheritance or iostreams in C++, so I try not to use them. Occasionally though, I find it's really the best/only solution, so I guess at least they're there if I need them.
 

Koren

Member
Do you mean the ability to edit older commits, rewriting history?
I'm talking about some dirty things you can do with git, including rewriting history and rebasing.

If so, I mean just don't do it.
Yes, I've even read plently of articles about the list of things you shouldn't do with git. I'll obviously avoid it, but it's still a design philosophy, and I don't like the tool whole.

Even when people are comparing Hg to a bunch of tools and Git as a swiss knife, I remember that when I'm using real tools, I prefer having a set of proper tools that a swiss knife ;)

Well, that's not night and day, but I enjoy Hg more, and I would be annoyed to have to switch to git just to have some visibility on the web... It seems such a bad reason to switch :/

I don't like multiple inheritance or iostreams in C++, so I try not to use them.
Thanks for that, I was feeling bad just because I'm not fond of iostreams ^_^ I thought something was wrong with me.
 

Makai

Member
I dunno if they just give me a pass because I'm older but the standards for coding interviews are way lower than when I was in college. I'll bomb every question and they'll still pass me to the next round, even at top companies.
 

Kalnos

Banned
I dunno if they just give me a pass because I'm older but the standards for coding interviews are way lower than when I was in college. I'll bomb every question and they'll still pass me to the next round, even at top companies.

What kind of questions? Is it like you work through a problem with them but still don't come to the correct answer? They might just be trying to find out if they like you and how you think.
 

Somnid

Member
I dunno if they just give me a pass because I'm older but the standards for coding interviews are way lower than when I was in college. I'll bomb every question and they'll still pass me to the next round, even at top companies.

I've had a few interviews with some big guys recently and it seems to vary wildly. Some were hard technical, some were easy technical and some were more like work chats.
 

Makai

Member
What kind of questions? Is it like you work through a problem with them but still don't come to the correct answer? They might just be trying to find out if they like you and how you think.
One time I said a hashtable was two arrays - one for keys and one for values and they lined up by indices.
 
One time I said a hashtable was two arrays - one for keys and one for values and they lined up by indices.

You should start trolling to see how far you can get. I do this with credit card signatures. They ask me to sign. Sometimes I'll scribble random junk, but other times I've gotten mroe extreme. One time I drew a perfectly horizontal line, nobody batted an eye. Another time I spent about 45 seconds drawing a rectangular grid, carefully making sure all the horizontal and vertical lines were as parallel as I could get them to each other. Cashier looked at me kinda weird, but still took the slip.
 
Top Bottom