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
luchadornado
Oct 7, 2004

A boombox is not a toy!

BlackMK4 posted:

To come full circle on this, they called me back and I did a two hour technical interview with a staff engineer there. Everything went super well, I made sure to touch on how I set up something similar to their tech stack on my own time and went into some of the issues I faced, what I didn't like, what I liked, etc.

I always keep at least one fun, esoteric repo in my public GitHub for this reason. Yes, I've been working with "enterprisey" JVM/Postgres/Kafka for years now. But look at this Rust/Scylla/Sled abomination that uses Lua as a dynamic config language.

Adbot
ADBOT LOVES YOU

biceps crimes
Apr 12, 2008


BlackMK4 posted:

edit: after doing the math, it'd be a $5k/yr loss to go over there after figuring benefits, I don't think it is worth countering

I don’t think switching employers is ever worth a lateral comp or a cut. The only time I’d consider it is if my current employer was awful or I was going from some hybrid/100% in office role to fully remote

BlackMK4
Aug 23, 2006

wat.
Megamarm

luchadornado posted:

I always keep at least one fun, esoteric repo in my public GitHub for this reason. Yes, I've been working with "enterprisey" JVM/Postgres/Kafka for years now. But look at this Rust/Scylla/Sled abomination that uses Lua as a dynamic config language.

Thanks, that is a really good idea. :)

bi crimes posted:

I don’t think switching employers is ever worth a lateral comp or a cut. The only time I’d consider it is if my current employer was awful or I was going from some hybrid/100% in office role to fully remote

This is pretty much my feeling. I don't hate it where I am now and WLB is exceptional, but there is the looming issue of being acquired by VC in December and not knowing exactly when things will shift heavily.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
I've been having to deal with a terrible ... "CI/CD" system and it's brought out the worst in me.

So first you git push to master, which isn't guarded, because hooray. Something is polling master that then builds the thing. if it doesn't build, you get emailed every few minutes about it failing to build until the HEAD changes and you're not on the hook; whoever then broke it on HEAD or used your broken poo poo is on the hook. Naturally, you add an email rule to throw out these emails, just like everybody else. This is part one.

Part two is a continuous regression system that takes that build collateral and runs it continually on different configurations of multiple versions of different software all using the same thing from part one that could be complete poo poo garbage at any given time.

So I come in Monday dealing with a failure in my code that I fixed and it's time to try it. It still didn't work. It didn't work all week until we figured out somebody had pushed garbage in an adjacent project that was screwing everything up. We had to revert that, wait for it to build and deploy, and then wait for it to propagate in continuous regression. My stuff continued to fail until I realized my personal build environment also needed to be refreshed to undo the broken code. I figured that out EOD today, on Friday. A full week on this poo poo.

When I first started working in tech as an intern, I wound up in these lovely systems and my first real job was in another one. I'd get chastised for all the times I'd screw something up "trivial" while neck-deep in these kinds of environments. I've decided as a middle-aged man that all these people yelling at me are the real assholes and the only engineering they're doing is to optimize the ability of somebody to gently caress it all up.

The problem is that in between all this is 30-40 minutes of compilation--and a reboot since this involves a bunch of kernel-level code. So that's time that I really should use to task switch and just do anything else. But of course that means I'm not just sitting there hitting F5 over and over on the continuous regression or just starting at my build to wait for it to finish. And I naturally lose track of what I'm doing and cause some unforced errors along the way. I've decided that I've seen this enough and I've also seen environments that actually work to know this isn't my fault anymore and I'm not really an idiot for not being sooooo diligent with these systems. After all, some other rear end in a top hat was the one that screwed it all up in the first place.

I've also worked in an environment that blocked merging to master until the change built, passed tests, and was completely built (and theoretically ready to deploy) and had around a two-hour turnaround. It could have been better, but you had a lot of confidence in what you did if it passed all that.

Also, nobody looks at my code reviews.

Edit: I'm going to just start merging in Rust code.

Xarn
Jun 26, 2015
Probation
Can't post for 2 hours!
But why? Who set this up and thought "yup, this is it"? How did your coworkers not riot yet?

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
If something breaks, it is not the fault of the breaker for not being diligent enough. It is the fault of the system for not detecting and rejecting the break before it could do any damage.

