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
SAVE-LISP-AND-DIE
Nov 4, 2010

Pollyanna posted:

I don't dislike smaller places, but they need to be compelling. Smaller companies and startups need to first prove to me that their product or service is worthwhile and a good idea in the first place before I'll work there. I see a lot of startups out there with just plain pointless crap. Maybe I'm just picky.


Why? Smaller companies are great to work at.

Adbot
ADBOT LOVES YOU

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe

strange posted:

Why? Smaller companies are great to work at.

They can be great to work at. The variance is a lot higher compared to big companies. Small companies can be great, or they can be awful; big companies are mostly just :geno:

SAVE-LISP-AND-DIE
Nov 4, 2010

TooMuchAbstraction posted:

They can be great to work at. The variance is a lot higher compared to big companies. Small companies can be great, or they can be awful; big companies are mostly just :geno:

I agree with that. I don't agree with Pollyanna's notion that the variance in quality can be offset by how much you get behind the idea. If I really believed a startup's Uber For Cats I'd still be foolish for overlooking markers of a poor work environment. The two ideas exist independently.

Munkeymon
Aug 14, 2003

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



Pollyanna posted:

I'm gonna guess that most people aren't in my position by 3 years in. :sigh:

Can't speak to that - just how I stumbled into where I got.

quote:

I don't dislike smaller places, but they need to be compelling. Smaller companies and startups need to first prove to me that their product or service is worthwhile and a good idea in the first place before I'll work there. I see a lot of startups out there with just plain pointless crap. Maybe I'm just picky.

Established smaller companies are going to be less likely to evaporate out from under you, at least.

quote:

Luck got me here in the first place, I guess it's getting me everywhere else too.

The Terrible Secret of Success that Nobody Will Acknowledge is that it's mostly luck for everyone. That threatens the bullshit meritocratic self-delusion that most successful people in the US operate under, which is why they refuse to acknowledge it.

Pollyanna
Mar 5, 2005

Milk's on them.


Yeah, that's basically how it shakes out, to be honest. It's all luck in the end.

On the topic of senior vs. not-senior, are senior engineers expected to come up with design and architecture themselves, and to be driving a project's lifecycle/direction? What's the difference between a senior engineer and a team lead, or a senior engineer and an architect? Reason I ask is because this one posting for a senior engineer role says "you will work with your product manager to design software, then deliver with the support of our tech leads and architects [...] you will define the direction of the product", which is a little confusing. This sounds like a position that doesn't involve "taking the reins" as much as I'd expect a senior level position to have; is this out of the ordinary?

At this point I'd rather just take the straightforward path re: am I senior or not. As far as I'm concerned, if my job title says senior, then I'm senior. :shrug:

The March Hare
Oct 15, 2006

Je rêve d'un
Wayne's World 3
Buglord
All of this poo poo varies from company to company, there is no definition of senior. As an example of how incredibly stupid titles are, pretty much everyone in sales is a Sr. Godking VP of Sales because you don't want your clients to think you are sticking them with the new guy. In software, senior usually means 'you know what you are doing more than this jr guy that you maybe mentor sometimes, maybe not, but you probably arent a manager (but maybe you are!)'. Team lead implies that you are leading a team. Are you responsible for product direction and decisions? Maybe. Depends on the corporate structure, but you've probably at least got a few people below you who you actively manage.

I've got 3 yearsish professionally under my belt but I'm in a "jr." role at my company because its run by a bunch of old dudes who recognize that calling everyone senior is stupid as hell. But in my "Jr." role I have made product decisions, I have built new services from the ground up for our platform, I have made architectural decisions and am often consulted by our "Sr." developers when they need help with things that they think I am better at or more knowledgable than them on - just as I consult them in the same way.

