Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.
This thread is getting programming jobs, especially for newbies. That can be lifelong math nerds with CS degrees looking to snag a position with Big Tech, people with no coding experience looking to self-teach, or desperate humanities majors trying to pivot careers into something that pays well. All are welcome under this roof.

Personally, I'm of the CS degree/BigTechCo variety of coding goon, so some of what I write here may be biased towards that experience.

A few definitions that help make the rest of this OP make sense:

Programming:

Wikipedia posted:

Computer programming (often shortened to programming or coding) is the process of designing, writing, testing, debugging / troubleshooting, and maintaining the source code of computer programs.

Computer Science:

Wikipedia posted:

Computer science or computing science (sometimes abbreviated CS) is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems

Note that computer science != programming. College computer science programs invariably teach you to code at some level along the way, but the focus is on more abstract concepts like data structures, algorithms and discrete math, and this is more true the more prestigious the college is. Since CS programs can vary wildly school to school, if you want to know how much of it is applicable to industry, ask someone who goes there, or better yet, someone who used to go there and now works as a programmer.

That said, getting a CS degree is the safest path to becoming a professional software engineer. It provides the most structure and support to learning, and just having a CS degree on your resume is a big boost when you're just entering the work force.

Programmer vs Software Engineer: The distinction here isn't always black and white, but generally the job title of programmer denotes just basic programming duties, whereas the title of software engineer denotes a "higher rank" and being responsible for higher-level aspects of software design. Job postings for software engineers nearly always require a degree in CS (or something related, like CompE or Math), although some companies may waive this requirement if you have sufficient experience. Along the same lines, software architect implies that you're working at an even higher level and are responsible for the overall design, or architecture, of an entire program (or perhaps a very large section of a program if your program is something enormous like, say, Windows).

Other job titles include software developer (dev), which is kind of a catch-all for "writes software" and is often interchangeable with software engineer, and principal engineer, which basically just means EXTRA senior engineer.

I want to work in software development. Should I get a degree in Computer Science?

Quite possibly! This seems to be the most common route into software engineering, but there are a few things to consider:

1. Computer Science degrees can be very difficult (depends on school). They're usually similar to engineering degrees in drop-out rates (many drop-outs seem to go to MIS, which is sort of a hybrid business/CS degree). If you go to a school with a rigorous program, expect to spend long hours studying various algorithms or implementing them.

2. Computer Science involves a lot of math and math-ish concepts. You don't have to be amazing at math, but you have to be at least halfway decent, in college-level terms. For example, you'll probably have to take classes in at least differential/integral calculus, linear algebra, and discrete math (often called discrete structures). Many other classes will involve math-ish concepts like understanding Big-O, which is a measure of how algorithms' running time responds to changes in the size of their inputs.

3. As noted above, there is no guarantee that getting your degree in and of itself will adequately prepare you for real-world programming. Stories abound of CS seniors or even grads that had decent enough GPAs but couldn't code their way out of a wet paper sack (or couldn't code their way through FizzBuzz, an extremely simple but well-known programming test). Even if your school does a good job of this, however, you'll still want outside experience.

If I get a degree in CS, how's the job market? Will I make big bucks?

Yes. Well, maybe. The job market right now for devs is excellent overall, but companies often play the hiring game very safe, by preferring to not hire at all than to hire someone that seems iffy, as bad engineers can cause negative productivity. That said, overall jobs are abundant and salaries are high, as demonstrated by the following large numbers:

code:
Top-Paid Majors for Class of 2013 Bachelor's Degree Graduates, NACE

Major	Average Starting
Salary
Petroleum Engineering	        $97,000
Computer Engineering	        $70,900
Chemical Engineering	        $67,500
Computer Science	            $64,700
Aerospace Engineering	        $64,500
Mechanical Engineering	        $64,500
Electrical Engineering	        $63,000
Engineering Technology	        $61,500
Management Information Systems	$60,700
Logistics/Materials Management	$59,800
:signings:
So according to NACE, CS is in the #4 spot now for new grad starting salaries. Compare that $64,700 to a reported average of $36,553 for humanities majors. Ouch! :negative:

Now anecdotally, it seems like there are simply more jobs about in CS than in other engineering fields (software engineering is definitely growing more). But that's not all!


http://www.drdobbs.com/architecture-and-design/2013-developer-salary-survey/240163580?pgno=1

In addition, the Bureau of Labor Statistics expects strong growth:

quote:

Overall, employment of computer software engineers and computer programmers is projected to increase much faster than the average for all occupations. Job prospects should be best for those with a bachelor's degree and relevant experience.

Employment change. Overall, employment of computer software engineers and computer programmers is projected to increase by 21 percent from 2008 to 2018, much faster than the average for all occupations. This will be the result of rapid growth among computer software engineers, as employment of computer programmers (read: those without degrees, mostly) is expected to decline.

And in even more good news, CareerCast rated software engineer as the third-best job to have overall, beating out, well, everyone except for actuaries and biomedical engineers. Woo!

Ok, I've decided to become/I am a CS major. What do I do now to get one of those sweet, high-paying gigs I've heard so much about?

To maximize your odds of entering the ranks of the good-jobbed, you'll want as many of the following as possible:

1. A good GPA. You want to at least have a 3.0, and 3.5+ is generally seen as very good. Besides demonstrating some level of competence in the art of Computer Science, companies want to know that you aren't lazy, and that even if some classes are boring, you are willing and able to suffer through boring things. Many big companies seem to have a cutoff around 3.0. As you progress in your career, a high GPA's relevance rapidly declines, but early on it's an excellent thing to have on your resume.

2. Outside experience. Companies want to know that you can take initiative and can code without the rigid structure of a class holding your hand the entire way. There are basically five forms this can take:
  • Personal projects: Stuff you do on your own. Whatever interests you the most is probably a good place to start, but if you're utterly lacking in imagination, try googling for tutorials on mobile or web apps. The more useful and complex the things you write are, the better, but anything is still better than nothing.

  • Undergrad research: Labs sometimes need undergrads to do the coding that they don't want to waste their time on. For example, I worked in a lab where they were researching new network protocols for wireless mesh networks, and me and one other undergrad were hired to write a program that displayed different signals graphically in real-time. Talk to your profs about being a codemonkey.

  • (Summer) Internships: You definitely want to do one of these. They're one of the most straightforward ways to get good experience, and pretty much the only way to get experience at a big-name like MS/Google prior to getting an actual job there. Having Google already on on your resume when you're looking for your first real job? Awesome. Companies will be looking for junior internship applicants in both fall and winter/spring semesters. Some companies also will take sophomore interns, although this isn't nearly as common. In addition to the experience, expect to get paid quite well (the big-names pay $25-35/hour, others will probably be around $15-20/hour) and to foreverafter be insufferably smug around people who did unpaid internships.

  • Co-ops/part-time jobs: You can try applying at local companies to see if they hire students for part-time work. Also, schools themselves often need cheap student developers for webpages and whatnot. This is obviously a good way to get real-world experience, just keep in mind that most companies will want around 20 hours per week. This can easily be stretching it if you're taking a full load of classes; try not to ruin your GPA while doing this.

  • Open-source projects: These projects are always looking for contributors, and saying you helped with one (and being able to explain how you helped) can give you serious nerd cred. A word of warning, however: diving into a large codebase without a mentor that you can easily ask questions of is an incredibly difficult task. If you're still a newbie, try to stick to smaller projects.

