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.
 
  • Locked thread
fart simpson
Jul 2, 2005

DEATH TO AMERICA
:xickos:

LeftistMuslimObama posted:

no, and it's a decision i extremely disagree with. the sad reality, though, is that there's a (right now) shortage of CS majors and H1Bs and not so much of "people with a bachelor's who can pass a math test" and so the QAers replacability suppresses their wages somewhat. A newly hired QAer fresh out of college makes $42-45k depending on whether they have a master's and how they do on the tests. real tenured people make 60k+. i'm the juniorest of devs (only 6 other people have my title because it's reserved for people who are transitioning from another role into dev and who haven't done their 1 year hard time in the transitional role yet) and i make 75k. last time a dev shared his salary with me, starting salary was between 90k-110k for devs again depending on education and testing.

so does management last long

Adbot
ADBOT LOVES YOU

The MUMPSorceress
Jan 6, 2012


^SHTPSTS

Gary’s Answer

fart simpson posted:

so does management last long

well, we're a "flat" company, so there's not "management" :rolleyes:. there are team leads, their team leads, and then everyone from there up reports to the CEO or one of her direct reports. Once you become a TL, you're pretty much in for life. even in QA they get substantially larger annual raises than non-TLs so they tend to stick around. i think average TL tenure is around 12 years right now.

HoboMan
Nov 4, 2010

Finster Dexter posted:

JavaScript code:
string[] options = webMethodParam.Split(pipe, StringSplitOptions.None);

does he have a global var pipe="|" or not?
this is kinda adorable either way.

HoboMan
Nov 4, 2010

LeftistMuslimObama posted:

no, and it's a decision i extremely disagree with. the sad reality, though, is that there's a (right now) shortage of CS majors and H1Bs and not so much of "people with a bachelor's who can pass a math test" and so the QAers replacability suppresses their wages somewhat. A newly hired QAer fresh out of college makes $42-45k depending on whether they have a master's and how they do on the tests. real tenured people make 60k+. i'm the juniorest of devs (only 6 other people have my title because it's reserved for people who are transitioning from another role into dev and who haven't done their 1 year hard time in the transitional role yet) and i make 75k. last time a dev shared his salary with me, starting salary was between 90k-110k for devs again depending on education and testing.

where do you live?

Finster Dexter
Oct 20, 2014

Beyond is Finster's mad vision of Earth transformed.

HoboMan posted:

does he have a global var pipe="|" or not?
this is kinda adorable either way.

Yup

The MUMPSorceress
Jan 6, 2012


^SHTPSTS

Gary’s Answer

HoboMan posted:

where do you live?

you can find this out really easily by just creeping my posts itt or googling the name of the company. do we have to do everything for you?

HoboMan
Nov 4, 2010

but then i would have to read more of your posts

The MUMPSorceress
Jan 6, 2012


^SHTPSTS

Gary’s Answer

HoboMan posted:

but then i would have to read more of your posts

i have been owned

Jerry Bindle
May 16, 2003
lol interesting play for someone that was just asking him to answer a question

you should read every post made by LeftistMuslimObama in this thread. they are very good.

The MUMPSorceress
Jan 6, 2012


^SHTPSTS

Gary’s Answer

Barnyard Protein posted:

lol interesting play for someone that was just asking him* to answer a question

you should read every post made by LeftistMuslimObama in this thread. they are very good.

*her.

and lets not go too far, like 5% of them are good, tops.

HoboMan
Nov 4, 2010

i don't think you guys get this, i don't do this "reading" thing everyone keeps telling me to do

Su-Su-Sudoko
Oct 25, 2007

what stands in the way becomes the way

LeftistMuslimObama posted:

*her.

and lets not go too far, like 5% of them are good, tops.

i think that puts you in the best 5% of posters at least

VikingofRock
Aug 24, 2008




LeftistMuslimObama posted:

*her.

and lets not go too far, like 5% of them are good, tops.

Nah they are mostly good. Although I can only ever understand like half of your MUMPSposting because I don't really get MUMPS syntax. Did you ever do a primer post on it?