luchadornado
Oct 7, 2004

A boombox is not a toy!

Xarn posted:

But why? Who set this up and thought "yup, this is it"? How did your coworkers not riot yet?

Stockholm Syndrome? A lot of devs have high thresholds for dumb poo poo.

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


Xarn posted:

But why? Who set this up and thought "yup, this is it"? How did your coworkers not riot yet?

Move fast and break things.

The March Hare
Oct 15, 2006

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

Rocko Bonaparte posted:

Edit: I'm going to just start merging in Rust code.

this is a very good idea

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

Xarn posted:

But why? Who set this up and thought "yup, this is it"? How did your coworkers not riot yet?

REEWDASOC

Random Electrical Engineer Who Did A Semester Of C.

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.

luchadornado posted:

Stockholm Syndrome? A lot of devs have high thresholds for dumb poo poo.

It's this. My current org is neck deep in nonsense across a number of vectors. I blame the CTO and eng directors for all of it, but they're also the group I need to convince things both need to change and how to change them (if they knew both of those things, we likely wouldn't be where we are).

If anyone wants to try to fix things in a bananas environment, focus on one thing at a time. Start with the thing that has the most obvious impact to velocity or that everyone is already grumbling about. It's much easier to just walk away, so also consider that unless there are clear reasons to stick around.

spiritual bypass
Feb 19, 2008

Grimey Drawer
Fix one thing to create a good story to tell in your upcoming interviews, then hit da bricks

Achmed Jones
Oct 16, 2004



BlackMK4 posted:

To come full circle on this, they called me back and I did a two hour technical interview with a staff engineer there. Everything went super well, I made sure to touch on how I set up something similar to their tech stack on my own time and went into some of the issues I faced, what I didn't like, what I liked, etc.

CTO calls me a few days later and says that the team is still worried about the tech stack gap and how where I currently work now is fairly silo'd compared to their extremely (super extremely) collaborative environment. I say, "okay, thanks for the feedback" and he says he will call me back the next day (today) to let me know if they are making an offer. Seemed like setting the precedence for a lowball offer to me.

Today he calls back and offers me less than my current salary even after I'd been straight up with him about what I make and what it'd cost for them to hire me, says they leveled me at senior engineer and they start all of their engineers at the lowest end of their applicable pay band and do 15%/yr raises.

Good experience, but kind of a funny waste of time for both the company and I when I was very clear about salary expectations from the very start. I'm learning.

edit: after doing the math, it'd be a $5k/yr loss to go over there after figuring benefits, I don't think it is worth countering

if the position otherwise looks good, and they're willing to write the 15% raises thing in hiring paperwork (at least the first couple years' worth?), and they're OK to offset the first year's loss with a fatter signing bonus, maybe it's worth it?

or not idk :shrug:

asur
Dec 28, 2012
There's no harm in countering in a quick email. Thank them for interviewing you and the offer but that $X is the minimum amount it would take for you to switch companies. If you would accept a signing bonus of $Z and a guaranteed 15% raise after one year then you can add that as an alternative. I would still try to push the TC though, that statement that every engineer starts at the bottom of the band if either a lie or the company is garbage.

In my opinion, I wouldn't switch for less than 15-20% unless there's a specific reason as there's risk that the new employer or manager sucks.

Hadlock
Nov 9, 2004

Never switch for less than 20%

Especially right now with inflation and how tight the labor market is for companies trying to hire

15-20% was probably good advice three years ago, right now 20% should be your floor unless you're certain you're getting canned in the next quarter or two

Hadlock
Nov 9, 2004

Is being at a company when it goes public (IPO) worth anything on the job market, assuming you were there long enough to have an impact. How do you phrase something like that on your resume? Is "took company public" even worth putting on your resume? Maybe pre-series A companies get excited about that kind of stuff

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


Write about the work you did and the effect it had.

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.
"Got acquired" gave me a whole slew of projects to talk about and new integration hurdles to embellish in interviews.

take boat
Jul 8, 2006
boat: TAKEN

Hadlock posted:

