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
putin is a cunt
Apr 5, 2007

BOY DO I SURE ENJOY TRASH. THERE'S NOTHING MORE I LOVE THAN TO SIT DOWN IN FRONT OF THE BIG SCREEN AND EAT A BIIIIG STEAMY BOWL OF SHIT. WARNER BROS CAN COME OVER TO MY HOUSE AND ASSFUCK MY MOM WHILE I WATCH AND I WOULD CERTIFY IT FRESH, NO QUESTION

Fortuitous Bumble posted:

How accurate are the salary ranges you see posted on some listings on Stack Overflow, AngelList, etc? I tried to research average salaries for similar positions in the same area on Glassdoor, but the numbers from Glassdoor are a little lower than even the minimums I've found on listings that advertise salary ranges and I'm not sure why.

If the minimum is different to what you're seeing on listings, maybe there's a subtle difference in the titles. What are you specifically searching for?

Adbot
ADBOT LOVES YOU

teen phone cutie
Jun 18, 2012

last year i rewrote something awful from scratch because i hate myself
Man this sucks. I’m waiting on responses from a few different companies, and after waiting a week to reach out to them, I basically got the same response - “sit tight. We’re pretty busy with the holidays”

I know it’s busy season but I want a new job NOW :smith:

Pollyanna
Mar 5, 2005

Milk's on them.


Grump posted:

Man this sucks. I’m waiting on responses from a few different companies, and after waiting a week to reach out to them, I basically got the same response - “sit tight. We’re pretty busy with the holidays”

I know it’s busy season but I want a new job NOW :smith:

I know the feeling of wanting a new job and getting antsy over it, but if it's at all possible to save the major changes in job hunting until after the New Year, it might be for the best. I've changed jobs twice during the holiday season and both times has been a huge pain in the rear end with all the travel and accommodations and schedule fuckery. :(

Mr. Crow
May 22, 2008

Snap City mayor for life
Cross-posting from the Oldie thread as this one always seems like more of the Resume/job-hunting thread...



Can I get some critiques on my resume? Some of the wording in my current job feels a little weird but I'm not sure how else to covey some of the information.

Also can't decide if I should shrink it to one page, beef up the current job a bit to make two pages more appreciable, or leave it as is (since it's the start of a new own section, and it's mostly the buzzword filter).

Thanks!

B-Nasty
May 25, 2005

Mr. Crow posted:

Can I get some critiques on my resume? Some of the wording in my current job feels a little weird but I'm not sure how else to covey some of the information.



Overall, I think this resume is pretty solid (note: I didn't proofread it intently.) One suggestion might be to add some form of 'title' that describes what you are/want to be. For example, your most recent role involved a ton of DevOps responsibilities. At places that draw a distinction, do you want to keep doing that exclusively, or do you want to stick to pure development?

I would also potentially move skills above experience, so someone can get a quick rundown of what you bring to the table. This is probably even more important if those skills get kicked to page 2 due to the break.

I also don't think 2 pages is a problem. You did a good job of condensing the bullets for older jobs to avoid wasting space on stuff that happened more than 5 years ago.

Mniot
May 22, 2003
Not the one you know

Pollyanna posted:

I know the feeling of wanting a new job and getting antsy over it, but if it's at all possible to save the major changes in job hunting until after the New Year, it might be for the best. I've changed jobs twice during the holiday season and both times has been a huge pain in the rear end with all the travel and accommodations and schedule fuckery. :(

Unless your job has a PTO pool that rolls over each calendar year. Then you want to quit as close to Dec 31 as possible to maximize your vacation payout.

Mr. Crow
May 22, 2008

Snap City mayor for life

B-Nasty posted:

Overall, I think this resume is pretty solid (note: I didn't proofread it intently.) One suggestion might be to add some form of 'title' that describes what you are/want to be. For example, your most recent role involved a ton of DevOps responsibilities. At places that draw a distinction, do you want to keep doing that exclusively, or do you want to stick to pure development?

I would also potentially move skills above experience, so someone can get a quick rundown of what you bring to the table. This is probably even more important if those skills get kicked to page 2 due to the break.

I also don't think 2 pages is a problem. You did a good job of condensing the bullets for older jobs to avoid wasting space on stuff that happened more than 5 years ago.

Awesome, thanks for the notes!

CPColin
Sep 9, 2003

Big ol' smile.
I've got that second-round interview today and the more I learn about the position, the less likely it seems that I'm going to want to take it. I'm not sure how one email can say I'll be the only Java developer on the team, but still say they're looking for somebody "with leadership skills and potential to help advance our team and organization." Who would I be leading, if I'm the only Java developer?

So, like, I know my current job isn't going to hold my interest, because I can already feel my productivity slipping, after only four months, but it seems like such a bad bet to switch to a different job that I already suspect won't hold my interest. But I do only suspect, so maybe the roll of the dice is worth it? I would get to leave Visual Studio behind, which would be nice.

I suppose I should just do the interview, for practice, and worry about the rest if they happen to make an offer, right? I'm definitely going to ask a bunch of details about the team structure, though.

CPColin fucked around with this message at 17:28 on Nov 29, 2017

Pollyanna
Mar 5, 2005

Milk's on them.


CPColin posted:

I've got that second-round interview today and the more I learn about the position, the less likely it seems that I'm going to want to take it. I'm not sure how one email can say I'll be the only Java developer on the team, but still say they're looking for somebody "with leadership skills and potential to help advance our team and organization." Who would I be leading, if I'm the only Java developer?

So, like, I know my current job isn't going to hold my interest, because I can already feel my productivity slipping, after only four months, but it seems like such a bad bet to switch to a different job that I already suspect won't hold my interest. But I do only suspect, so maybe the roll of the dice is worth it? I would get to leave Visual Studio behind, which would be nice.

I suppose I should just do the interview, for practice, and worry about the rest if they happen to make an offer, right? I'm definitely going to ask a bunch of details about the team structure, though.

It’s probably boilerplate fluff that HR makes them include, but is worth asking about. I say do the interview and grill them about the details. And remember, every job sucks in some way - there’s always a little poo poo in the meat.

Vincent Valentine
Feb 28, 2006

Murdertime

Just because they don't have java devs now, doesn't mean there won't be others in the future.

You may also be working in java, but part of a group of developers that are working on the same project.

Or, you're the only java dev on THAT project, but there are others they want you to work with, so that at the very least there is code consistency.

Just email and ask, honestly.

CPColin
Sep 9, 2003

Big ol' smile.
Yeah, I'm planning to ask who is going to be my support when I'm doing Java development. Like, whom I can ask about the architecture, standards, etc. If they say, "You're it!" then there's a problem.

Volguus
Mar 3, 2009

CPColin posted:

Yeah, I'm planning to ask who is going to be my support when I'm doing Java development. Like, whom I can ask about the architecture, standards, etc. If they say, "You're it!" then there's a problem.

I'd see it as a challenge. In the end, you're gonna make the standards and probably the architecture. But ask, at least you know what they're all about and then you can make an informed decision.

CPColin
Sep 9, 2003

Big ol' smile.
The answer to the "Who is my support?" question was "The outgoing developer, whose contract is winding down." which isn't the best I've heard. Anyway, I mentioned that most of the frustration at my current job is with being the sole developer who can work on my backlog and not being able to get what I need in order to get things done. I think we all understand each other on that point, so it remains to be seen whether they think my other answers were good enough. I think I redeemed myself a little by acted interested in mentoring interns.

Had to do a FizzBuzz for the first time. That was fun. Almost didn't check i % 15 == 0 first, but I noticed quickly and called myself out, so hopefully that scored some points.

Got another question that looked like this:

Java code:
public List<Farts> getAllFarts(HttpRequest request) {
   List<Farts> farts = new ArrayList<>();
   String manager = request.getParameter("manager");

   ResultSet rs = db.openConnection().executeQuery(
      "SELECT * FROM Fart WHERE Manager = '" + manager + "'");

   while (rs.next()) {
      int id = rs.getInt("id");
      Fart fart = new Fart(id);

      ResultSet rs2 = db.openConnection().executeQuery(
         "SELECT * FROM Poop WHERE Fart_ID = " + id);

      if (rs2.next()) {
         Poop poop = new Poop(rs2.getInt("length"));

         fart.poop = poop;
      }

      farts.add(fart);
   }

   return farts;
}
Then they asked what sort of problems I saw with the code and what tools I would use to diagnose them. I wanted to answer the second part with, "Uh, my eyes." but said, "My experience with encountering these problems. Also database monitoring."

Getting to talk to the outgoing developer about the poo poo on my GitHub being in Ceylon and what I thought of the language probably helped, too. But we'll see if they make an offer, or what.

Edit: Thanks, radium, for talking away the horizontal scroll bars on posts/code.
Edit2: Added the return statement.

CPColin fucked around with this message at 16:33 on Nov 30, 2017

Jose Valasquez
Apr 8, 2005

CPColin posted:

The answer to the "Who is my support?" question was "The outgoing developer, whose contract is winding down." which isn't the best I've heard. Anyway, I mentioned that most of the frustration at my current job is with being the sole developer who can work on my backlog and not being able to get what I need in order to get things done. I think we all understand each other on that point, so it remains to be seen whether they think my other answers were good enough. I think I redeemed myself a little by acted interested in mentoring interns.

Had to do a FizzBuzz for the first time. That was fun. Almost didn't check i % 15 == 0 first, but I noticed quickly and called myself out, so hopefully that scored some points.

Got another question that looked like this:

Java code:
public List<Farts> getAllFarts(HttpRequest request) {
   List<Farts> farts = new ArrayList<>();
   String manager = request.getParameter("manager");

   ResultSet rs = db.openConnection().executeQuery(
      "SELECT * FROM Fart WHERE Manager = '" + manager + "'");

   while (rs.next()) {
      int id = rs.getInt("id");
      Fart fart = new Fart(id);

      ResultSet rs2 = db.openConnection().executeQuery(
         "SELECT * FROM Poop WHERE Fart_ID = " + id);

      if (rs2.next()) {
         Poop poop = new Poop(rs2.getInt("length"));

         fart.poop = poop;
      }

      farts.add(fart);
   }
}
Then they asked what sort of problems I saw with the code and what tools I would use to diagnose them. I wanted to answer the second part with, "Uh, my eyes." but said, "My experience with encountering these problems. Also database monitoring."

Getting to talk to the outgoing developer about the poo poo on my GitHub being in Ceylon and what I thought of the language probably helped, too. But we'll see if they make an offer, or what.

Edit: Thanks, radium, for talking away the horizontal scroll bars on posts/code.

SQL injection is the thing about that code that stands out to me

B-Nasty
May 25, 2005

CPColin posted:

Then they asked what sort of problems I saw with the code and what tools I would use to diagnose them. I wanted to answer the second part with, "Uh, my eyes." but said, "My experience with encountering these problems. Also database monitoring."

That code looks like the kind of crap that ORMs encourage (N+1). Anyone that had a solid understanding of SQL would avoid the 2 problems here: N+1 and SQL injection nonsense, though at least the latter would probably be fixed by an ORM.

My answer would be that I require my devs to have a deep understanding of SQL.

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me
Not recognizing the language (looks a lot like C#, but that's not how most ADO.Net looks), I'd also be concerned the database connections aren't being closed.

The getAllFarts method shouldn't contain knowledge about how to construct a Fart, you shouldn't be reaching inside fart to set poop, either have a setter or more specifically make it part of the Fart constructor.

spiritual bypass
Feb 19, 2008

Grimey Drawer
Does Java need an explicit return statement or would it return the result of farts.add on the last run of the loop?

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



rt4 posted:

Does Java need an explicit return statement or would it return the result of farts.add on the last run of the loop?

Yeah it does. Guessing he just omitted it because of the carpal tunnel that Java users experience makes typing painful ;P

spiritual bypass
Feb 19, 2008

Grimey Drawer
It's probably another thing the interviewer wanted the candidate to notice. I guess they have several problems represented here including compilation errors, runtime errors, security hazards, performance hazards, and dubious software design practices.

CPColin
Sep 9, 2003

Big ol' smile.
Nahh, in that case, I just forgot to add it when transcribing from memory (editing it in now). They also left the parentheses off the second openConnection() call, but I didn't call them out on it, in case it was just a typo. The stuff I mentioned were the SQL injection, the query inside the loop, and the fact that the inner query selects all rows, but only cares about the first one that comes back. I didn't mention reusing the connections, wrapping the result sets in try-with-resources blocks, or explicitly closing the connections, because they were already satisfied with my first round of answers and moved on with the questioning.

I guess they thought it went okay, despite my trepidation at being the lone Java developer on the team, because they called two hours later and said they'd start contacting my references. Apparently I'm the "top candidate"! Maybe I'm the only candidate! :yotj:

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

CPColin posted:

Nahh, in that case, I just forgot to add it when transcribing from memory (editing it in now). They also left the parentheses off the second openConnection() call, but I didn't call them out on it, in case it was just a typo. The stuff I mentioned were the SQL injection, the query inside the loop, and the fact that the inner query selects all rows, but only cares about the first one that comes back. I didn't mention reusing the connections, wrapping the result sets in try-with-resources blocks, or explicitly closing the connections, because they were already satisfied with my first round of answers and moved on with the questioning.

I guess they thought it went okay, despite my trepidation at being the lone Java developer on the team, because they called two hours later and said they'd start contacting my references. Apparently I'm the "top candidate"! Maybe I'm the only candidate! :yotj:

Well, the selecting all rows shouldn't really be an issue, unless Fart_ID is not unique, and if that is the case, they have an even bigger issue with their whole Fart architecture.

Jose Valasquez
Apr 8, 2005

Skandranon posted:

Well, the selecting all rows shouldn't really be an issue, unless Fart_ID is not unique, and if that is the case, they have an even bigger issue with their whole Fart architecture.

Fartitechture

Stinky_Pete
Aug 16, 2015

Stinkier than your average bear
Lipstick Apathy

CPColin posted:

Had to do a FizzBuzz for the first time. That was fun. Almost didn't check i % 15 == 0 first, but I noticed quickly and called myself out, so hopefully that scored some points.


Hahaha what, why would you check for 15? Just append Fizz if three, append Buzz if five, append newline at the end of each iteration

CPColin
Sep 9, 2003

Big ol' smile.
You would check for 15 if you did it this way:

code:
if (i % 15 == 0)
   print("FizzBuzz");
else if (i % 3 == 0)
   print("Fizz");
else if (i % 5 == 0)
   print("Buzz");
else
   print(i);
I think as soon as I started writing on the whiteboard immediately, they all realized I was going to clear that lowest of low bars and stopped paying attention anyway.

qsvui
Aug 23, 2003
some crazy thing

Stinky_Pete posted:

Hahaha what, why would you check for 15? Just append Fizz if three, append Buzz if five, append newline at the end of each iteration

you tell 'em

Gildiss
Aug 24, 2010

Grimey Drawer
The real answer, if you want to impress, is you simply clone this repo.
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

Jose Valasquez
Apr 8, 2005

Gildiss posted:

The real answer, if you want to impress, is you simply clone this repo.
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

If you can't write that from scratch in a 30 minute interview may as well become a ditch digger

Pollyanna
Mar 5, 2005

Milk's on them.


I remember passing every part of an interview with flying colors except a 1hr section where they wanted me to make an entire feature/workflow-page from scratch. Apparently I didn’t work fast enough.

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

CPColin posted:

You would check for 15 if you did it this way:

code:
if (i % 15 == 0)
   print("FizzBuzz");
else if (i % 3 == 0)
   print("Fizz");
else if (i % 5 == 0)
   print("Buzz");
else
   print(i);
I think as soon as I started writing on the whiteboard immediately, they all realized I was going to clear that lowest of low bars and stopped paying attention anyway.

Checking for 15 does not scale well as a solution, your are relying on a pre-computed trick of math to check for FizzBuzz. If there were more than 2 words to check for, this would quickly look quite ugly. You are also using % more than is necessary, which is inefficient.

code:
var fizz=i % 3 == 0;
var buzz=i % 5 == 0;
if (fizz && buzz)
   print("FizzBuzz");
else if (fizz)
   print("Fizz");
else if (buzz)
   print("Buzz");
else
   print(i);
This approach only performs the modulus operator the minimum number of times (once per value), and is easier to expand to more numbers in an intelligible way. Further improvements to scalability would be to allow defining a config table of values & words to compare with.

If you want to improve performance, you can actually do even better with a dual counter system. This performs only using addition, no modulus.

code:
var fizz=1;
var buzz=1;

for (var i = 1; i < max; i++) {
	if (fizz == 3 && buzz == 5) {
		print("FizzBuzz");
		fizz = 0;
		buzz = 0;
	}
	else if (fizz == 3) {
		print("Fizz");
		fizz = 0;
	}
	else if (buzz == 5) {
		print("Buzz");
		buzz= 0;
	}
	else {
		print(i);
	}
	fizz++;
	buzz++;
}

Gildiss posted:

The real answer, if you want to impress, is you simply clone this repo.
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

My favourite is the following. I've not yet had a chance to write a proper service to generate seeds larger than 10 or so, but they must exist out there...

code:

/**
     * SEEDS: 1062344 works up to 10
     */
    export let RandomFizzBuzz: IFizzBuzzStrategy = (start, end, seed) => {
        let retVal: string[] = new Array(end - start + 1); // ignore this use of addition, getting pedantic...

        let rand = new Random(Random.engines.mt19937().seed(seed));
        for (let i = start; i <= end; i++)
            retVal[i] = RandomToFizzbuzz(rand.integer(1,4)) || i.toString();
        return retVal;
    }

export let FindSeed = (start: number, end: number) => {
        // get baseline for comparision
        let baseline = BasicModulus(start, end);
        let seed = 0;
        let outputInterval = 0;

        while (seed < Number.MAX_VALUE - 1) {
            let rand = new Random(Random.engines.mt19937().seed(seed));
            // generate 100 random numbers
            let arr = new Array(end - start + 1);
            // TODO: can optimize this to check numbers as they are generated, so can bounce out early on first failure
            for (let i = start; i <= end; i++)
                arr[i] = RandomToFizzbuzz(rand.integer(1,4)) || i.toString();

            if (compareArray(arr, baseline)) 
                return seed;
            if (outputInterval > 5000) {
                console.log("searching... " + seed);
                outputInterval = 0;
            }
            seed++;
            outputInterval++;
        }

        return null;
}

function RandomToFizzbuzz(num: number): string {
        if (num === 1)
            return "Fizz";
        if (num === 2)
            return "Buzz";
        if (num === 3)
            return "FizzBuzz";
        return null;
    }

Skandranon fucked around with this message at 06:01 on Dec 1, 2017

Snak
Oct 10, 2005

I myself will carry you to the Gates of Valhalla...
You will ride eternal,
shiny and chrome.
Grimey Drawer

Stinky_Pete posted:

Hahaha what, why would you check for 15? Just append Fizz if three, append Buzz if five, append newline at the end of each iteration

Yeah, why is this not the answer? What am I missing?

Is it because it then takes extra work to check if you should print the number?

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

Snak posted:

Yeah, why is this not the answer? What am I missing?

Is it because it then takes extra work to check if you should print the number?

Appending strings isn't much better as you end up having to special case if you print out the number (!=3 && !=5), and concatenating strings is not particularly efficient.

Snak
Oct 10, 2005

I myself will carry you to the Gates of Valhalla...
You will ride eternal,
shiny and chrome.
Grimey Drawer

Skandranon posted:

Appending strings isn't much better as you end up having to special case if you print out the number (!=3 && !=5), and concatenating strings is not particularly efficient.

Well I didn't think we were appending, we're just printing, right?

so you have something like
code:
divided = false;
if(i % 3 == 0){
	print(Fizz);
	divided = true;
}
if(i % 5 == 0){
	print(Buzz);
	divided = true;
}
if(!divided){
	print(i);
}
print(whatever your seperator is, linebreak, comma, etc)

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

Snak posted:

Well I didn't think we were appending, we're just printing, right?

so you have something like
code:
divided = false;
if(i % 3 == 0){
	print(Fizz);
	divided = true;
}
if(i % 5 == 0){
	print(Buzz);
	divided = true;
}
if(!divided){
	print(i);
}
print(whatever your seperator is, linebreak, comma, etc)


While this may solve the string appending issue, the divided variable is about as elegant as checking for 15, at least in my opinion. It does have the minimum number of % though, which is important.

Linear Zoetrope
Nov 28, 2011

A hero must cook
Trying to pursue elegance in fizzbuzz is just plain fraught. IME, every possible way of writing it has some aesthetic bit of weirdness that doesn't look quite right, but could be fixed by tweaking the code which makes some other part marginally more annoying to look at.

Snak
Oct 10, 2005

I myself will carry you to the Gates of Valhalla...
You will ride eternal,
shiny and chrome.
Grimey Drawer

Skandranon posted:

While this may solve the string appending issue, the divided variable is about as elegant as checking for 15, at least in my opinion. It does have the minimum number of % though, which is important.

yeah, I mean, the divided variable is ugly, but it's basically using a bit-flag rather than performing a whole additional comparison. Checking for 15 is a redundant operation, which is inherently less elegant than using a conditional flag to track the state.

Nippashish
Nov 2, 2005

Let me see you dance!

Snak posted:

yeah, I mean, the divided variable is ugly, but it's basically using a bit-flag rather than performing a whole additional comparison. Checking for 15 is a redundant operation, which is inherently less elegant than using a conditional flag to track the state.

There are two reasons for asking Fizzbuzz. The first is to filter out people who completely cannot code to save their life, and the second is to bait the tendency for this kind of pedantic bikeshedding.

The Fool
Oct 16, 2003


http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/

This is my favorite fizz buzz.

lifg
Dec 4, 2000
<this tag left blank>
Muldoon
What’s the worst bike shedding: FizzBuzz, tabs-v-spaces, or the pronunciation of gif?

Snak
Oct 10, 2005

I myself will carry you to the Gates of Valhalla...
You will ride eternal,
shiny and chrome.
Grimey Drawer

lifg posted:

What’s the worst bike shedding: FizzBuzz, tabs-v-spaces, or the pronunciation of gif?

Whether bikeshed should be one word or two.

Adbot
ADBOT LOVES YOU

CPColin
Sep 9, 2003

Big ol' smile.
I vote FizzBuzz, because it's the least consequential. Just barf up whatever implementation is the fastest, so you can get to a more interesting part of the interview, I say.

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