hackbunny
Jul 22, 2007

I haven't been on SA for years but the person who gave me my previous av as a joke felt guilty for doing so and decided to get me a non-shitty av

HoboMan posted:

is that what the perception is? because I think qa would be a cool gig and it requires at least as much creativity and technical knowhow as dev

I'll just leave this here: http://www.leisuretown.com/library/qac/index.html

The MUMPSorceress
Jan 6, 2012


^SHTPSTS

Gary’s Answer
for real those, people like eschaton, hackbunny, subjunctive, jawnv6, male shoegaze, et al (really sorry if i left anyone out, there's so many of you) are so smart and post such high level stuff it's intimidating. ppl like my posts, but i honestly think that having deep knowledge of something semi-obscure is causing people to overestimate me drastically. like, yeah i hacked some stuff on to a baby version of the unix kernel for an undergrad class, and sure i wrote a bug-laden stripped down c-to-mips compiler for another, but that's not real world experience and i had TAs and classmates (and the cavern of cobol for that matter) to fall back on when i got stuck.

it's part of why i plan on sticking around at epic for a little while yet. i need to really believe im adequate as a programmer before i feel confident trying to branch out into something else. i think one day id like to work in systems stuff because of the challenge, but id be in like the bottom 1% of developers in that field. my OS programming course was insanely difficult and i did many 20 hour days getting my projects to work, but ive never had more or felt more proud of things i produced than in that course. but that was working with an insanely simplfied version of a 70s vintage unix kernel and modern systems stuff is lightyears past that.

Shaggar
Apr 26, 2006

JimboMaloi posted:

haha, what? having a separate set of eyes for qa is important because most devs are terrible at actually doing qa but having someone else write the unit tests is both shameful and ineffective

if I write unit tests im writing what I think I need to test. If theres a QA department they should be writing the tests.

MononcQc
May 29, 2007

LeftistMuslimObama posted:

it's part of why i plan on sticking around at epic for a little while yet. i need to really believe im adequate as a programmer before i feel confident trying to branch out into something else. i think one day id like to work in systems stuff because of the challenge, but id be in like the bottom 1% of developers in that field. my OS programming course was insanely difficult and i did many 20 hour days getting my projects to work, but ive never had more or felt more proud of things i produced than in that course. but that was working with an insanely simplfied version of a 70s vintage unix kernel and modern systems stuff is lightyears past that.
The question is not whether you're good enough right now, but whether you think you can adapt and learn to the new environments for stuff. Being proud of stuff you've written is not usually a big factor; it's what you've learned doing it that can help translate to new areas. I'd probably bet most people have some pride in what their projects accomplished, but would dread going back to maintain the mess they've left behind by their modern-selves' own criteria.

If you feel you've done the learning you've had to do at your current place and there's no opportunity for you to improve by taking on different (or higher-ranked) roles either, then trying to do that at another company can help your personal development, even if it is just to broaden perspectives into a new area you know little about.

Mostly every job I've personally taken I had very little idea what I was doing, but every time, there's less and less fear since you know you can adapt and every new job you carry more knowledge and expertise with you.

FamDav
Mar 29, 2008

LeftistMuslimObama posted:

no, and it's a decision i extremely disagree with. the sad reality, though, is that there's a (right now) shortage of CS majors and H1Bs and not so much of "people with a bachelor's who can pass a math test" and so the QAers replacability suppresses their wages somewhat. A newly hired QAer fresh out of college makes $42-45k depending on whether they have a master's and how they do on the tests. real tenured people make 60k+. i'm the juniorest of devs (only 6 other people have my title because it's reserved for people who are transitioning from another role into dev and who haven't done their 1 year hard time in the transitional role yet) and i make 75k. last time a dev shared his salary with me, starting salary was between 90k-110k for devs again depending on education and testing.

thats why a lot of people who would prefer qa don't do qa, and its why there needs to be more overlap and mobility for test, dev, and ops. i do understand epic is a pile of legacy poop on top of insurance and hospital piles of poop all talking to each via various colons spewing poop bidirectionally, so having to employ a small army of manual qa is a business reality :(.

Shaggar
Apr 26, 2006

LeftistMuslimObama posted:

for real those, people like eschaton, hackbunny, subjunctive, jawnv6, male shoegaze, et al (really sorry if i left anyone out, there's so many of you) are so smart and post such high level stuff it's intimidating. ppl like my posts, but i honestly think that having deep knowledge of something semi-obscure is causing people to overestimate me drastically. like, yeah i hacked some stuff on to a baby version of the unix kernel for an undergrad class, and sure i wrote a bug-laden stripped down c-to-mips compiler for another, but that's not real world experience and i had TAs and classmates (and the cavern of cobol for that matter) to fall back on when i got stuck.

it's part of why i plan on sticking around at epic for a little while yet. i need to really believe im adequate as a programmer before i feel confident trying to branch out into something else. i think one day id like to work in systems stuff because of the challenge, but id be in like the bottom 1% of developers in that field. my OS programming course was insanely difficult and i did many 20 hour days getting my projects to work, but ive never had more or felt more proud of things i produced than in that course. but that was working with an insanely simplfied version of a 70s vintage unix kernel and modern systems stuff is lightyears past that.

if you want a job converting a vb.net web forms app to c#/mvc then boy do I have a job for you!

HoboMan
Nov 4, 2010

^i said we should do that with our stuff
"the return on that investment is not worth it" -guy says about software that we will soon force every branch to use and is the linchpin of the company's growth plan

but hey they hired me so i should have assumed no one knows what they are doing

The MUMPSorceress
Jan 6, 2012


^SHTPSTS

Gary’s Answer

VikingofRock posted:

Nah they are mostly good. Although I can only ever understand like half of your MUMPSposting because I don't really get MUMPS syntax. Did you ever do a primer post on it?

y know, i don't think i did. it's not too hard and ive been at work since 6am so i guess ill take a break and write one now :)

this is an incomplete list of basic commands in MUMPS. note that each command can be written in full or abbreviated to 1 or 2 letters. also note that there are no reserved words in MUMPS so you are free to name tags, routines, variables, etc with the names of any of the commands. whether it's a command or a name is determined by its position in the expression. also, commands aren't case sensitive even though identifiers are. our house style is to do lower case for commands and uppercase for system functions.

D or DO. This command is used to call a routine, subroutine, or function for which you don't want a return value. For example:
code:
d do
calls the tag named "do" within the routine you're in. to call a tag (i'll explain tags more later) in another routine, you have to use the fully-qualified name. if "do" is in a routine called "butts", i'd write:
code:
d do^butts
house style is to make routine names always be allcaps to avoid stupid mistakes with capitalization errors. a routine is logically equivalent to a source code file, though in fact it's actually a data element within the MUMPS database that contains the code to be executed. that's right, the database contains the code that runs on the database. smart!