Is being at a company when it goes public (IPO) worth anything on the job market, assuming you were there long enough to have an impact. How do you phrase something like that on your resume? Is "took company public" even worth putting on your resume? Maybe pre-series A companies get excited about that kind of stuff

having a recognizable company name on your resume is probably the most cachet you can expect from the IPO itself, unless you're a founder, CFO, or in an otherwise notable individual role. early stage companies do like to talk about the pedigree of their team though, so the name recognition counts for something

Mniot
May 22, 2003
Not the one you know

Hadlock posted:

Is being at a company when it goes public (IPO) worth anything on the job market, assuming you were there long enough to have an impact. How do you phrase something like that on your resume? Is "took company public" even worth putting on your resume? Maybe pre-series A companies get excited about that kind of stuff

Yes, early start ups like to hear that you’ve been part of a success. They’re always bragging about how many start-ups the CEO has successfully exited, and mirroring that same type of brag back is good.

I don’t think anyone else would care unless it’s about something you did as part of the IPO. Like, if you did a lot of work with lawyers as part of the filing then that could be a good story about how you work with non-engineers and on regulatory stuff.

wins32767
Mar 16, 2007

It’s valuable for startups because you know what a successful company feels like. A whole bunch of early phase people have never actually been part of a success and don’t know what product/market fit is like and how to handle growth. The more people who you have at a company that have been at a successful scaling startup when you start to scale, the less horribly painful bumps you’ll get hit because hopefully you’ll say things like “our build system is awful, let’s fix that” or “why is everyone in the company making changes to these three methods every day, shouldn’t we refactor?”.

Heavy Zed
Mar 23, 2013

Is there anything here I can swing from?
Hey all, I'm looking for some career advice. To break down my basic situation I got an associate's degree in computer programming back in 2006 and not long after got my first programming job. I did software dev work full time until 2013 when I got laid off in the middle of a lot of personal poo poo that led to a long period of depression where I did not work outside of some very sporadic volunteering. I have a non-programming job now that I've been at a few years and I'm not bad at but to be frank it sucks and it doesn't even really pay the bills. I'd like to try getting back into coding for a living but my skills are out of date and I'm just kind of unsure what the best direction is for getting back in. If at all possible I'd like to get a work-from-home job because *gestures at everything*. I feel kinda like I'm just hosed but I'm throwing this out there in case someone has some good ideas. Thanks.

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.

Heavy Zed posted:

Hey all, I'm looking for some career advice. To break down my basic situation I got an associate's degree in computer programming back in 2006 and not long after got my first programming job. I did software dev work full time until 2013 when I got laid off in the middle of a lot of personal poo poo that led to a long period of depression where I did not work outside of some very sporadic volunteering. I have a non-programming job now that I've been at a few years and I'm not bad at but to be frank it sucks and it doesn't even really pay the bills. I'd like to try getting back into coding for a living but my skills are out of date and I'm just kind of unsure what the best direction is for getting back in. If at all possible I'd like to get a work-from-home job because *gestures at everything*. I feel kinda like I'm just hosed but I'm throwing this out there in case someone has some good ideas. Thanks.

Almost everything is remote now, or negotiable to being remote.

Grind leet code, set up interviews.

kayakyakr
Feb 16, 2004

Kayak is true

leper khan posted:

Grind leet code, set up interviews.

Grind leet code.

Learn your way around one of: React, Vue, Go, Python, depending on your specialty.

Apply for SEII type roles.

If you had a tech specialty and it's still around, then go ahead and catch up on the 8 years you've missed. If not, pick up something new.

Do it now while the market is still hot AF before everyone gets cold feet from an extended lending slowdown.

gbut
Mar 28, 2008

😤I put the UN🇺🇳 in 🎊FUN🎉


What others said. Hiring is still goin crazy, from what I see, and all levels are in demand.

The March Hare
Oct 15, 2006

Je rêve d'un
Wayne's World 3
Buglord
As everyone else has said just go for it. If anyone asks about the long absence just say you had family obligations that made professional life unrealistic or something, but I honestly wouldn't worry about it.

Harriet Carker
Jun 2, 2009