3. Technical Interviewing Skills: At the very least, you need to know how to code on the fly on a white board/piece of paper, as well as the most common data structures and algorithms, along with their running times for different operations. You should also understand complexity/Big-O in general so that you can analyze whatever algorithm/data structure an interviewer asks you to write. A whole book could be written about interviews; in fact, there has!

  • Big companies tend to be language-agnostic for interviews. Any language that isn't obscure should be more or less fine. Safest bets are the major general purpose programming languages: C++, Java, and C#. Smaller companies may want you to code in a particular language that they use.

  • Questions most commonly have to do with data structures and algorithms, although you'll also get questions involving design, debugging, testing, multi-threaded code, and pointers.

  • Practice, practice, practice, practice. Practice. Code in a plain text editor, code on a whiteboard, code with experienced friends and acquaintances playing the role of mock interviewer on the phone and in-person. Interview coding is very different from normal coding, so it must be practiced independently. If you normally code in an IDE, coding without the benefit of that handholding will be a shock, so make sure you practice in something that doesn't do autocomplete.

  • For the data structure/algorithm ones, there's usually a really obvious brute-force solution that either has a terrible running time or memory requirements, and then one or two more elegant solutions that will take a while to get, so don't be surprised if you don't immediately know a really good answer. What I do is immediately explain the obvious, dumb answer and why it's dumb, then start talking through the problem. Interviewers are more interested in your thought process than just how quickly you get a solution, so talk them through it.

    Occasionally you may get a question where there will be no final good answer, because the interviewer just wants to see you struggle and work through a problem that has no good solution. Those dicks.

  • Make sure you understand the design specs completely before you start to code; many interviewers will intentionally state the initial problem in an ambiguous way to see how you respond. If anything is ambiguous, ask the interviewer.

    For example, if the code is being used internally, you may be able to assume that the parameters coming in are valid, or at least aren't null or something like that, whereas if it's an externally-facing API, you almost certainly wouldn't be able to assume that and would have to check the parameters at the start of a function to make sure they aren't broken. Think and ask about constraints (e.g. is memory or disk space an issue?) and expectations (e.g. will the calling function expect me to return null OR throw an exception when the input is bad?).

  • Handle the edge cases. Some people code the general case first, then handle the edge cases based on what it looks like the general case can't handle. Some people code the edge cases first so that they don't have to worry about them while coding the general case. Either way, let your interview know what you're doing and why. Whenever possible you want to bring up the edge cases in some form before they do.

Here's an actual question taken from an interview I did with Microsoft:

quote:

Parameters: array of objects, an integer 'n'. Randomly select 'n' objects from the array to return. No repeats. You can assume 'n' is a valid number.

Obvious, really dumb answer: Keep a set of all object indices chosen so far. Randomly generate a number between 0 and arraysize-1. If the index is not in the set already, put the object from that index into whatever data structure you're using to return values, and put the index into the set. If the index IS in the set already, choose another number until it isn't. Repeat 'n' times, then return the array.
This answer is really dumb because: If 'n' is close to the size of the array, the running time will be horrible. Imagine if an array of 1000 objects comes in and 'n' is 999. By the time you get to the 900s, most of the random integers you're generating will be numbers you've already chosen before, so you'll have to generate many random ints for each valid 'hit'. Theoretically, the worst-case running time is infinite because there's no guarantee of finishing; for practical concerns, it's just really really bad (looks like it might be O(n!) but I'm not certain).

Obvious, dumb answer: Randomly generate a number between 0 and arraysize-1. Pull out the selected object and put it into a different data structure. Create a new array without that object. Repeat 'n' times, then return.
This answer is dumb because: Creating a new array is a linear (O(n)) operation. Since this algorithm has us repeating 'n' times, the total running time is quadratic, or O(n^2). This isn't nearly as bad as the first solution, but it's still not good.

Less obvious, elegant answer: Randomly generate a number between 0 and arraysize-1. Pull out the selected object and put it into a different data structure. Have the spot at the selected index now contain the object at arraysize-1, then assume the array size has gone down (keep track of it in a variable). Repeat 'n' times.
Why it's smart: This solution deals with the 'gap problem' of the second solution by just plugging it with whatever was in the last spot. Thus, the gap is filled in constant, or O(1), time, instead of linear time. This means that the total running time is just O(n), since we are doing a constant operation 'n' times.

4. "Soft" Interview Skills: Unfortunately, this has nothing to do with having a round, squishy belly, and everything to do with people/social skills. Companies don't want a hardcore neckbeard who can't communicate or get along with others. You don't have to be incredibly charming either, but there's a baseline of stuff you should do like smile, act confident without sounding arrogant, speak clearly and coherently, etc.

Many software companies are ok with dressing casually in interviews, but keep in mind there's a difference between dressing casually and dressing like a slob. Wearing jeans is fine at many companies, as long as said jeans do not have cheetos stains all over them. Check with [the recruiter/someone who works there/someone who works in a similar company] about expected dress. A safe rule of thumb is go a half-step or step above whatever people normally wear to work there. For example, interviewing at Google where people usually wear jeans and a t-shirt, I wore nice jeans, a t-shirt, and a nice collared sweater.

Another part of this are behavioral questions. Most companies will have questions like, "Tell me about a time where you had a deadline that you didn't think you'd be able to meet, and how you dealt with it," and "Tell me about a time you had a problem with a teammate, and how you resolved it." Questions about a particularly nasty bug that you fixed also seem to be common. For more examples of both behavioral and technical interview questions, go to glassdoor.com and search for well-known software companies, then go to the Interviews section for them, like so: http://www.glassdoor.com/Interview/Microsoft-Interview-Questions-E1651.htm

How do I apply for internships/jobs?

Probably the best way through recruiting events at your school. My college does technical career fairs in fall and winter semesters where only smarty-pants math/science companies and majors are allowed. Handing out your resume at these and asking them about procedure (these days they usually ask you to also apply online, but maybe through a different website than the general public one) is a good idea.

For companies that don't recruit at your school, go to their website, they usually have a section specifically for university recruiting; you can try googling "[Company name] internships" or "[Company name] university recruiting" or something along those lines if their main website is proving difficult to navigate. You won't get responses from the majority of these unless you're super-amazing, but it's worth a shot; in fact, the offer I accepted my senior year was from a company that wasn't recruiting at my school, I just applied online.

