Picking Up New Languages/APIs for Getting a Job

Started by
7 comments, last by blueEbola 11 years, 10 months ago
Okay well I've been programming since around 2006, and yet I've still want to land a job as a programmer and after a couple of years searching and doing my own work and releasing a few 3D game engines from scratch, open source software, and writing tutorials. I've haven't seen any jobs that caught my attention that are local and use my primary language of choice C/C++. I've even started a open source project with my friend just to get more experience and to put something on a resume, just like a intern.

I would think my primary language would be highly used, due to it's cross-platform flexibility, but after a while I come to find out it appears my old friend C# and ASP.NET is being used more often in the job market. Now my question is; if you have little experience with a tool or language, or can pick up on things very quickly, would you teach yourself a tool or language just to keep/get a job in the field?

Does it seem like it works out at the end or is it kinda a bad idea even if you know a good amount of languages/tools?

Here is my background:
Certification in Object Oriented Programming
High School Diploma
Going to school for a certification in Computer Science.

Languages:
C/C++, C#, Python, Java, SQL, PHP, JavaScript, HTML, CSS, AJAX, BASIC(MCUs), a little assembly.

Tools:
Apache, MySQL, Visual Studio 2005-2008, Xcode, PhotoShop, Maya 3D,
CMake, Eclipse, MPLAB, of course Word, and Excel.

I know I should pick up on .NET more even though I've haven't touched it in years, but is there anything else I should learn or know that small businesses will more then likely use? Is it recommended to start picking up Microsoft's SQL Server or Oracle? I already know how to use MySQL, so I'm sure they wouldn't be too hard to master.
Check out my open source code projects/libraries! My Homepage You may learn something.
Advertisement
Careful with the word "master". I haven't ever met anyone in person who I consider a master in a certain technology, and if I have, they've been far and few between. I've been a C#/SQL server developer for 6-7 years now and I can't even confidently say that I have "mastered" any of it. I still learn new things everyday.

If you're really fluent in all of those languages then you are off to a good start. You should absolutely be capable of learning new languages for a new job and it's something I do very frequently. If you want to continue into this field you absolutely have to be capable of learning new things quickly and efficiently, our field changes VERY often.

More than anything the smaller companies are going to be looking for someone who can pick up on new things quickly. Knowing several languages is always good, but being able to show that you truly understand these technologies (why they exist, what they are useful for, and how they relate to one another) will help you that much more in landing a job. If I'm hiring someone, the language is almost a moot point: I'm looking for someone who can *think* like a programmer. Someone with very strong logical and reasoning skills, someone who's capable of thinking in a very abstract sense. Anyone can learn syntax, but not everyone can design and develop a robust system that is going to scale effectively with minimal resources.

Most of the programming languages in your list are multi-paradigm with special focus on OO and procedural programming. I highly recommend you delve into a functional programming language (Haskell, or Erlang if you want something that has a little more real world use). Being able to demonstrate that you understand the different programming paradigms and their strengths and weaknesses will weigh that much more in getting a job that you enjoy. Functional languages like Haskell also tend to be very elegant in the way they describe and solve problems -- and they tend to force you to think about the problems you are solving in a different way. THIS is what your goal should be.. to be capable of tackling a problem from several different angles. This is also what they are truly going to be looking for when they are searching for a remarkable candidate.

The fact is, there are tons of Java/.NET enterprise shops out there with legions of code monkeys at their disposal. A lot of these guys know any number of languages, but they struggle with some basic concepts and are very limited in what they can actually do. There's no shortage of these guys out there -- and if you want to stand out in an interview, you have to demonstrate that you are beyond the mere syntactical differences between these languages. The languages are only tools, they are means to an end.

So my advice is: learn something wildly different than what you are used to. I recommend Haskell. It's not necessarily something that you can pad your resume with (and if the job doesn't suggest anything about it, don't pad your resume with it). But it will open your eyes and show you different ways to think about problems.

The list of languages on your resume is only to pass the HR tests of determining whether or not you are a worthy candidate on paper. The things that are going to get you through are your overall problem solving capability and your abstract thinking skills. Interviewers go through hordes of interviewees all with the same languages listed on paper, the thing that sets candidates apart are their actual thinking skill and what you are going to bring to the table.

Oops, yeah I sometimes over use the word "mastered", I've been doing C++ for about 5 years and I agree too that I don't believe I've completely mastered it even though I've pretty much have done everything with it, such as Networking, GUIs, cross platform programming, and of course file structure design and etc.