Agreed with the above posters. If you can get halfway decent at a popular frontend framework and can knock out medium LeetCode questions, you've got an in to basically any major tech company. Your job gap shouldn't matter very much, apart from a handful of companies who might throw your resume out at the start, but it'll be a numbers game anyway.

biceps crimes
Apr 12, 2008


I wouldn’t care about the gap unless it was a leveling issue. If you’re just shooting for an SE II role, I think the gap wouldn’t matter

oliveoil
Apr 22, 2016
Let's say you've got a helper class for logging certain parameters of an HTTP request. Let's say it has a bunch of methods like logBody, logContentType, etc. They just accept a parameter, possibly modify it, and store it in a private field.

To actually save the logged values, there's a convertToLog method that copies the internal fields into a value object suitable for writing to disk.

So you update logContentType to change the way the logged date is formatted internally.

When you write tests for this class, do you consider logContentType to be the code you're testing? Or do you consider convertToLog to be the code you're testing? Note that convert ToLog wasn't changed. In fact the only change you made to this class was to logContentType.

Was in a somewhat similar situation at work where I modified a method that changed internal state, so the changes could only be visible after calling another method to make them visible.

My TL insisted that the 2nd method that externalizes the data was the code under test and wanted me to reformat my tests with that method at the center, because it's easier to understand what is being tested when you separate your tests into setup, test, and assert sections with only the code being tested in the middle section.

I agreed and in fact did that, I just had the 1st method in the middle.

I explained that the code that was actually being modified was what I intended to test, the behavior being tested was the special formatting from the 1st method, and the test method was even named after that 1st method's formatting because the purpose was to verify the format was actually what we wanted. Hence I put that 1st method call in the middle.

He nodded and made noises of acknowledgement and sounded like he understood. Then told me that his rule is to put the method being tested in the middle, and asked me again to follow that practice.

At this point I just said okay and made the change to put the 2nd method in the middle but I was pretty confused.

oliveoil fucked around with this message at 14:48 on May 29, 2022

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS
You generally want to test external apis unless there’s very specific, load-bearing logic that needs to be tested directly. If consumers call convertToLog then your changes should probably be reflected in those tests unless you can call out specific reasons why your tests need to be written against a method that modifies internal state.

asur
Dec 28, 2012
It sounds like both are external methods, in which case if you're writing one test for both then both are under test and I would generally format it as setup block, call method(s) under test block, assert block.

You could also split this into multiple tests where the methods are tested separately and then tests for convertToLog to cover all behavior in it.

When I see situations like this where the test code doesn't make a lot of sense, it calls into question if the code structure makes sense. In this case do you need a bunch of separate methods to store parts of request and then another call to log it. I would think a single call would make more sense.

minato
Jun 7, 2004

cutty cain't hang, say 7-up.
Taco Defender
Your original class design seems like it does not conform to the Single-Responsibility Principle because it's doing 2 things; there's a bunch of methods used to build the internal state (setContentType, setBody, etc), and another function convertToLog that consumes that internal state and processes it. So from a test POV it might make sense to separate those concerns:

code:
struct HttpRequestInfo:
    body: str
    headers: array[str, str]


class HttpRequestInfoBuilder:
    # Convenience class to help generate a HttpRequestInfo structure
    setContentType(content_type)
    setBody(body)
    ...
    build() : HttpRequestInfo
         # this function returns an immutable HttpRequestInfo struct, and raises an
         # exception if its internal state has insufficient data to complete this operation.


function convertToLog(HttpRequestInfo: info) : str
    # Convert a HttpRequestInfo datastructure into a log string
From a testing POV, your questions about what to test become much clearer. HttpRequestInfoBuilder tests tell you if the class reliably generates a HttpRequestInfo datastructure under various conditions, convertToLog tests tell you that given a static & complete HttpRequestInfo datastructure, can convertToLog give you a log string in the expected format. When writing tests for convertToLog, you're not testing the code that's creating the input data; in fact your test setup is probably using a statically-defined HttpRequestInfo that it passes to convertToLog, and the test doesn't even use HttpRequestInfoBuilder at all.