These job requirements are intense! Guess I'm not good enough...

Skandranon posted:

All job requirements are 'wish lists', very similar to the ones children make for Christmas.
Don't be afraid of applying if you think you're at least roughly what the position is aiming for.

When should I start applying for jobs?

If you're graduating at the normal time in late spring/early summer (May/June), you can start applying to large companies (especially large tech companies) in the preceding fall semester. These companies generally want to pick off promising new college grads earlier so that their competitors can't get them, as there's a perpetual bidding war for the most talented new developers.

Generally, smaller companies won't hire that far ahead of time, but it obviously depends on the specific company. Try calling and asking around your area for local companies, I guarantee no one will bite your head off. Definitely want to start trying at least a few months before graduation.

IF YOU WAIT UNTIL YOU GRADUATE TO LOOK FOR JOBS YOU'RE AN IDIOT! DO NOT DO THIS.

Exactly how much money we talking about here?

Glassdoor.com is awesome for this. Starting salaries for the big-names seem to mostly be in the 80s through the low 100s, although keep in mind that we're talking the most prestigious companies in high cost-of-living areas. It's also possible you'll get some sort of signing bonus in cash, and some stock; these will have time restrictions attached to them. For smaller places, it's going to be more random, and probably less (with some exceptions; if you get hired at some boutique hedge fund you may be making bigtime money), although the bidding wars at the big names have a pulling effect on everyone else too, so be thankful Facebook gives out 100k signing bonuses to former interns who sign with them.

I got an offer what do I dewwwww??

Congrats, you've escaped the Gen Y Curse. You should try negotiating, although as a new college grad your leverage is small (some would say nonexistent). Still, it's probably worth a shot, especially if you have multiple offers. If you're still waiting on other companies for interviews/offers, try to play for time. Most companies should be understanding. Here's a good guide to negotiating for engineer-types: http://www.kalzumeus.com/2012/01/23/salary-negotiation/

Wait so do I have to actually know about Big-O and algorithms or can I toss that knowledge in the trash bin once I'm done with classes?

Otto Skorzeny posted:

This varies so much from company to company that it's difficult or impossible to generalize like this. Companies that work in middleware may have the luxury to be able to take anyone who can coax eclipse into compiling their code, whereas companies working on eg. high-performance databases need people with solid CS fundamentals, even especially if the company is small and there's no where for a coder to hide, so to speak. Jobs writing firmware or whatever will have their own set of fundamentals with regards to concurrency hazards and intimate hardware knowledge that they need to interview somewhat rigorously for, people working on game engines need to know a fair amount about efficiency all the way up and down the stack, and so on and so forth.

I would furthermore posit that 'companies that make CRUD apps in java and python' are an especially bad place to extrapolate from to cover the entire set of companies hiring from CS and related disciplines (not that this is necessarily what you were doing).

In summary, knowledge of CS fundamentals may be a necessary condition for employment depending on what sort of work you want to do.
So basically it depends on the industry and company.

But what if I'm not a sheeple and don't want to/didn't follow the standard CS degree path right out of high school? Is there hope for me?

Yes! There are many paths to salvation, my son. They fall into a few different categories (see the Appendix for more links):

Degrees: If you already have a bachelor's degree in something else, you can get often still get a master's in CS. This usually requires you to take some preliminary classes before you can start the grad program proper; for example, BYU's program says this:

quote:

Provisionally admitted students must either take or have taken the equivalent of CS 124, 142, 235, 236, 240, 252, any three CS courses beyond the 200-level (except 404), any two math courses beyond Math 113, and either an additional CS course beyond the 200-level (except 404) or an additional math course beyond Math 113.
There are sometimes even online versions of this kind of degree you can do. For example, Oregon State has a program for a BS in CS for people who already have one bachelor's that can be completed in as little as one year: http://ecampus.oregonstate.edu/online-degrees/undergraduate/computer-science/

A forewarning, though: to some, these types of degrees have a stigma precisely because they are most often used by programmers who come 'late to the game', so to speak.

Bootcamps: These are intensive programming courses that usually last somewhere in the 2-3 month range, and the bootcamp will be pretty much your entire life during that time. The most well-known ones have gotten some positive press, and some even guarantee a job or your money back, but as a whole they're relatively new and it's hard to say anything concrete about them. Personally I think there's a lot of potential here, but I'd also be very careful about researching them if you're interested in participating in one.

Self-teaching: Online tutorials, books, reading forums and stackoverflow, and the newest addition to this area, free online classes ala Coursera or Udacity. These things take the least upfront investment, especially in terms of money, but can still lead to developing marketable skills, and the sheer amount of resources you can draw from to learn programming is immense.

The main drawback is that you need to be very self-motivated; in practice, most people who go this route don't make it very far (e.g. the average completion rate for MOOCs is tiny). Turns out learning a difficult subject without real live humans to get help from is hard! Those who go this route will also really need to go out of their way to prove they actually learned enough to be useful. A portfolio of sorts is pretty much required.

Reading Hacker News is a good idea for all types of developers, as it's basically the news site for programmers, but it's particularly necessary for people who are self-teaching since you won't have IRL contacts telling you about cool new stuff. Of course you can't read every single article that pops up there, but keeping tabs on it and doing a fair amount of reading about different languages, technologies, ways to prep for interviews, etc. is an excellent idea.

Oh, and remember:

down with slavery posted:

The idea of holding a "career" where you get raises that will compete with what you can get shopping around is long gone. They'd rather pay you poo poo for as long as possible and get their moneys worth than invest in to you long term.
Sad but mostly true. Be psychologically prepared to receive your pittance of a raise and then look around for greener pastures.

Cicero fucked around with this message at 21:08 on Sep 21, 2015

Adbot
ADBOT LOVES YOU

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.
- APPENDIX -