S or SET. this command sets a variable (or array, or global, or subscript of either of those) to the value on the rhs of an = expression. for example:
code:
s var="hello"
sets the variable "var" to "hello". if var didnt exist before, it's implicitly created at the scope. if var existed at a previous scope and wasnt passed in as a parameter, var's value is permanently mutated. if var was passed in as a parameter, this is treated as pass-by-value and the assignment wouldn't affect the caller. you can also explicitly pass-by-reference if you do want that to happen.

N or NEW. this command declares a variable and initializes it to null (the empty string ""). scope on variables behaves basically how you would expect if you've used an curly brace language.
code:
n var
creates a variable named "var". if there was a variable with the same name in a higher scope, this variable shadows that one.

Q or QUIT. this command is fuckin' overloaded to hell and back. within a loop it acts as a CONTINUE statement. in the control expression of a loop it acts as a conditional break statement. in the outer scope of a function it's a RETURN statement (and can return a value or not, with no requirement that all quits in a function return a value. a quit with no value is implicitly a return of "").

i'm going to use inline comments in this code block. note that comments in MUMPS start with a ";" instead of a "//".
code:
;this function returns 3
threeFunc
     q 3

;this function returns null (if you call it as a function. any tag can be called as either a function or a subroutine)
nullFunc
     q