I will defiantly take up [color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]Haskell, Erlang, and maybe throw a few other languages/tools of course; such as Perl, Go .NET(refresher). Then learn some SQL Server, since it appears SQL Server seems to be in a good demand, and my database knowledge could be better. I defiantly think my thinking skills are well, maybe not the best in the world, but in short; I can defiantly get the job done with best optimization and good results with any language and of course there is always room for improvements, I just believe my main problem is that I don't know enough languages/tools that small to big industries use in order to get a job, even though I have a lot of prior experience, it really won't make up for the amount of stuff that is out there.[/background][/font]



[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]I really appreciate your advice on leading me to the right direction and recommending me to open my mind to new languages/tools that could help me land a job in a field I love, since I'm sure most of use much rather deal with computers then people.[/background][/font]

Check out my open source code projects/libraries! My Homepage You may learn something.
In my experience, companies are often willing to hire people who don't know the specific language or API being used. If you're good enough for the job and have relevant skills in the other areas, and can program, many are willing to let you pick it up as you go. Even more so for something as specific as an API. And even more so for entry-level positions (which presumably you're going for, if you have no previous commercial experience).

Now my question is; if you have little experience with a tool or language, or can pick up on things very quickly, would you teach yourself a tool or language just to keep/get a job in the field?[/quote]Both. No harm in picking up new skills if you're getting turned down. But any programmer with some experience should be able to pick up new languages and APIs.

http://erebusrpg.sourceforge.net/ - Erebus, Open Source RPG for Windows/Linux/Android
http://conquests.sourceforge.net/ - Conquests, Open Source Civ-like Game for Windows/Linux

Where do you live? It might just be because you aren't willing to relocate. When I was in SF for GDC I was super surprised by the number of totally random people (non-GDC attendees) were looking for SEs just walking around the town.
@mdwh Thats a very good point, thank you for your advice. That defiantly encourages me throw more applications around to get the job even if I've never touched the API or language. =)

I live in New Jersey, I moved up here in hopes to have better chances on getting a software engineering job, since I have family up here too. I do live about 45 minutes away from New York by train of course, but ironically I've never been in New York, so I don't want to apply at jobs in New York, when I'm not sure what the area is like.
Check out my open source code projects/libraries! My Homepage You may learn something.
Sorry for double posting, but Erlang, seems to be GREAT! It's a bit of a headache trying to wrap your head around how the ending characters work unlike the semicolon from C and C++, especially when your working with if statements, but I have my very first source code using Erlang, and I plan on doing more such as creating a simple IP directory lookup server. ^^ I'm very surprised that this language can do a lot of work very quickly, and is being used for phone operations and even being used for Facebook.

My Code Encase anyone is interested how it looks:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Written by: Andrew McRobb
% Written in Erlang
% Do what ever you please with this script!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%"helloWorld" is our filename, or module in this manner.
-module(helloWorld).

%define what functions are are using. First function is our main.
-export([start/0, writeLine/1, overallScore/1]).


%equal to echo/print in any other language.
writeLine(Text) ->
io:fwrite("~s\n", [Text]).
%if statment example.
overallScore(Val) ->
if
(Val < 10) ->
writeLine("You suck!");
(Val > 9) and (Val =< 30) ->
writeLine("You are okay...");
(Val > 30) and (Val =< 70) ->
writeLine("Good! Not too shabby!");
false ->
writeLine("Great job!")
end.


%Main/start up function.
start() ->
writeLine("Hello, Erlang!"),
writeLine("This is a second line!"),
overallScore(70).
Check out my open source code projects/libraries! My Homepage You may learn something.

Oops, yeah I sometimes over use the word "mastered", I've been doing C++ for about 5 years and I agree too that I don't believe I've completely mastered it even though I've pretty much have done everything with it, such as Networking, GUIs, cross platform programming, and of course file structure design and etc.





I worked professionally as a C++ developer for nearly 10 years I wouldn't say I "mastered" the language. smile.png


[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]I defiantly think my thinking skills are well...[/background][/font]


[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]I really appreciate your advice on leading me to the right direction and recommending me to open my mind to new languages/tools that could help me land a job in a field I love, since I'm sure most of use much rather deal with computers then people.[/background][/font]




OK, you're going to think I'm being an ass here, so I'm going to preface this by saying

[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]I'm not trying to be mean and I wish you luck in your career. The advice that follows is meant to be constructive.[/background][/font]





The word you're looking for is "definitely". I realise that this sounds really pedantic, but programming is communication, and just about the most pedantic form of communication going. When I see spelling errors and grammatical mistakes in applications, it feels lazy to me. Maybe when you talk to companies, you're more careful, but just be aware this stuff matters.

Also, if you would rather "[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

[background=rgb(250, 251, 252)]deal with computers then people", go look for another job. Seriously.[/background]

[/font]


[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]99.9999% of software is developed by a team. The days of the lone coder heroically banging out a program in a darkened room were rare enough 10 years ago, let alone today. You will have to deal with plenty of other people; many of whom will have conflicting agendas.[/background][/font]

if you think programming is like sex, you probably haven't done much of either.-------------- - capn_midnight

[quote name='ajm113' timestamp='1338555850' post='4945289']

Oops, yeah I sometimes over use the word "mastered", I've been doing C++ for about 5 years and I agree too that I don't believe I've completely mastered it even though I've pretty much have done everything with it, such as Networking, GUIs, cross platform programming, and of course file structure design and etc.





I worked professionally as a C++ developer for nearly 10 years I wouldn't say I "mastered" the language. smile.png


[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]I defiantly think my thinking skills are well...[/background][/font]


[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]I really appreciate your advice on leading me to the right direction and recommending me to open my mind to new languages/tools that could help me land a job in a field I love, since I'm sure most of use much rather deal with computers then people.[/background][/font]




OK, you're going to think I'm being an ass here, so I'm going to preface this by saying

[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]I'm not trying to be mean and I wish you luck in your career. The advice that follows is meant to be constructive.[/background][/font]





The word you're looking for is "definitely". I realise that this sounds really pedantic, but programming is communication, and just about the most pedantic form of communication going. When I see spelling errors and grammatical mistakes in applications, it feels lazy to me. Maybe when you talk to companies, you're more careful, but just be aware this stuff matters.

Also, if you would rather "

[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]deal with computers then people", go look for another job. Seriously.[/background][/font]





[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][background=rgb(250, 251, 252)]99.9999% of software is developed by a team. The days of the lone coder heroically banging out a program in a darkened room were rare enough 10 years ago, let alone today. You will have to deal with plenty of other people; many of whom will have conflicting agendas.[/background][/font]


[/quote]

Exactly.. I'd say that at least 60% of my actual job is communication, and not necessarily programming. I churn out a lot of code, but the majority of my time is spent gathering requirements, working with other members on my team on core software design, communicating with stakeholders on business rules, and going back and forth during QA testing. And it was like that at my last software development job, too. I'd love to be able to program for the majority of my working time but I unfortunately can't because I spend most of my time trying to communicate with the stakeholders in determining exactly what it is that they need me to deliver.

I'd even go so far as to say that programming is the easiest part of the job (depending on the exact field of programming you are in). Computers are deterministic and will for the most part deliver predictable results, people are.... not so much any of the above :). Most of the frustration I experience from a day to day basis is with communication, and if that's something that you can't handle then turn away now, lol.

Being able to gather specs and communicate with the customer is such an important role that at the bigger operations you'll find people whose entire job is dedicated to those tasks, the common job title here is something like "requirements engineer" or "business analyst". At the smaller companies, of which it seems like you are targetting ajm113, they expect someone who has these skills AND is capable of programming complex systems. I've worked on both ends of the spectrum and even if you do have the luxury of someone who will deal with all the strenuous specification work, you're still going to have to communicate with a lot of people in order to get your job done right.



Sorry for double posting, but Erlang, seems to be GREAT! It's a bit of a headache trying to wrap your head around how the ending characters work unlike the semicolon from C and C++, especially when your working with if statements, but I have my very first source code using Erlang, and I plan on doing more such as creating a simple IP directory lookup server. ^^ I'm very surprised that this language can do a lot of work very quickly, and is being used for phone operations and even being used for Facebook.

My Code Encase anyone is interested how it looks:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Written by: Andrew McRobb
% Written in Erlang
% Do what ever you please with this script!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%"helloWorld" is our filename, or module in this manner.
-module(helloWorld).

%define what functions are are using. First function is our main.
-export([start/0, writeLine/1, overallScore/1]).


%equal to echo/print in any other language.
writeLine(Text) ->
io:fwrite("~s\n", [Text]).
%if statment example.
overallScore(Val) ->
if
(Val < 10) ->
writeLine("You suck!");
(Val > 9) and (Val =< 30) ->
writeLine("You are okay...");
(Val > 30) and (Val =< 70) ->
writeLine("Good! Not too shabby!");
false ->
writeLine("Great job!")
end.


%Main/start up function.
start() ->
writeLine("Hello, Erlang!"),
writeLine("This is a second line!"),
overallScore(70).



Cool stuff! With Erlang, you should take some time to explore some of the things the language is known to be good at -- the big thing that comes to mind is concurrency. I haven't played with Erlang much, but from my own reading that seems to be the major appeal of the language. With multi-core computers being the norm these days, a lot of companies are looking for individuals who know how to optimize their code to make use of multiple cores when solving a problem. If you can create a pet project that does something like this with Erlang, you could totally throw that in your portfolio and be able to talk about that at an interview if they ask about experience with concurrency at all.

Anyway, good luck and have fun!

This topic is closed to new replies.

Advertisement