Useful Resources (includes inline links from above)

    Practice practice practice

  • Talentbuddy - a bunch of interview-esque programming challenges
  • Project Euler - a series of challenging math/CS problems that starts easy and gets hard
  • CareerCup - the company that makes "Cracking the Coding Interview"
  • Topcoder - a site about programming competitions
  • CoderByte - Small programming challenges organized into 3 difficulty bands
  • CodeKata - A popular series of programming exercises

    Interview prep

  • ABC: Always Be Coding -- How to Land an Engineering Job. - A guide to becoming an expert coding interviewee
  • Get that job at Google - How to get a job at Google or similar companies
  • Choosing a Programming Language for Interviews - How to pick a language to use for interviews
  • FizzBuzz: A Classic Programming Test - The quintessential programming test. Note that many CS upperclassmen or even new grads are somehow incapable of solving this in an interview context.
  • Big O Cheat Sheet - A quick review sheet of Big O for common data structures and algorithms
  • Big O in Plain English - A useful beginner's summary of Big O for those of you without a formal CS education.
  • Glassdoor: Interviews - Anonymous user data on interviews with different companies

    Interviewing Books

  • The Algorithm Design Manual - The gold standard in learning how to construct algorithms.
  • Cracking the Coding Interview - This is the primary recommended book for interview preparation. An older, smaller edition is available as a free pdf
  • Elements of Programming Interviews - Kind of like "Cracking the Coding Interview: Advanced Edition"; doesn't talk as much about the interview process, but has more depth and breadth in its technical problems to work through.
  • Programming Interviews Exposed - The previous recommended interview prep book

    Negotiation

  • Glassdoor: Salaries - Aggregated user data for job salaries
  • Salar.ly - Salary data from H1B Visas
  • Salary Negotiation for Engineers - A guide for negotiating
  • Salary negotiation when you have no leverage - A guide for negotiating when your position is weak
  • The Open Guide to Equity Compensation - A pretty exhaustive guide to stock options/grants hosted on Github.

    Bootcamps

  • Bootcamps.in - A bootcamp listing
  • Programming Bootcamps - Quora questions about bootcamps

    Online courses

  • Codecademy - Courses based on simple, interactive exercises in the browser
  • Coursera - More traditional feeling online classes that follow a college-esque schedule
  • Udacity - Kind of in between Codecademy and Coursera, no set schedule
  • edX - As far as I can tell, Coursera's less popular brother
  • Udemy - Like Udacity, but way more courses and costs money

    Degrees

  • Oregon State Online CS Post-bacc second bachelor's - Can be done in 1, 2, or 3 years
  • Master's of Applied CS, University of West Georgia - Doghouse sez:

    quote:

    It's great so far, very challenging. It's 2 years, including summers, all online, no prereqs, and relatively inexpensive.
  • Master's in CS, University of Rochester - Coca Koala sez:

    quote:

    I just completed a MsC in CS at the University of Rochester, in upstate NY. My previous CS experience was an intro Java class, and a course on discrete mathematics. So I knew the basics of programming, the basics of computational theory, etc, but literally the most complicated data structure I knew about going into the program was an array; I was essentially starting from Ground Zero.

    I focused on Systems for my degree, but I could have also focused on theory, AI, robotics, HCI, or a few other concentrations. My advisor was great and very supportive, as was the rest of the faculty.

    The degree is 30 credits minimum, and I completed it in three semesters plus the summer class. Other people who entered the program at the same time as I did expanded their Program of Study out to four semesters, which obviously would have eased my workload a bit.

    Terminal masters get a lot of flack for basically being the product of degree mills, but I'm currently happily employed in the Bay area, and I can directly attribute that to the stuff I learned in getting my degree.
  • Master's in CS, Stevens Institute of Technology - Good Will Hrunting sez:

    quote:

    After realizing that I was miserable being a corporate police officer, I looked for a local school to supplement the CS core courses I had taken in undergrad (Information Systems major). At the time I was just messing around with JavaScript and PHP, and planned on going to school to learn more about web programming.

    Eventually I found Stevens Institute of Technology in New Jersey. They require CS core courses, but are pretty good about accepting equivalent versions from other schools. There are a ton of courses offered and some even have online versions. Most of them were really great and involved hands-on, practical projects. Some were bad, but I was so interested in them I was okay with spending the time outside of class and harassing my teachers with any questions I had. (If you are interested in this program, PM me and I'll gladly pick out exactly what you should take).

    I got enough of a background from that coursework to land the job I'm starting now. While I'm obviously not making as much as major tech companies pay, I'm getting compensated pretty well for my career path and they're giving me tons of room to grow. It was a pretty expensive school, but one of the less picky programs in the area as far as prerequisites go.

    Feel free to pm the relevant goons if you want some more insight into their degrees.

Example Resumes
(Disclaimer: these resumes are decent or better, but not perfect. You can ask about resume help in this thread, but you may also want to consider consulting an expert like that resume guy)

USSMICHELLEBACHMAN: PDF
Cicero: PDF, DOCX (note that Dropbox's doc viewer doesn't handle docx too well)
Someone's fiance: PDF, DOCX
astr0man: PDF, LaTeX
aBagorn: PDF

Random Resume Tips
  • Your resume should be attractive. Often goons will post resumes here that make me want to throw up. I get the impression that some think that only the content matters. No! You want it to look nice too. Nice and professional. Look at the example resumes for ideas.
  • Don't use Times New Roman. There are plenty of non-terrible fonts around.
  • Use indentation. I mean c'mon, we're programmers. We know how to indent subsections of things. You don't have to go completely overboard and have like 5 levels, but you definitely don't want 1.
  • Don't use more than one kind of bullet point. It looks awkward.
  • Be specific without being wordy. "Developed a program in Java" is bad, but so is spending three paragraphs on text on how you developed it. Better is "Developed an Android app with a Google App Engine backend that helps bloggers connect with their Facebook fans." (you'd also probably want a sentence or two about 'support' development tasks like how you wrote unit tests for it)
  • Leave out skills that either no one cares about or everyone expects a programmer to have, like Word or Powerpoint.
  • Don't go over one page when you're still a junior-level developer (DISCLAIMER: May not apply to places that are not the US). Once you have more than a few years experience, you can start thinking about whether a second page is necessary to contain your many glorious accomplishments.

*** Goon Mentors ***

Helpful goons that can help you out, because let's face it Timmy, you're desperate. PM them to seek their guidance (click the usernames).

listed in thread postcount descending order

"Ithaqua posted:

Experience: .NET/C# development, all things ALM (SCM, Agile, DevOps), TDD, unit testing, former interviewer
Ask me about : All of the above! I've done several .NET-centric mock interviews, helped people get started with TDD and unit testing, and done code reviews.
Location: NYC metro area

"Cicero posted:

Experience: Google, Amazon, Goldman Sachs (internship), Java, Android
Helps with: Phone screens, resumes, anecdotes, pretty much anything
Location: Silicon Valley; Previously Seattle, a bit of NYC

"shrughes posted:

Experience: LaTeX, C, C++ (NOT C/C++, that's not a language!), LaTeX
Ask me about : the LaTeX master race, how to get into a good rhythm of alternately giving good advice and pissing everyone else off, doing real programming, emacs (the only true editor), hardcore database stuff
Location: The only worthwhile area for coders to live in: SF Bay Area

"Strong Sauce posted:

Experience: Worked at a big corporation and two startups. Javascript, Ruby, Backend Web Development
Helps with: Resumes, anecdotes, salary
Location: San Francisco. Previously Los Angeles, Orange County, Dublin (Ireland)

"bonds0097 posted:

Experience: Automation, Security, Java, Android
Helps with: Resumes, interviews, work situations/anecdotes.
Location: State College, PA (I work remote)

"pr0zac posted:

Experience: Facebook, Y-Combinator, Apple, Python, C++, C, Ruby
Helps with: Phone screen/interview prep (I interview people regularly and have opinions® about it), startup related ?s, anything else, terrible for resume help
Location: San Francisco

You can also access LIVE synchronous gooncoder chat right here.

Data structures and algorithms for interviews

You should know the basics of: linked lists in their various forms (singly-linked, doubly-linked, stacks, queues, deques), arrays and array-based lists, trees (particularly binary search trees), graphs, sets, maps/hashes/dictionaries (these all mean the same thing), and hashtables.

As far as algorithms you should know offhand, sorts are the most common one. You should know a couple simple O(n^2) sorts like bubble/insertion/selection, and the major average-case O(nlogn) sorts: heapsort, mergesort, quicksort. ESPECIALLY quicksort.

How can you come to know these things? Implement them all in your language of choice. Then google around for problems that use them, and code up solutions. Look at the Big O Cheat Sheet when you need a bit of review.

Cicero fucked around with this message at 07:18 on Jan 13, 2016

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Lumpy posted:

An addition to your "Outside Experience" list: Contribute to (or start) an open source project.

Very cool thread, by the way.
Added this to the OP, created an Appendix in the second post.

I considered adding stuff for a couple other posts to the OP, but it seems like if I just added every single piece of posted good advice to it that'd be kind of silly. I dunno, maybe I'll change my mind. If anyone thinks I should add something to the OP and says so specifically though I'll probably do it.

Grey_Area posted:

Math PhD stuff
I don't know a whole lot about your situation, but I do know that many of the bigger software companies have research arms, for example: Microsoft, IBM, Google. And I know Microsoft's requires a PhD; I'd imagine it'd at least be a big plus at other places, if not a requirement. In fact, I just looked at Microsoft Research's site and they have a Cambridge location. However, I'd imagine that they'd still want you to have at least a moderate level of coding ability, as well as have decent, specific experience in some sort of computer science field (as opposed to "I am good at theory/algorithms in general").

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Grey_Area posted:

Ok, thanks. I'm not sure I'm being particularly naive. The one job I applied for seemed ideal, but like I said I failed the technical tests. I put it down to excessive stress, but even if it was incompetence or stupidity I got to the last round of interviews so at least had a reasonable shot at getting the job. And that started you on £30k with really good benefits and required no experience at all. And IBM also require no experience for software development jobs, while paying a bonus to people with PhDs in any mathsy/engineering subject. I was hoping there might be other companies with similar starting positions.
Is £30k a good salary there? Seems pretty low to me for a Math PhD (apparently it's equivalent to ~$46k), but maybe it's different in the UK?

Grey_Area posted:

Yeah, that's fair enough. The "technical tests" assumed no specific knowledge of anything related to computers, so that's not why I failed them. I intend to learn more, but I'm not going to be able to learn a massive amount in three months while simultaneously writing up a PhD. I'm not that bothered about getting paid a lot, but I assumed low paying jobs would involve lots of drone work and little development. I'd be happy to be proved wrong, though. I guess "nah, you're hosed" might be good advice, but I'll keep looking for now.
If you really almost made it all the way through, by all means, continue. You'd definitely be opening a lot of doors if you had some more coding ability, though.

EDIT: Since you're a math PhD, You might also want to ask around about jobs in the grad school megathread in SAP.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

tef posted:

I've seen graduate jobs as low as £15k. 30k is a pretty good starting salary.
Interesting. Is there something significantly different with the UK's economy that causes starting salaries to be lower than in the US? Payscale seems to have Math PhDs making somewhat more in the US even in academia, and industry jobs are generally known for paying much more.

Grey_Area, ever considered moving to the states? :)

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Jick Magger posted:

This thread could not have come at a better time. I just graduated with a CS degree, and I'm going through the process of getting me resume spruced up. I'm absolutely terrified, but excited because I'll (hopefully) get to do something besides IT crap now.

In the OP you mention knowing how to analyze run-times and similar things for algorithms. My algorithm analysis class was taught by a mumbling Chinese man who couldn't speak English to save his life (the class started with 5 people, ended with me and one other guy :C) So needless to say, I never REALLY learned much about the subject.
Where could I brush up on that?
Big-O is a pretty basic/fundamental CS concept, so if you google it I'm sure you can find a bajillion different explanations of the subject. If I were you I'd look at Wikipedia and the CS websites of well-known colleges.

quote:

And, how important is it really to an interview? (I guess that depends on the company)
Big-O complexity is probably the most fundamental thing to understand for interviews besides just being able to code in general. I believe it's come up in the vast majority of interview questions I've had. Luckily the basic idea is actually very simple, so it shouldn't be difficult to teach yourself. Here's a super simple example:
code:
public void doSomething(int[] arr)
{
    int n = arr.length;
    for (int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            // some simple array operation happens here
        }
    }
}
What's the Big-O complexity/running time of the above method? Answer: O(n^2), aka quadratic running time. But why?
Explanation of answer: The outer loop obviously executes 'n' times. For each time the outer loop executes, the inner loop ALSO executes 'n' times. So if 'n' was 5, when i = 0 in the outer loop, the inner loop will execute with j = 0, j = 1, j = 2, j = 3, and j = 4. Then when i = 1 in the outer loop, the inner loop will again execute 5 times. And so on for i = 2, i = 3, and i = 4. So total running time with 'n' = 5 is (5 * 5).

As 'n', the length of the array, gets larger, the running time of the method will increase quadratically. If the size of the array doubles, the running time will increase fourfold. If it triples, the running time will increase ninefold.

tef posted:

Might be things like universal healthcare and different taxation
I was assuming these salaries were pre-tax, since that's how people report them in the US. If you're talking post-tax salaries then that's a totally different story.

wolffenstein posted:

Are MS interviews as bad as the rumors say?
The ones I had were pretty much the same as at other companies. Couple of regular data structure/algorithm questions, one game theory algorithm question, one multi-threaded code question from a super-smart PhD guy. I did fine except for the last one, I need to brush up on control structures. Still got an offer, though. :)

frightened goat posted:

Also, are there any good books/textbooks/resources out there that I can read up on to fill in the gaps in my CS knowledge, plus not come off as a relative schmuck in interviews?
The interviewing book itself is probably a good resource. Obviously it's not comprehensive but it should help you understand what things companies expect you to know, and thereby lead you to other sources.

Cicero fucked around with this message at 00:41 on Jan 1, 2011

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

shrughes posted:

It's O(n^3), right?
No. As I posted in the spoilered answer, it's O(n^2). Why do you think it's O(n^3)?

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

shrughes posted:

Because there exists a number x such for n > 0, for all inputs of length n, the running time is less than or equal to x*n^3?
I think that statement is true, but wouldn't it also be true for x*n^2? When I said that the array operation was simple I was trying to imply that it would be a constant time operation, so with a double loop around it, the whole method should just be quadratic. You have me second-guessing myself here but I really don't see where you're coming from.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

shrughes posted:

I am simply sperging about the meaning of big O notation. Any function that is O(n^2) is also O(n^3).
Ok, I guess. Generally when people are talking about the Big-O running time they mean the lowest valid running time.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Sefar posted:

MS Interview Stuff
Why did you interview in person 3 separate times?

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Enderzero posted:

So to sum up: you're a glorified factory worker here for one task, please be passionate about the limited area we have slotted you into until we outsource the technical side because it's a commodity
That's the hyper-cynical way of thinking at it, yes. How is what he said different than the attitude of basically any company? Do other companies not hire people to accomplish specific tasks, or not care whether new hires can work with others?

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Enderzero posted:

I guess my point is you are starting to sound like a boss and not a worker - and part of being a boss nowadays is finding ways to undifferentiate workers. Who cares about your soft skills when the eventual goal is make you replaceable? It's probably because this is a thread about getting a job and interviewing, but the onus here is placed completely on tech workers to improve their skills to work around others' failings. I don't see anyone (not just in this thread) saying companies should eliminate waste and inefficiency, organize a company better, or cut executive pay. The narrative is all "how to make yourself attractive to companies" and no "how do we change society to make businesses work better and more fairly". "Build your brand!" will only work for so long when there are no jobs because everyone caved to corporate culture.
People do say these things (especially the one about executive pay), but in D&D, not here. If you'd actually stop and think about it, the reason is obvious: each individual can control and improve their own skillset, and part of that could be reading and discussing on the internet about how to improve. On the other hand, discussing how to make organizations as a whole more efficient or suggesting the cutting of executive pay is, unless you're a bigshot yourself, completely ineffectual.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Enderzero posted:

Yeah, thanks, I did think about it, that's why I wrote this:
"It's probably because this is a thread about getting a job and interviewing"
Exactly, so if you realized it, why are you complaining in this thread?

quote:

If you'd actually stop and read, it would have been obvious.
I did, and I was amazed that you continued.

quote:

You are correct, though, the biggest part of changing those situations can mostly be done by bigshots, but not even discussing it in the general society is one way to ensure nothing will change. If the news does a story about job retraining, have some balance mentioning that jobs wouldn't need to be cut in the first if companies were organized better; Build support for limiting executive pay instead of allowing republican focus group language to convince everyone that if we do that, then you won't ever get rich! (you won't get rich anyway) Stuff like that.

Allowing only one narrative means we will move in that direction by default.
I think this would be fine as a topic in CoC if you were talking about software/tech companies, but yeah it's sort of outside the scope of this thread.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

tef posted:

this is good advice.
What sort of questions do you feel are good for figuring this out? I mean if you ask them, "How do you like working here?", the response basically always amounts to, "Oh it's awesome in seven different ways". How do you get a real feel for what the company is like?

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.
Good news, everyone!

quote:

CareerCast rated 200 jobs based on income, working environment, stress, physical demands and job outlook, based on data from the Labor Dept. and U.S. Census and researchers' own expertise.

Software engineer overtook last year's top job, actuary, which fell to No. 3, behind mathematician. The rise was mainly due to a robust hiring outlook, attributable in part to the rising popularity of social media and mobile applications, said Tony Lee, publisher of CareerCast and JobsRated.com. Last year, software engineer placed second.
Take that, actuaries!

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Kilauea posted:

Do I need to be concerned that my computer science program at my university is not ABET accredited? Should I transfer to a different university?

Also, about the aforementioned 3.0+ GPA, do businesses tend to look at what classes you took? I've had to retake some classes and am wondering if they will see that I did poorly in the past and that it will hurt me.
Some do. I failed almost my entire first year of college, but the grades got over-written when I retook the classes and so my official GPA is excellent now. Most places just look at your resume for your GPA, which has worked fine for me. But, when I did applications for Google, they required a full transcript and I think this is probably why I just got a rejection email.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Cyrik posted:

Has anyone taken the Berger Aptitude for Programming Test? Any advice?
I took an aptitude for programming test last year as part of a job interview. I think it was Berger, but can't remember really well. If you have at least a couple classes worth of programming experience already, you will find the test incredibly easy. I (and the other CS dudes) would finish each section in half or less of the allotted time. The questions were just really basic programming stuff in a simple, made-up language.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

2banks1swap.avi posted:

Posted at the request of the OP:
If you have a specific domain you want to work in, then pick your language (and framework if necessary) based on that. If you want to work close to the metal, do C/C++; general application development, C++, Java, or C#; mobile development, Java or Objective-C (+ frameworks); web development, too many to count really but at the very beginning do HTML, CSS, and Javascript.

But the thing is, locking yourself down right now probably isn't the best idea, as you may not really know what you want. So I'd just pick whatever language suits your fancy, practice doing something useful in it, do well in your classes and try to do some internships or part-time work.

I don't imagine your age will be a big deal, but then again I'm not a recruiter.

EDIT:

There is also more good news for us CS folk, as average starting salaries have gone up to 63k!

quote:

Curriculum

Average
Salary Offer

Chemical engineering
$66,886

Computer science
$63,017

Mechanical engineering
$60,739

Electrical/electronics & communications engineering
$60,646

Computer engineering
$60,112

Industrial/manufacturing engineering
$58,549

Systems engineering
$57,497

Engineering technolgy
$57,176

Information sciences & systems
$56,868

Business systems networking/telecommunications
$56,808
http://www.naceweb.org/Press/Releases/Top-Paid_Majors_for_the_Class_of_2011.aspx

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

2banks1swap.avi posted:

Well well, talk about motivation!
Along the same lines, today while I was busily playing Starcraft 2, got an email from a guy at Intel telling me that they'd seen my resume and that they'd like to interview me for a position. I think I might have sent Intel my resume, like, several months ago, but didn't really think much of it. This isn't the first time a company has contacted me out of the blue to invite me to either interview or apply for a position, either, and I'm not even one of those super-genius CS super-stars that was writing self-balancing BSTs in middle school.

It's quite a stark contrast to most other majors right now where most people are still desperately applying for a job, any job. I mean, I don't even have any real work experience (depending on whether you count the internship). If the job market is this good right now, I can't imagine what it will be like in a few years when the unemployment rate isn't some horrible number.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

2banks1swap.avi posted:

To be brutally honest the stability and vibrancy of the job market is the biggest motivator ever. It's not that I wouldn't enjoy it, but the fact that I know I could get paid well enough to retire young, have hobbies before I retire, and a good life as opposed to instability and being stressed is very, very positive.

Though now I wonder if I should bother learning too much right now on the side. Would I pick up bad habits like some say?
As long as you're not the type to get horribly stuck in your ways, I'd say learning more now's benefits vastly outweigh the negatives. Keep in mind that while a CS program will teach you the basic of programming, there's a lot more to software development than just the basics, and CS is (usually) geared more toward theory than practical application. Learning things beyond the basics would be very useful, especially if you do it in such a way that you have an end product of some sort that you can point to as evidence. Good fodder for interviews.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.
I don't know much about security, but check out this post: http://forums.somethingawful.com/showthread.php?threadid=3303022&pagenumber=10#post390112048

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Melted_Igloo posted:

Average starting salary is an incredibly bad measure, careerwise
(I mean one that spans 20+ years)

In actuallity you want to start with the lowest average salary, beacuse it means youre more likely to get an actual job (lower demand) versus being unemployed forever
:psyduck: What? This makes no sense. Why would you want a job in a field with low demand, and more importantly, why would low demand increase your odds of getting a job? Are you seriously suggesting that if nobody cares about your skill set, that makes you LESS likely to be unemployed?

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Melted_Igloo posted:

More demand for a specific type of skill (say COBOL), does not equate to more jobs

Very unlike the usual demand/supply economics that everyone is taught
You must be using a very different definition of demand than everyone else then. Whenever I read about "demand" for a job/skillset in the news, it is used to mean "lots of companies want people who can do X." Sure there are some situations where there are high salaries but few jobs, but those are exceptions, not the rule (high salaries for some athletes because it's a field where it's only worthwhile if you're the very best, some high salaries for COBOL programmers because it's something that is gradually becoming obsolete, but is still important in the short-medium term).

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Piss Man 94 posted:

2banks1swap.avi you're being a big old nerd about this. Starting salary means gently caress all.
Except that it doesn't. Starting salary isn't everything, but it's one indicator of healthy job prospects.

The Reaganomicon posted:

Connections determine where you get a job. The job you get there determines the amount of cashmoney you will acquire. Unless you're an autistic shutin or a poor that went to a degree mill, your connections will matter more than your Hot poo poo Quotient.

I mean, as a guy who supposedly did the research, I'm amazed you missed all of the loving nepotism.
Connections doesn't necessarily mean nepotism. Without relying on personal knowledge, that means you have to go by how well someone comes across in interviews and what their resume says. Connections, on the other hand, could easily mean "I've worked with this guy before and he knows his stuff." If you were hiring, were you prefer to hire someone that you know nothing about except what his resume says and what he said in the interview, or someone you've worked with before?

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Shitpost Gaze posted:

2banks1swap.avi, are you Flux_core? Because you act almost exactly like him.
This isn't true at all, 2banks doesn't make references to Marxism or the unfairness of capitalism everywhere.

quote:

2b1s you seem like a huge annoying dick and i would never want to work with you
2banks suffers from an affliction that I happen to share: when people already understand the gist of your point and think you're an idiot, continuing to explain will not convince them regardless of how sound your reasoning is, and will only cause them to think that your opinion is dumb AND that you're annoying. In this sort of situation, even if you were to get someone to concede some point (which is unlikely), they would resent you for it. It is a lose-lose situation.

Personally I think this debate is silly because both sides are right: nearly everyone in a field is affected by general trends, and being exceptionally skilled can help you rise above the fray. It might be worth it to discuss this sort of thing more in BFC or D&D, but CS as a field is strong enough to where anyone competent, hard-working, and reasonably socially-skilled doesn't have much to worry about if they're just concerned with financial stability.

Melted_Igloo posted:

Er what? where the heck do you live?

Theres like 3 IT firms where I live, and they arent hiring anybody without 15 years experience or something ridiculous
Well as one sign, MS recently announced pretty much across-the-board raises and changes in compensation from stock to cash: http://blog.seattlepi.com/microsoft/2011/04/21/steve-ballmer-changes-coming-to-microsoft-employee-compensation-reviews/

Google, of course, announced across-the-board raises back in November. Obviously that's just two companies, but they're big enough to where this will probably put pressure on other companies to match or at least get somewhat closer. They wouldn't be increasing pay if getting good talent was easy, that's for sure.

Cicero fucked around with this message at 08:39 on May 9, 2011

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Ithaqua posted:

The technical assessment part of the interview was equally unimpressive. I was asked 3 things:
1) Write an algorithm to reverse a string on the whiteboard. This is actually a good interview question; I ask the same thing when I'm interviewing folks.

I think I blew the guy's mind on this one; I used the LINQ Reverse() method.
I had to explain what LINQ was to the interviewer, which led to an explanation of extension methods, which led to him asking me to do it again, the "normal" way.

2) Make a class "A" with a constructor
3) Make a class "B" and have it inherit A.