This separation of concerns also lets you add more functions to output the data in other formats easily, such as convertToHTML, convertToCSV, etc. Those would have their own set of tests, and also be completely decoupled from the HttpRequestInfoBuilder class.

I'll admit that in this particular case, the code is probably so simple that splitting up the classes might be construed as over-engineering. But the point remains; separation of concerns can help bring clarity to "what do I test" questions.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!
If you're contracting out for a month or two of work (as a rough span to contrast versus 2 weeks or 6 months) for a semi-specialized role, what kind of cuts can you expect 3rd-party hiring firms would take of the money involved? What percentage of money your company is putting out translate to something like final pay?

I know this is a very vague thing with a huge pile of "it depends." I'm just thinking that my company is throwing out too little and isn't getting any respect for it. I heard we had a 3rd-party agency and the candidates have their own. I assumed together that the agencies would eat something like half the money. The candidate then has the rest to split between raw pay and their own insurance and stuff. I'm left with something like somebody in a 3rd-tier area working remotely that could get comparable pay local to themselves.

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.

Rocko Bonaparte posted:

If you're contracting out for a month or two of work (as a rough span to contrast versus 2 weeks or 6 months) for a semi-specialized role, what kind of cuts can you expect 3rd-party hiring firms would take of the money involved? What percentage of money your company is putting out translate to something like final pay?

I know this is a very vague thing with a huge pile of "it depends." I'm just thinking that my company is throwing out too little and isn't getting any respect for it. I heard we had a 3rd-party agency and the candidates have their own. I assumed together that the agencies would eat something like half the money. The candidate then has the rest to split between raw pay and their own insurance and stuff. I'm left with something like somebody in a 3rd-tier area working remotely that could get comparable pay local to themselves.

As a contractor, you will get between 20 and 70 percent of what your agency is being paid.

tortilla_chip
Jun 13, 2007

k-partite
For 120 to me I've seen different vendors bill 150-200.

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

tortilla_chip posted:

For 120 to me I've seen different vendors bill 150-200.
How many vendors are there between you and the client? Just one? I believe there are two here.

tortilla_chip
Jun 13, 2007

k-partite
Just one in my case.

John DiFool
Aug 28, 2013

I guess I'm an oldie now. > 15 years experience doing programming/software dev/etc.

What used to be a pretty good work environment has turned sour for me. It went from our little org in the company being self-directed and small teams executing fast into an agilefall JIRA assembly line where it feels excruciating to get things done. Most days I feel completely burned out and don't want to do any work at all. A lot of the engineers I who I consider to be good and look up to have left for other opportunities. I've started looking as well, but I'm currently feeling very cynical about any opportunity and resent the fact that I'm probably going to have to grind leet-code problems for a few weeks to dust off all the poo poo that employers pretend they care about but typically have little or no impact on day to day duties. Despite having a several pages-long resume listing many impactful projects and results I'll have to prove once again that I can solve another loving stupid coding challenge.

I guess I need to take some extended time off, but I feel guilty and I'm worried it will hurt my opportunities going forward.

Has anyone taken a leave of absence before? How did it go?

Finance wise I'm in a very good spot. Relatively LOC, and It would take several years to burn through an appreciable amount of my savings. Not that I particularly want to be out of work for very long. I'm also wondering if a lot of companies are going to be last-in, first-out if the economy really tanks over the next year.

Has anyone been in my spot before? What do you recommend?

Hadlock
Nov 9, 2004

If you've been at the same company 5+ years it's not at all uncommon to take a 3-6 month sabbatical to deal with burnout and reevaluate everything. No company is going to look at a developer with 15 years experience, 3 of which were during the pandemic, wanting to take some time off before starting a new job and be concerned about that. Leave of absence is really popular in the last couple of years after being stuck at home

A lot of companies offer a 6 month sabbatical after 10 years of service, I think im academia traditionally it's every 7 years. My wife did something similar at her 10 year mark and it was very eye opening for her

Adbot
ADBOT LOVES YOU

lifg
Dec 4, 2000
<this tag left blank>
Muldoon
I’ve taken months off between jobs a few times. It’s not just great for overcoming burnout, it’s possibly the only way to really recover from long-term burnout.

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