Don't get wrapped up in what title bucket you fall into. If you're reasonably within the HR requirements (don't apply for Director or C-level positions with 3 years of experience, etc.) then just apply for whatever looks interesting and clarify what your responsibilities would be in the interview.

The March Hare fucked around with this message at 21:21 on Jul 31, 2017

kitten smoothie
Dec 29, 2001

Doghouse posted:

I'm applying for a job at a company in NYC but I live in St Louis, they say you can workremote or in the NYC office and that half the team works remote. In this type of situation, are they going to try to offer me a St Louis salary, or a NYC salary? I have 3 years experience.

Depends on if they think they can get away with it. If they're advertising a position, they have budgeted for it. If they are willing to hire an employee physically located in New York then the budget for that open req is obviously going to be for a New York salary.

Anecdata time: I live in St. Louis and my current job is with an NYC-based company, as was my job prior to this one. They didn't flinch about paying NYC money.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe

Munkeymon posted:

The Terrible Secret of Success that Nobody Will Acknowledge is that it's mostly luck for everyone.

The greatest predictor of success is prior success, including e.g. having successful parents.

The only reason that luck isn't a greater predictor is because luck is definitionally unpredictable.

Brain Candy
May 18, 2006

TooMuchAbstraction posted:

The greatest predictor of mediocre coasting success is prior success, including e.g. having successful parents.

ftfy

Regression to the mean is real, strong and my friend.

lifg
Dec 4, 2000
<this tag left blank>
Muldoon
Some smart goon whose name I've stupidly forgotten wrote this about titles. These are my favorite descriptions of what each one should mean. (But like March Hare said, titles can be really arbitrary at times. Shoebuy.com used to call all programmers "senior", because of some reason with the then-parent company I think.)

quote:

Junior -- can't deliver features without oversight

Regular -- delivers features with no guidance

Senior -- delivers projects with no guidance, output aligns with team goals

Lead -- delivers a team with little guidance

Architect -- delivers cohesive technical output from eng teams

VP -- delivers a cohesive organizational structure.

Pollyanna
Mar 5, 2005

Milk's on them.


That seems about right to me. Senior is my current goal, being able to deliver things without having to be guided. I need to be in an environment that fosters that kind of growth, though...

Had another strange experience with a recruiter who seemed to not really have any idea what it is I actually did. He found me on LinkedIn, yet had to ask me what technologies I worked with and what my background was, and ultimately gave me a job description for a place that does something very different from what I currently do (tech didn't quite match up). As a result, he said that he wanted me to change my resume around - said that three bullets per job was too little for a resume, and said that I should put down more information on stuff like requirements gathering, documentation, etc. that was tailored specifically to the job description. I've heard stories of recruiters changing people's resumes and stuff, and wondered if this was an attempt at accomplishing that. He generally seemed really disappointed that my resume didn't match exactly what the company he was working with were looking for and honestly, that's kind of his problem for not bothering to research properly, not mine.

I don't really have a good perspective yet on what's acceptable feedback and changes from recruiters and the like. Is stuff like this considered a red flag? I was a little put off by his feedback and reaction to my resume (did he not even look at my loving profile/experience?), so I'm not entirely sure about working with him - and the job seems like it could go either way.

I also have a gap in my resume, from late 2012 (when I graduated) to late 2014 (when my employment experience begins). I was told that it looked bad and that, and to be quite honest that time was spent being useless at my parents' home and working on an online degree I really had no interest in. Since I never finished that degree and I spent late 2012 to mid 2013 failing to get a job at all, I never bothered to fill out those years. How much does it gently caress me up to have that gap? I would have expected that to be superseded by my recent employment history by this point.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
Gaps in work history only matter for places that are probably bad to work. Places that tend to be good prioritize whether you can do a job well without being a terrible person to others. So focus upon relevant technical contributions and achievements until you're senior and above.

PIZZA.BAT
Nov 12, 2016


:cheers:



Recruiters are generally scum and should be treated as such. The moment they demonstrated that they hadn't even bothered to even look over your resume you should have hung up on them. Adding a 'gently caress off' before you hang up is up to you.

Seriously. Your time is valuable. You shouldn't give a second more to anyone who demonstrates they don't care about yours.

Pollyanna
Mar 5, 2005

Milk's on them.


Yeah, it's been very...sketch. I kind of disagree with how recruiting/job hunting works these days, you need way more information about a place than the job's experience requirements to tell if it's a position that works for you or not. Recruiters won't even tell me what companies they're hiring for half the time, until I drag it out of them! :shepicide:

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
One thing you can and should be doing, Pollyanna, is working on your development yourself. Yes, ideally you should be in an environment where you have people who know more than you that you can learn from. But that environment doesn't have to be at work. You can learn from online communities (e.g. hang out in Caverns of COBOL threads about things you find interesting), open-source projects, and working on your own personal projects as well. My own work history has five years of working as the only developer for a university lab; there sure wasn't anyone I could learn good software design principles from there.

It really feels like you're hanging way too much of your future on finding a workplace that will help set you up for the Perfect Job. You have more control over your life than you act like you do.

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

TooMuchAbstraction posted:

It really feels like you're hanging way too much of your future on finding a workplace that will help set you up for the Perfect Job. You have more control over your life than you act like you do.

This x1000. You'll never find this magical employer you seem to be envisioning. While it may sound counter-intuitive, the more active role to you take in improving yourself, the more you will find yourself in an environment conducive towards that goal. You don't find heaven and then prosper, you prosper, and then find yourself in heaven.

Pollyanna
Mar 5, 2005

Milk's on them.


strange posted:

I agree with that. I don't agree with Pollyanna's notion that the variance in quality can be offset by how much you get behind the idea. If I really believed a startup's Uber For Cats I'd still be foolish for overlooking markers of a poor work environment. The two ideas exist independently.

That's what I was trying to say - size affects but is not end-all-be-all for a company's quality and success.



TooMuchAbstraction posted:

One thing you can and should be doing, Pollyanna, is working on your development yourself. Yes, ideally you should be in an environment where you have people who know more than you that you can learn from. But that environment doesn't have to be at work. You can learn from online communities (e.g. hang out in Caverns of COBOL threads about things you find interesting), open-source projects, and working on your own personal projects as well. My own work history has five years of working as the only developer for a university lab; there sure wasn't anyone I could learn good software design principles from there.

It really feels like you're hanging way too much of your future on finding a workplace that will help set you up for the Perfect Job. You have more control over your life than you act like you do.

And I recognize that, I really do. It's just that programming/software isn't something that's a major part of my non-professional life, so I rely on my job/workplace to grow. Which, yeah, might not be a good idea...I just don't feel a pull to any particular tech, field, or open-source project that would take the place of professional development.

I guess that's what I'm missing. If I treat it as an extension of my career, that makes sense.

asur
Dec 28, 2012

Pollyanna posted:

I also have a gap in my resume, from late 2012 (when I graduated) to late 2014 (when my employment experience begins). I was told that it looked bad and that, and to be quite honest that time was spent being useless at my parents' home and working on an online degree I really had no interest in. Since I never finished that degree and I spent late 2012 to mid 2013 failing to get a job at all, I never bothered to fill out those years. How much does it gently caress me up to have that gap? I would have expected that to be superseded by my recent employment history by this point.

You can remove the graduation date if you think this is actually an issue.

curufinor
Apr 4, 2016

by Smythe

Pollyanna posted:

That's what I was trying to say - size affects but is not end-all-be-all for a company's quality and success.


And I recognize that, I really do. It's just that programming/software isn't something that's a major part of my non-professional life, so I rely on my job/workplace to grow. Which, yeah, might not be a good idea...I just don't feel a pull to any particular tech, field, or open-source project that would take the place of professional development.

I guess that's what I'm missing. If I treat it as an extension of my career, that makes sense.

meet people in fleshy fleshy flesh
open source projects are way fleshier than they are supposed to be ideologically
meaning, it's like actual real life buddies and poo poo who collab half the time

Doghouse
Oct 22, 2004

I was playing Harvest Moon 64 with this kid who lived on my street and my cows were not doing well and I got so raged up and frustrated that my eyes welled up with tears and my friend was like are you crying dude. Are you crying because of the cows. I didn't understand the feeding mechanic.

kitten smoothie posted:

Depends on if they think they can get away with it. If they're advertising a position, they have budgeted for it. If they are willing to hire an employee physically located in New York then the budget for that open req is obviously going to be for a New York salary.

Anecdata time: I live in St. Louis and my current job is with an NYC-based company, as was my job prior to this one. They didn't flinch about paying NYC money.

Cool

fantastic in plastic
Jun 15, 2007

The Socialist Workers Party's newspaper proved to be a tough sell to downtown businessmen.
What's the tech scene like in Los Angeles? I'm talking with a company there, but a lot of Google search results are puff pieces about Oculus & Snap.

Rudest Buddhist
May 26, 2005

You only lose what you cling to, bitch.
Fun Shoe
Pretty great! West side has your smaller series-A companies (and snap). Playa Vista has the bigger companies (Yahoo, YouTube, Google). The valley has the Fortune 500 stand-bys (CBS, Medtronic, Garmin).

Live close to work so your commute is < 20 min.

metztli
Mar 19, 2006
Which lead to the obvious photoshop, making me suspect that their ad agencies or creative types must be aware of what goes on at SA
Had a great interview at a place that fits my goal for next job - small team, small and profitable org, great product, interesting problems, some new and some familiar tech, solidly in a senior role, and a good commute.

They did a mix of discussing past projects, looking at a couple of toy projects to point out issues/areas for improvement, and then going through how I would handle various scenarios. No trivia past some super basic poo poo from the screener. The senior team members are all actual adults, it was just great.

A civilized way to interview and I felt like I got a good feeling for the team and job. Hiring manager said he liked me and unless the one other candidate left to interview blows me out of the water, they'll offer by end of this week or first of next.

Now I just need to keep myself from mentally checking out of my current job. :ohdear:

Pollyanna
Mar 5, 2005

Milk's on them.


Nice. You still came out on top of me, considering they didn't have you whiteboard out a full solution to Game of Life. I'm going to track down an easier way of doing that that doesn't involve a loving 2D array :suicide:

Volguus
Mar 3, 2009

Pollyanna posted:

Nice. You still came out on top of me, considering they didn't have you whiteboard out a full solution to Game of Life. I'm going to track down an easier way of doing that that doesn't involve a loving 2D array :suicide:

What's wrong with a 2d array for this? I just read about the "game" and a 2d array would be my first pick as well after a minute of thought.

After 2 minutes of thought, maybe a linked list? The elements would store the coordinates? The only elements that change are the ones around the last ones who changed?

Volguus fucked around with this message at 01:07 on Aug 2, 2017

Pollyanna
Mar 5, 2005

Milk's on them.


Volguus posted:

What's wrong with a 2d array for this? I just read about the "game" and a 2d array would be my first pick as well after a minute of thought.

After 2 minutes of thought, maybe a linked list? The elements would store the coordinates? The only elements that change are the ones around the last ones who changed?

Good question! It ultimately depends on your needs and what's easier to code for, for example whether you need to save space or whether you get horribly confused trying to coordinate your dumb rear end into properly indexing into a 2D array. In fact, this is something that's most properly done by experimenting at the terminal and with your language and compiler of your choice, and NOT A loving WHITEBOARD

Just loving give it to me as homework at that point, dammit. Also, supposedly a hash is an easier data structure if you have a low on-to-off value ratio.

lifg
Dec 4, 2000
<this tag left blank>
Muldoon

Pollyanna posted:

Nice. You still came out on top of me, considering they didn't have you whiteboard out a full solution to Game of Life. I'm going to track down an easier way of doing that that doesn't involve a loving 2D array :suicide:

All you need is a bunch of (x,y) tuples representing live squares. (Saw that solution in a Python video. I've always gone for the 2D array too.)

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


Pollyanna posted:

Had another strange experience with a recruiter who seemed to not really have any idea what it is I actually did.

I got a message from a recruiter today looking to fill a mechatronics position. I don't really do that sort of thing, or anything even remotely like that.

Pollyanna
Mar 5, 2005

Milk's on them.


lifg posted:

All you need is a bunch of (x,y) tuples representing live squares. (Saw that solution in a Python video. I've always gone for the 2D array too.)

True...that said, that makes it easy to determine which live squares should continue to live or die. How do you calculate which dead squares should come to life?

ultrafilter posted:

I got a message from a recruiter today looking to fill a mechatronics position. I don't really do that sort of thing, or anything even remotely like that.

They've been on my rear end about front-end positions since I've been on our React-based relaunch team this year, and put a bunch of React-Redux stuff on my resume/LinkedIn.

Also one of them asked me out for coffee. I dunno if that's a recruiter thing or what.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
2D array is easiest, and absolutely what I would have gone for. Tuples would let you simulate a sparse array, which is probably more memory-efficient for Life since most cells are empty most of the time, so it's not an awful idea to know how that works for followup questions. But definitely keep it simple for the first solution, especially since it doesn't affect asymptotic complexity.

Pollyanna
Mar 5, 2005

Milk's on them.


TooMuchAbstraction posted:

2D array is easiest, and absolutely what I would have gone for. Tuples would let you simulate a sparse array, which is probably more memory-efficient for Life since most cells are empty most of the time, so it's not an awful idea to know how that works for followup questions. But definitely keep it simple for the first solution, especially since it doesn't affect asymptotic complexity.

I always do 2D array at first too, I just find it annoying to code for (doubly so on a whiteboard, I just don't code linearly like most people do).

Volguus
Mar 3, 2009
Hmm, a hash is a great idea, since you always know what coordinates could be affected by the last operation. Good to know if anyone will ask me in the future.

lifg
Dec 4, 2000
<this tag left blank>
Muldoon

Pollyanna posted:

True...that said, that makes it easy to determine which live squares should continue to live or die. How do you calculate which dead squares should come to life?

Create a new counting hash. Calculate the neighbor tuples for each existing tuple, increase the count for each neighbor tuple in the hash. At the end, keep anything in the hash with a count of 2 or 3, throw out the rest. That's your new generation.

It ends up a clever map/filter operation.

Pollyanna
Mar 5, 2005

Milk's on them.


lifg posted:

Create a new counting hash. Calculate the neighbor tuples for each existing tuple, increase the count for each neighbor tuple in the hash. At the end, keep anything in the hash with a count of 2 or 3, throw out the rest. That's your new generation.

It ends up a clever map/filter operation.

drat, that's pretty good. I had thought of the hash method when they mentioned size being a concern, but didn't have time to think through the larger ramifications before time ran out.

Also, I really wish people would be explicit about whether interviews are multi-hour long affairs vs. something along the lines of 30 minute phone calls - this one turned from the latter to the former with a single email and I didn't find out until I got there.

Mniot
May 22, 2003
Not the one you know
For board-like problems, I like representing each square. So:

code:
struct square {
  struct square *n;
  struct square *ne;
  struct square *e;
  struct square *se;
  struct square *s;
  struct square *sw;
  struct square *w;
  struct square *nw;
  bool state;
  bool next_state;
};
or better:

code:
struct square {
  struct square[8] neighbors;
  bool state;
  bool next_state;
};
The annoying part for me when whiteboarding is navigating around a 2d board. By constructing it this way, I can defer most of the boring code to the board setup function and hopefully convince the interviewer that I'm good before I have to slog through that part.

I think a 2d array is not a great representation, because that's the view of the board but these problems are typically having you write the model and control code and ignore the view. Using a 2d array gives you a harder problem to code, but unfortunately these types of problems secretly rely on some domain-knowledge to solve well.

For example, you may enjoy looking at Norvig's Sudoku solver and how he represents the board. It's a lovely solution, but I feel like "being an expert in AI programming" was the main ingredient.

Pollyanna
Mar 5, 2005

Milk's on them.


Making them objects was another option, but for some reason I felt like that was more overhead than was necessary. I'm not sure how.

Is that the Sudoku solver from 7 Languages in 7 Days? I liked that book.

The Laplace Demon
Jul 23, 2009

"Oh dear! Oh dear! Heisenberg is a douche!"

lifg posted:

Create a new counting hash. Calculate the neighbor tuples for each existing tuple, increase the count for each neighbor tuple in the hash. At the end, keep anything in the hash with a count of 2 or 3, throw out the rest. That's your new generation.

It ends up a clever map/filter operation.

I first saw this approach in a Clojure implementation, looked something like this:
Lisp code:
(defn tick [living-cells]
  (let [environs (fn [[x y]]
                   (for [dx [-1 0 1]
                         dy [-1 0 1]]
                     [(+ x dx) (+ y dy)]))
        lives? (fn [[cell population]]
                 (if (contains? living-cells cell)
                   (#{3 4} population)
                   (#{3} population)))]
    (->> living-cells
         (mapcat environs)
         frequencies
         (filter lives?)
         keys
         set)))

(nth (iterate tick #{[0 0] [0 -1] [0 1]}) 1002)
Pretty easy to play with exotic rulesets too.

The March Hare
Oct 15, 2006

Je rêve d'un
Wayne's World 3
Buglord

Mniot posted:

For example, you may enjoy looking at Norvig's Sudoku solver and how he represents the board. It's a lovely solution, but I feel like "being an expert in AI programming" was the main ingredient.

Every time I read anything by Norvig I feel both inspired and ashamed, feels weird man.

Doctor w-rw-rw-
Jun 24, 2008

Pollyanna posted:

Also one of them asked me out for coffee. I dunno if that's a recruiter thing or what.

Yes it is a thing, but it's not automatically not weird, depending on how creepy they actually are over coffee.

Adbot
ADBOT LOVES YOU

lifg
Dec 4, 2000
<this tag left blank>
Muldoon
I loved my last interview. It was one soft skills segment, two technical segments, and lunch with my potential boss. The tech segments started on the whiteboard and then moved to actually programming the solution on a laptop. Each tech segment was an hour and a half.

It's easily the best interview format.

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