I'm 99% sure I'm going to get an offer, and I'm 100% sure I'll be politely refusing.
If that's what they ask senior devs, what do they ask the junior ones? "Please write a program that outputs 'Hello, world!' to the screen."? So sad.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Theler posted:

When is the right time for a future CS grad to start sending out resumes? For example if I was graduating in December and looking to start a job in January would applying for jobs during August/September be considered too early?
I graduated in April and started looking in September.

Edit: As in, the September before graduation.

Cicero fucked around with this message at 16:58 on May 27, 2011

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Theler posted:

When is the right time for a future CS grad to start sending out resumes? For example if I was graduating in December and looking to start a job in January would applying for jobs during August/September be considered too early?
Let me try a more descriptive answer. I think 2 semesters is probably the earliest you'd want to try to get a full-time job directly (obviously this doesn't include offers from internships/part-time work). If that's too early for some companies, they'll probably let you know. Starting to look for work after graduation certainly doesn't seem wise, although if you have good interview skills and a strong resume, the market is good enough now to where you'll probably be fine.

Also keep in mind that since the majority of people graduate around May/June, the big companies that hire new college grads in waves will be oriented around that schedule.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

His Neutralness posted:

I just graduated and I made the mistake of going to college in a city that has somewhere in there range of 2-3 software companies, and also I don't really want to live here regardless. Are many companies, besides extremely large one's like Google, willing to fly people out for interviews? I can't imagine many would for entry level positions. Would I be better off just moving to somewhere with jobs and then looking?
There are a lot of big software companies (or other big companies that have lots of devs). Off the top of my head, you got MS, Google, Apple, Amazon, Adobe, IBM, and Intel. Plus the big bank/finance places like Goldman Sachs, BoA, JPMorgan Chase, etc. Unless you were implying that you don't want to work for a big company?

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