before i show the other uses of q, lets talk about control structures.

FOR or F. this is the basic for loop. it looks not unlike the curly-brace for loop, but with a couple differences. a for loop on its own just increments the counting variable in whatever way it's told. it won't actually do any code unless a DO command is on the same line (the line is the fundamental unit of code in MUMPS), in which case on each iteration the loop will do the code within the "do blocK". a "do block" is a bunch of code after a DO where the lines start with periods. you can tell what scope level you're in by the number of periods at the start of a line. in a FOR loop, the "DO" can have pre and post conditional statements. the preconditional is evaluated before the DO is executed and causes the loop to terminate before entering the DO block if true. the postconditional is checked after the DO is complete but before the next iteration and also terminates the loop.

also I or IF is an if statement. you should know how this works.
code:
;this for loop counts  2-100 but quits preconditionally if var isn't 0 and quits postconditionally if a flag is set

f i=2:1:100 q:'(var=0) d  q:flag
. s var=i#2 ;# is modulo, lol
. i (i#3)=0 s flag=1 q ;like C, bools are just ints. 0 or null is false, everything else (?, not sure about negative values actually) is true.
. w "butt "_i ;w=write, prints to the terminal, underscore is string concatenation
This code should output "butt 2" and then quit. this is because on the second iteration i#3=o, so flag gets set to one and then the q on that line acts as a CONTINUE, which takes us into the postconditional q:flag. the "command:" syntax means "do this command if the following expression is true", so in this case "quit if flag (equals true)".

An interesting feature of this loop code is that there's a single space between all commands on a line except between the "d" and the postconditional. whitespace has meaning in MUMPS. the double-space there mans that the do block should be executed before the rest of the current line is executed. im not sure what happens if you only single-space there as our in-house linter won't let you even save code that makes that error.

there's also a while loop in MUMPS but we dont use it because for is always faster (lol) and you can just write "f d q:condition" to get the same behavior.

i think ive explained arrays and globals elsewhere itt, so i won't go over the $o and $ q loops. instead let's discuss tags so that i can finish off with functions and nesting.

a tag is essentially a label you place on a section of code within a routine. think of a routine as a BASIC program except that you only have to put the numbers in front of lines of code that define the beginning of a logical unit. tags are defined by writing an unindented string. all executable code is indented by a tab. it's common style to "new" all the variables a tag uses on the same line as the tag name. you define args with parentheses. passing an arg by reference is essentially treated by the runtime as newing variables with the args' names and then setting their values. you can pass an argument into a tag by reference by prefixing its name with a period.

tags can be called or fallen through into (although fallthough tags are discouraged these days). you use a tag as a function by prefixing its name with "$$" and using it on the RHS of an assignment or boolean expression.

code:
main n refVar,valVar ;this is a tag named main with two variables declared in its scope.
     s refVar="test",valVar="salvia" ;when expressions are chained with commas, they're all executed via the preceding command.
     d mangle(.refVar,valVar) ;calling mangle as a subroutine
     d writeTag
     s valVar=$$mangle(.refVar,valVar);setting valVar's value to mangle's return called as a function.
     ;
     ; you cant have blank lines in MUMPS, so it's customary to use empty comments to add some whitespace for readability
writeTag ;there's no quit at the end of main, so it falls through to writeTag. when called with d, it is a new scope but
    ; can access non-shadowed variables main's scope. when fallen through to, it's just continuing on within main's scope.
    w refVar," ",valVar,! ;! is a newline. write can take an unlimited number of comma-delimited args and print them in order
    q ;here we just quit, returning us to the calling scope.
mangle(ref,val)
    w ref," ",val,!
    s ref="smoke", val="weed"
    q "sweet mexican black tar heroin"
[code]

This program should have the following output when called via "d main^routinename"
[code]
test salvia
smoke salvia
smoke salvia
smoke sweet mexican black tar heroin
finally, you can have multiple dot-levels inside a do block, so you can have poo poo like this (the worst i've seen was 13 dot-levels)
code:
i 1 d
. i 1 d
.. i 1 d
... w "we're really in the poo poo now",!
.. w "we're in 2 feet of poo poo now",!
. w "we're in 1 foot of poo poo now",!
this is the equivalent of like:
code:
{
  {
    {
    }
  }
}
in curly brace land.

i think ive covered all the other features of the language at some level somewhere itt, but let me know if you want more :)

Shaggar
Apr 26, 2006

HoboMan posted:

^i said we should do that with our stuff
"the return on that investment is not worth it" -guy says about software that we will soon force every branch to use and is the linchpin of the company's growth plan

but hey they hired me so i should have assumed no one knows what they are doing

for some of it its gonna be a case of "why is this an application and not just ssis/ssrs?" followed shortly by "oh here is the next version of this application. why yes that certainly does look like SSRS reporting, doesn't it?"

for others its gonna be a herculean effort to pull back offshore development to a new internal development team. luckily management is fully behind us doing this because they're tired of the offshore people. they aren't bad people or anything. like they aren't screwing us over or w/e, they just aren't great at programming.

triple sulk
Sep 17, 2014



i'm a bad programmer and no one here should feel bad about themselves

Plorkyeran
Mar 22, 2007

To Escape The Shackles Of The Old Forums, We Must Reject The Tribal Negativity He Endorsed
i've worked at two companies with dedicated qa people. at one they were well paid and an integral part of the team and yet 100% useless and i never missed them after they were let go. at the other, we used an outsourcing service that was oddly effective and useful. we'd just write up a test plan and throw it at 20 poorly paid testers that may or may not have known enough english to actually read the instructions. one or two would actually try to deliberately break things and sometimes find bugs, a few more would follow the instructions correctly and be mostly useless other than pointing out typos and minor visual errors, and the other fifteen would try to follow the testing instructions but gently caress up pretty much every step and then report a bunch of spurious bugs because they were unable to complete step 4 of the test plan after skipping step 3 entirely. we initially were annoyed by this third group, but then of course we discovered that our actual users did pretty much the same thing, so while they weren't great for finding bugs, they were great for finding ux issues and making everything as idiot-proof as possible

Shaggar
Apr 26, 2006
we have a user who is on the spectrum, but he makes the absolute best bug reports cause when he has a problem he goes into detail to reproduce it by himself and then sends a detailed ticket. he also manages to find all the bizarre, unhandled workflows.

HoboMan
Nov 4, 2010

Shaggar posted:

we have a user who is on the spectrum, but he makes the absolute best bug reports cause when he has a problem he goes into detail to reproduce it by himself and then sends a detailed ticket. he also manages to find all the bizarre, unhandled workflows.
cherish him


microsoft test manager is a pile of garbage y/n?

Finster Dexter
Oct 20, 2014

Beyond is Finster's mad vision of Earth transformed.
welp it's 4pm and my brain is loving done but I still have to sit here for like an hour doing fuckall fuuuuuuuuuuuuccccckkkkk

maybe i'll work on documentation

lol no i wont

Finster Dexter
Oct 20, 2014

Beyond is Finster's mad vision of Earth transformed.

HoboMan posted:

cherish him


microsoft test manager is a pile of garbage y/n?

I think that's just for qa people. don't use that if you are dev

Shaggar
Apr 26, 2006

HoboMan posted:

cherish him


microsoft test manager is a pile of garbage y/n?

never used it

Bloody
Mar 3, 2013

Finster Dexter posted:

welp it's 4pm and my brain is loving done but I still have to sit here for like an hour doing fuckall fuuuuuuuuuuuuccccckkkkk

maybe i'll work on documentation

lol no i wont

lol if u cant just leave when ur sick of the poo poo

HoboMan
Nov 4, 2010

Finster Dexter posted:

I think that's just for qa people. don't use that if you are dev

oh, it's the only thing tat comes up if i google for automated testing in visual studio so i thought it was for that and maybe just micrisoft's docs about it were really bad

Bloody
Mar 3, 2013

VSTest

Bloody
Mar 3, 2013

or NUnit

creatine
Jan 27, 2012




I store my credentials in my Python scripts

HoboMan
Nov 4, 2010

lol, i just found out that not only was our outsourced tablet app made in ruby on rails but the security stuff like passwords and poo poo is hardcoded

and they don't want to give us the souce code either

DrPossum
May 15, 2004

i am not a surgeon

Pumpy Dumper posted:

I store my credentials in my Python scripts

jsut base64 that poo poo and you good

DrPossum
May 15, 2004

i am not a surgeon

HoboMan posted:

lol, i just found out that not only was our outsourced tablet app made in ruby on rails but the security stuff like passwords and poo poo is hardcoded

and they don't want to give us the souce code either

uhhh if that's true and they gave you the source then that would be a huge security leak, duh

ahmeni
May 1, 2005

It's one continuous form where hardware and software function in perfect unison, creating a new generation of iPhone that's better by any measure.
Grimey Drawer

FamDav posted:

yeah, the three stages are

1 Continuous Integration: You are building and hopefully running unit tests automatically on every change (or batch of changes). this makes it obvious when development has been broken in obvious ways, and is pretty straightforward to implement
2 Continuous Delivery: You are running integration tests, load tests, and whatever else you need to validate a build against every batch of changes. there isn't a one size fits all solution to this stage, but the outcome is always having a deployable build or knowing about issues with your builds automatically
3 Continuous Deployment: You are automatically deploying every change that makes it through build, test, and integration. i've noticed that groups usually extend their continuous delivery pipeline from their integration pipeline, but the tools for deployment come about because they're deploying to a large enough fleet that they need automation. once they realize they have all the tools for automated deployment, they just plug it in at the back of their pipeline

the hardest jump is definitely from 1 to 2, and a lot of teams only semi-automate integration while taking advantage of automatic rollout tools with a manual approval to start.

this is why my job is CD Engineer, you generally need a lot of help for 1-2 and then your platform will be responsible for 2-3

kitten emergency
Jan 13, 2008

get meow this wack-ass crystal prison
I think TDD is a good idea wrapped up in a bunch of dumb dogma. the kernel of "write tests against spec, then write function until tests pass" is a pretty useful maxim and something anyone can glom onto even if they don't really have experience with the unit test framework.

the thing that needs to really be changed is the dev attitude towards testing, and the industry treatment of QA as a hellpit for idiots and women.

the problem with the first one is that every dev I've ever met is incredibly resistant to changing their process, so they don't want to do things differently. when you give them a test framework, their goal is to try and jack it into their existing workflow and make things complicated, which fucks over your QA people who aren't devs and then they can't write tests any more. I'm in the middle of this right now and it sucks.

Adbot
ADBOT LOVES YOU

eschaton
Mar 7, 2007

Don't you just hate when you wind up in a store with people who are in a socioeconomic class that is pretty obviously about two levels lower than your own?

LeftistMuslimObama posted:

ppl like my posts, but i honestly think that having deep knowledge of something semi-obscure is causing people to overestimate me drastically. like, yeah i hacked some stuff on to a baby version of the unix kernel for an undergrad class, and sure i wrote a bug-laden stripped down c-to-mips compiler for another, but that's not real world experience and i had TAs and classmates (and the cavern of cobol for that matter) to fall back on when i got stuck.

thanks for the callout!

I really think you'd be surprised though how many people don't do those sorts of things even in CS grad school, making it through an undergrad program where you do them—and not one that's entirely Java-, C#, or web-focused—actually is an achievement and a good predictor of success in my experience

similarly you underestimate just what it means that you can actually be productive in an otherworldly nightmare like MUMPS/Caché, the fact that you can means you'll feel completely spoiled by even the most minimally modern, decent environment and probably still do really good, careful work

  • Locked thread