I don't have enough experience to get started, and I can't get started without experience.
Horsepuckey. Can you FizzBuzz? If so, you're experienced enough to get a job as a developer. What you need to work on is not your programming ability -- that is what professional experience is for -- but your competence at marketing yourself.
You will probably not be hired to fill a hole labeled "I need a developer who does RoR, jQuery, Rspec, and Cucumber." First, most of the people who need exactly that skillset don't have the budget to hire anybody. (No offense to present company who may use exactly that skillset.) Second, most developers start with semi-relevant experience and gradually learn more about the stack their current job (or project at the job) involves. I was a Big Freaking Java Web Apps dev for 3 years and I started not knowing SQL, Spring, etc etc. That was fine -- it just meant my first several months involved doing an awful lot of iterating over hashmaps (java.util.* is my second home) when not reading code and tutorials.
Now, in terms of marketing yourself:
1) Make stuff you can show off. This distinguishes you from the 90 out of 100 candidates who are incapable of making stuff. Making stuff is the core developer competency. (Actually, it might be #2 after communication skills.)
2) Polish your communication skills. See #1.
3) Start networking. "Send a resume and pray" is jobseeking for people who enjoy unemployment. Know the decisionmaker beforehand. There are a variety of ways you can get started on this today -- for example, start writing a blog about the kinds of problems you have solved or will eventually solve for the kinds of people who will hire you. This gives you something to talk about. Alternatively, talk about what other people are writing in the same field. This has a long payoff timescale but the rewards can be fantastic.
Also, don't neglect traditional networking: business cards, meeting people face-to-face in your local community, etc etc.
I'd go a step further than you on #3: forget about job postings altogether. Instead, make a list of companies you'd like to work for and for whom you think you'd made a good fit. Eliminate all game companies from that list. Then, make a project of finding people in that company to contact and ask if you can stop by and talk about how you can help. Then, don't let up. Nobody you'd ever want to work for is going to say "don't talk to me again".
We have hired people who did this to us. People who are extremely, pointedly, relentlessly interested in working for your team are much more attractive than job ad respondants.
This is especially good advice in our industry, since they people you want to talk to are trivially discoverable, spend upwards of 12 hours a day connected to publicly accessible communication channels, and are often very good about writing people back. (It would never have occurred to me several years ago that I could just, you know, write the CEO an email, and he might very well write back and would almost certainly not send out a company-wide memo saying that I was an idiot who should never be spoken to again. It would also not have occurred to me that the Product Leader in charge of X will practically fall over themselves in a rush to talk to you about their baby, and they also can almost certainly figure out a way to get you hired if they want you to be hired.)
Just another data point, but my experience and tptacek's line up pretty much exactly. None of our first three hires came through job ads. One developer, one product person, one bizdev person (we're peculiarly partnership-heavy and the founders are all technical), so it's not even developer-specific thing.
Two came from emailing the contact address on our website; one through a referral from a mutual friend.
Actually; one of them came from a conversation about whether their company and ours could work together, which weirdly morphed into us offering him a job. Thank goodness for no NDAs/non-competes!
Many, many young devs are in love with the idea of developing games. Many more than the industry actually needs. It follows that you're less likely to land such a gig, and that you're more likely to get underpaid and be burned out by overwork if you do - there's always someone else who still has stars in their eyes, waiting to take your place.
If gaming is really a dev's passion, they should already have compelling work they've done on their own, a substantial portfolio, some contacts developed, etc. If not, it's probably an unrealistic flight of fancy, and it should be recognized as such and discarded.
If you want to work for a game company as a game developer you are right. I know some ridiculously bright people working for comparatively low wages in the industry.
If, however, you want to be a SysAdmin, or otherwise work on boring back end bullshit, my experience has been that if you don't mind being part of a department nobody listens to or cares about, game companies are good places to break into the industry (or to earn more than you would be worth elsewhere.) It's frustrating because you clearly have little autonomy or power, and management knows just about jack about ops work, and god help you if you interfere with a game's release schedule, but eh, the pay is good relative to the skill expected, and they are willing to hire people who are worse or less experienced than average, mostly because they don't know any better.
This is basically how I got my first internship in college as a freshman with only a year of programming experience. It takes a bit of dedication to get the first gig to build up your resume, but if you just keep following up with the same people hopefully you can get an interview.
Can you FizzBuzz? If so, you're experienced enough to get a job as a developer.
I am always so surprised when I hear that, and have a difficult time believing that's true. With only an extremely beginner's level understanding of Python, I can solve FizzBuzz. Can I get a dev job?
This would put you ahead of literally half of software engineers at or below my level of seniority at least one Japanese megacorp. While I have very little experience with working in the United States, anecdotally, many programmers can't program there, either.
I didn't know what fizzbuzz is until I read about it on wikipedia. But I frequently run into "web developers" that don't how sessions work or how cookies work and don't understand what CSS does. But i figured it was just these guys who give programmers a bad name. I had no idea it was really that bad and extends to the basics of programming.
I've always wondered -- is the reason people can't do fizzbuzz because a lack of understanding of modulus or because they can't comprehend the problem?
I know modulus isn't necessary, but I can see someone not doing the problem if the solution they are turning in is in a less elegant way.
FizzBuzz comes from a game for six to eight year olds, who also don't understand modulus. That's part of the reason it is such a great problem: they fact that you realize "Hey, this is a whole lot easier with modulus" demonstrates that you can reason abstractly. You certainly don't need a mod operator to make it work -- if you're capable of writing a function, you can write divides_evenly_by_3(int number) using facts that every fourth grader knows.
If you prefer, you can substitute a similar problem which doesn't require even fourth grade math. Here's one: write a program which calculates the sum of all numbers between 1 and 1,000 whose digits sum up to 7. Or write a program which takes this post as input and tells me what the 3rd most common letter used was.
That's true enough. But fact is, if someone's ignorant of modulus, I'd say that's scary. Knowing modulus doesn't necessarily demonstrate you have a great grasp of programming. But I think not knowing modulus demonstrates that there's a higher probability you know very little. And fact is, FizzBuzz also filters out all the people who know modulus, but can't figure it out anyway. You definitely don't want those people.
My Python answer for the second question, where `post` is patrio11's post as input:
from collections import defaultdict
from string import ascii_letters
d= collections.defaultdict(int)
for letter in post:
d[letter] += 1
print [letter for letter in sorted(d, key=d.get, reverse=True) if letter in ascii_letters][2]
Any comments on improvement for readability or conciseness?
There are a lot of micro improvements you can do to this. For example, after you find sum() == 7, you can increment x by 9 (since the largest digit in the ones column can be 7, and this takes a deficit of two digits to get back to the rollover -- and then 7 more to get a sum of 7 again).
And frankly I'm not sure if its faster to convert to string and back to int, or if it would be better to just use modulo arithmitic to get the values associated with the ones/tens/hundreds.
In any case, what you have is certainly readable though.
s = "your text here"
import string
d = {}
for i in list(s.lower()):
if i in string.letters:
d[i] = d.setdefault(i, 0) + 1
print sorted(d.keys(), cmp = lambda x, y : cmp(d[x], d[y]), reverse = True)[2]
Edit: See my later response for something using the 'collections' module.
You don't need to do `list(s.lower())`, you can already iterate over a string. Also, instead of converting the whole string to a new lowercase one, which means allocating "a lot" of memory, you can convert each character separately as needed.
It's surprising how bad many developers are. We had a candidate in the other day who was struggling with a problem, so we kept making it easier until finally we asked him to "write some code to tell me if the input string consists only of the letter 'a'". When he got that wrong, the interview was over. Not to pick too much on this guy, because I really enjoyed talking with him, but it was a good reminder of how the rest of the world worked before I got a job with people that actually care about and are good at their craft.
I'm very sorry, but I have to laugh at this. That's like the SNL Celebrity Jeopardy skit where for the Final Jeopardy round an exasperated-to-the-breaking-point Trebek deploys a deliberately extremely easy question at the celebrities such as "write any letter" and they still find a way to mess it up.
And no, I don't feel sorry for people like this. Despite their glaring incompetence they still manage to snow people into hiring them. Some of them easily make $500,000/year and up if they remora themselves to the underbelly of a large company and emit horrible VB code.
What?! Wait, was this an interview for Google? How did this guy get to this stage? I've always assumed I probably couldn't get an interview at Google, but geez...
Yeah, I would love to know how he got that far as well. It's definitely not a normal occurrence for people to get onsite interviews and then bomb like that. Everyone that I've interviewed up until this point was pretty decent even if they weren't ultimately extended an offer.
I've been doing a lot of job hunting lately. There are a ton of crappy jobs out there for php/java code monkeys. If you can solve FizzBuzz you can get the job, though you might not want to. Python and other more fashionable languages tend to be the choice of more sophisticated teams with higher standards. Simply put, a beginner's level understanding of PHP will get you a php code monkey job. A beginner's level understanding of Python along with an understanding of fundamentals can get you a dev job.
If you could also show some open source work, it would be a tremendous help. I have been job hunting for well around 2 weeks already, and from what I have noticed is that half of the companies I'm getting interviews with placed a huge emphasis on my open source contributions (however paltry those are). I'm just quite unlucky that my kryptonite has been the combination of a.) These shops all use RoR while I'm a Java guy (currently remedying that), and b.) My SQL experience (or the apparent lack of it, no pun intended, quickly remedying that too).
Failing that, if worst comes to worst get income support (if that's what your country has) and/or a part time job and create a startup... At the very least a startup is an awesome resume piece to show prospected employers.
that's precisely what I've done ... I have a (not finished) product, which you can see at http://nift.ie ... that's my product .. I just need to add some more features before I start plugging it ...
Being able to build something useful that works well is the key skill. You've demonstrated you can do that. I can think of dozens of software applications that are not as nifty as nift.ie. Someone was paid to write most of them.
> I just need to add some more features before I start plugging it ...
Maybe I've been hanging around here too long but my first thought in response was "you probably don't". As in, you probably don't need to add more features before you start plugging, MVP and all that. :)
While I cannot remember the syntax off the top of my head, I am pretty sure I could write out how to do this in BASIC. I have not had a programming course in 22 years. Maybe there is hope for me.
Horsepuckey. Can you FizzBuzz? If so, you're experienced enough to get a job as a developer. What you need to work on is not your programming ability -- that is what professional experience is for -- but your competence at marketing yourself.
You will probably not be hired to fill a hole labeled "I need a developer who does RoR, jQuery, Rspec, and Cucumber." First, most of the people who need exactly that skillset don't have the budget to hire anybody. (No offense to present company who may use exactly that skillset.) Second, most developers start with semi-relevant experience and gradually learn more about the stack their current job (or project at the job) involves. I was a Big Freaking Java Web Apps dev for 3 years and I started not knowing SQL, Spring, etc etc. That was fine -- it just meant my first several months involved doing an awful lot of iterating over hashmaps (java.util.* is my second home) when not reading code and tutorials.
Now, in terms of marketing yourself:
1) Make stuff you can show off. This distinguishes you from the 90 out of 100 candidates who are incapable of making stuff. Making stuff is the core developer competency. (Actually, it might be #2 after communication skills.)
2) Polish your communication skills. See #1.
3) Start networking. "Send a resume and pray" is jobseeking for people who enjoy unemployment. Know the decisionmaker beforehand. There are a variety of ways you can get started on this today -- for example, start writing a blog about the kinds of problems you have solved or will eventually solve for the kinds of people who will hire you. This gives you something to talk about. Alternatively, talk about what other people are writing in the same field. This has a long payoff timescale but the rewards can be fantastic.
Also, don't neglect traditional networking: business cards, meeting people face-to-face in your local community, etc etc.