HondaCivet posted:

From what I've been reading, in this economy, companies generally aren't going to bend over backwards for you unless you have a lot of experience/skills that they need. Unless you are really something special, why would they fly you in when they've likely got tens, maybe hundreds of local grads with about the same experience as you who can show up for an interview next week for free? It sucks but it makes sense. If I were you I'd just save up 6-12 months' living expenses and move first.
Another thing you could try is getting a big company to fly you out for an interview, and then interview with other companies while you're there. I did it (albeit not really on purpose) and it turned out great (although the company I interviewed on the side was also large).

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

His Neutralness posted:

I'm not opposed to it, I just figured that they're very competitive and I shouldn't depend on getting a job at MS or Google.
They try to be as competitive as possible, but the bottom line is that there are a LOT of big companies that are either pure tech, or view tech as a core component (finance), and all of them want to hire "the best of the best" when it comes to new grads. Well, there simply aren't very many of those, and half of them are going to grad school anyway. So those big companies have to hire who they can get. Which is us. :)

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Pram posted:

Yes I realize programming certs are useless but I was mostly curious if it has any value as resume fodder. Probably not though I'm guessing.
Some software engineers from Google visited my school for a recruiting session, and straight up said that putting certs on your resume would pretty much disqualify you automatically from the running.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.
Has anyone heard about this? Excerpt:

quote:

Launched less than a year ago, GILD is a site for computer programmers and other tech professionals that combines social gaming with job search and career advancement. Programmers from around the world can see where they stack up against each other in skills like Java, HTML, C++. They can enter free contests for prizes like iPads, or take free certification tests and amass medals that showcase their skills to colleagues and potential employers.

Most users view GILD as a professional development/social networking service. But it’s also a provider of soft recruitment. Companies like Oracle, Salesforce.com (CRM), eBay sponsor competitions on the site. And recruiters can use a back-end system to comb the database for users who are top performer in a range of difference skills.

While companies like LinkedIn are focused on tackling the recruiting problem from the lens of “Who do they know?,” GILD is tackling the problem by answering a different question—”What do they know?”
Sounds sort of gimmicky, but I like the idea of recruitment being geared more toward real code/design skills and content mastery rather than strictly networking and interview skills.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.
Joking is good if you can pull it off and your interviewers appear to be normal humans. Just don't overdo it, and if a joke falls flat, don't look all embarassed; pretend it never happened and keep on truckin'.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Pweller posted:

^^^

I need advice about asking for a significant raise. I have a student term position ending very soon, and am expecting to be sat down to discuss whether I'd be interested in a fulltime position any day now.

I am somewhat interested in staying only if I get a fairly significant pay raise since I'm not really working on the types of projects I've been developing myself for... basically they think of themselves as a tech company but... aren't really as much as an advertising/media company. How do I verbalize this without sounding dickish and/or putting them on the defensive? I'm being paid decently for a student, but I am worth more... I have several other offers for work... but telling people this seems dickish. How can I present my case reasonably? Have a baby on the way in a few months and my days of messing around for 'experience' are behind me.

Pweller posted:

Okay. I'm getting super uncomfortable since they're grooming me for stuff... this would be so much easier if everyone had agents or whatever as mediators.
You do work, they pay you for it. The fact that they're "grooming you" is irrelevant if their pay sucks and will continue to suck. The place I did an internship at was more or less grooming me to work on a certain team, but their full-time offer was horrible, so I took the offer that was 2x as much. I would go something like, "As I approach graduation I've been considering my career options for full-time work, and I've been given offers that are considerably better in the area of compensation." If they don't give you a comparable offer, leave.

Also, it sounds like maybe you're not putting your skills to the best use there? If the type of work you're doing won't look good on a resume, that's another factor to consider.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

TasteMyHouse posted:

Quicksort isn't O(n*log n). It's O(n2)
I thought it was O(n^2) in the worst case but O(nlogn) in the average?

edit: Wikipedia confirms. Also in order to get the worst-case scenario you either have to have data explicitly designed to screw with quicksort or have astronomically terrible luck.

Cicero fucked around with this message at 16:59 on Aug 21, 2011

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

iam posted:

I'm soon to be applying for developer roles after finishing a one year MSc in CompSci, and whilst we covered sorts etc in algorithms, all this talk of algorithms is making me :psyduck:

I'd call myself quite a competent Java developer, but ask me to implement a sorting algorithm off the top of my head in an interview and I'll probably just break down there and then
Was your BS in CS as well? I can't imagine being having a BS and MS in CS recently and being afraid of implementing any sorting algorithm on the spot.

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

No Safe Word posted:

Like 95% of other job titles with Engineer in them have some sort of certification that they have to achieve.
Source? My dad is an electrical engineer who designs ICs, I'm pretty sure none of the engineers in his field care about being a "professional engineer." At least, I never heard any mention of this exam before from him, and he talked about his work and schooling quite a bit.

Cicero fucked around with this message at 22:24 on Aug 23, 2011

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.
The number of data structures and algorithms you're expected to have memorized isn't really huge; let's see for data strucutres, I'd guess there's arrays, linked lists, hash tables, array-based lists, maps, binary search trees, heaps. More difficult and important is knowing the how and why behind those data structures and algorithms.

Adbot
ADBOT LOVES YOU

Cicero
Dec 17, 2003

Jumpjet, melta, jumpjet. Repeat for ten minutes or until victory is assured.

Sab669 posted:

I think the big reason why it's unnpaid is because it's a small startup company that hasn't actually rolled out its first product commercially. They're in the final stages of development, they say, and are looking to hire on a few more hands for when it goes live basically.

Whether that's a valid reason for it to be unpaid or not isn't for me to say, I guess. I too was hoping for at least $15/hr :(

And in general, internships / entry-level positions seem rather scarce in here Rhode Island.
If you're gonna work unpaid, might as well work for yourself making iOS or Android apps or something.

Pweller posted:

Does the US not have some sort of subsidy for hiring students/new grads in tech roles? I would think there'd be all kinds of grants with all the 'omg we need STEM students' I've been reading about...

I'm pretty sure the following is accurate, or at least close,
in Canada (perhaps this is a provincial-level thing), employers can apply get $9-10/hr towards internship/co-op students which they're supposed to bump up to at least something like $16-17/hr, and I think they can also get $25k towards new grad salaries, possibly dependent on if it's a startup or not.
The norm is definitely for CS internships to be paid, usually quite well (the top tier places seem to pay around $30/hour or so).

quote:

e: US dept of labour says unpaid internship is legal only if a for-profit employer isn't getting work of any immediate benefit to them (ie. a waste of both your time)
http://www.dol.gov/whd/regs/compliance/whdfs71.pdf
Criteria for legal unpaid intern:
1. The internship, even though it includes actual operation of the facilities of the employer, is similar to training which would be given in an educational environment;
2. The internship experience is for the benefit of the intern;
3. The intern does not displace regular employees, but works under close supervision of existing staff;
4. The employer that provides the training derives no immediate advantage from the activities of the intern; and on occasion its operations may actually be impeded;
5. The intern is not necessarily entitled to a job at the conclusion of the internship; and
6. The employer and the intern understand that the intern is not entitled to wages for the time spent in the internship.
Yeah everyone ignores this for some reason.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply