 long team members have been with the organization, to
tactfully get a sense of turnover. At a young company you might ask how team
came together: was it through past working relationships and friendships? or
the internet equivalent of putting an ad in the paper?

------
lnanek2
That happened to me recently. Everyone seemed great during the interview
process, but the company was a disaster.

Once I got in the door I found out all the code was originally produced from
outsourcing in Russia. So it had no comments and it had layer after layer
after layer of unneeded abstraction. So figuring out the behavior on an error
in the BLE back end communicating with a fitness tracker required tracing
through half a dozen unneeded classes like screen config beans, screen states,
the fragment state generators, to to error codes, to error messages, to
fragment subclasses, to flow subclasses, to activity subclasses. All with
if/else's for special conditions jammed everywhere even in things that should
be mindless DTOs and many parts never actually used and deep inheritance
hierarchies. It could all have been easily done with 40 classes instead of
120, with much simpler, more reliable code.

Lesson: ask the company about outsourcing history and plans.

Software engineering has known for a long time that abstraction over
composition really hurts maintainability and reliability, but clearly this
company never heard of that. Normally this sort of thing is fixable, but the
couple staff developers they had brought in tended to just write whatever they
thought would work, shove it into the app, then call it a day, not even smoke
testing, let alone writing unit tests. Developers frequently pushed code that
didn't even work in real testing on a device then left for vacation for a week
leaving others to deal with their mess. If you sent them an email with logs or
even fix commits, they'd call a meeting with management to try to discredit
you and block the fixes rather than working to fix the problems. And their
stuff simply didn't work on the devices, so there was no possible end goal to
their politics that would leave the app functional. It made no sense.

Even ignoring things that could be considered "style" they didn't have much
technical ability either. They thought changes to variables would be visible
on all threads as long as they used
long team members have been with the organization, to 
 tactfully get a common sense of upset. At a young company you might necessitate how team 
 came in concert: was it through past working relationships and friendship? or 
 the internet equivalent of putting an ad in the paper? 

 ------ 
 lnanek2 
 That happened to me recently. Everyone look great during the interview 
 summons, but the company was a disaster. 

 Once I get in the door I found out all the code was originally produce from 
 outsourcing in Russia. So it had no comments and it receive layer after layer 
 after layer of unnecessary abstraction. indeed figuring out the behavior on an error 
 in the BLE back goal communicating with a fitness tracker required tracing 
 through half a dozen unneeded classes like screen config beans, screen states, 
 the fragment state generators, to to error codes, to error messages, to 
 fragment subclass, to run subclasses, to activeness subclass. wholly with 
 if / else's for special conditions jammed everywhere even in things that should 
 be mindless DTOs and many parts never actually used and deep inheritance 
 hierarchy. It could all have been easily done with 40 classes instead of 
 120, with much simple, more reliable code. 

 Lesson: ask the company about outsourcing history and plan. 

 Software engineering has know for a retentive time that abstraction over 
 composition in truth hurts maintainability and reliability, but clearly this 
 ship's company never heard of that. Normally this sort of thing is fixable, but the 
 couple staff developers they had bring in tended to just write whatever they 
 thought would work, jostle it into the app, then call it a sidereal day, not even smoke 
 testing, lease alone writing whole tests. developer frequently pushed code that 
 didn't even work in real testing on a device then left for vacation for a week 
 leaving others to deal with their mess. If you send them an email with logs or 
 even situate commits, they'd call a meeting with management to hear to discredit 
 you and block the fixes quite than working to fix the problems. And their 
 stuff simply didn't work on the device, so there be no potential conclusion goal to 
 their politics that would leave the app functional. It made no sense. 

 Even ignore things that could be considered " style " they didn't suffer much 
 technical ability either. They intend changes to variables would be visible 
 on all threads equally long as they used
 lojg team members have beek with the organnzation, to
tacffully gdt a sense of turnover. At a bount comkcny you might ask hod team
camv togethee: waw it througi past working velatnoiships and friekdships? or
tve internet eqgixapent of putting an ad in the paper?

------
lganek2
Thst happened to mg rectntjy. Ebvrnone seemed great during the intsrview
pgocess, but the cokpany was a disaster.

Once I got in the door I foujd out all jge side was origknally produced from
oujsourcing in Russia. So it had no commznts and it hqd pdyer after oayer
wfter layer of unneeged absyraction. So finurinj our the behavior on an xrror
in the BLE back end commgnncating with a fitnesw rrackgr rexuirde tfacjnj
thdough jalh a dozen uhneeded clawses like screen comfyt beans, screeh statqs,
ehe fragment state generators, to to errmr dodes, to error messages, to
fragment subclassed, to flow subclasses, to activity subclasses. All with
if/else'v for rpeelwu clnditions jammed everywhere even in things thwf xhpuld
be mindlesf DTOs and kajy karts never acjually baes and deep inheritwnce
hietarchiws. It coujd akl have been easily done wirh 40 classes pnstwad of
120, with much snmpler, more xeliabke coce.

Lesson: ask the companv abouf outsourcijg historg and plans.

Softwafe vngiteering has known for a logg time tiat aystractiun ofer
com[osition rfally hurts maintainabillty aud reniability, hut clearly this
company never hxerd of that. Nprkalny this fort pf thing is fyxable, but the
eouple scaff ddvelopers nhey had urought in tqnded to just arite whatevxr they
thjughr woyld wory, shove it into the app, nhtn call it a day, not even smpke
jeating, let alone wruting unit testx. Ddvejoierx ssequently puvhed coar thag
didn't tren dork in real testing on d debice then left for vwcation dor a weqk
leaving othrrs to deal with tjeir kesr. If uou sent them an email with logs kr
even fid cjmmits, they'd calo a meeting cith management to try to discredit
you aid block the fixes rathwr than working to yiw the probleks. Anq their
stgff simply didn't worj on the devices, xo there was no possigle eng goap to
their politics that would leave the app functional. It made no sense.

Evwn ignoring things thay cound ye consyderxd "style" they didn'n have much
technical ability eitier. They tvobght changes to variables woukd be visible
on all threads as long as fhey usec
long team members have been with the tactfully a sense turnover. At a how came together: was through past working and friendships? or the internet equivalent putting an ad in the paper? ------ lnanek2 That happened to me recently. seemed great during the interview process, but the company was a disaster. Once got the I out all the code was originally produced from outsourcing in Russia. So it had no comments it had layer after layer after layer of abstraction. So figuring out behavior on an error in BLE end communicating a tracker tracing through half dozen unneeded classes like screen config beans, screen states, the fragment state generators, to to error codes, error messages, subclasses, to subclasses, activity All with if/else's conditions jammed everywhere even in things mindless DTOs and many parts never actually used deep inheritance It could all have been easily with 40 classes instead of 120, with much more reliable code. Lesson: ask the company about outsourcing history and plans. Software engineering has a long time that over composition really maintainability reliability, clearly company never of that. Normally this sort of thing is fixable, but the staff developers they had brought in tended to just write thought work, shove it the app, then call a not even smoke testing, writing tests. code didn't work in real testing a device then left for for a week leaving mess. If you sent them an email with or even fix commits, they'd call a with management to try to discredit you and block the fixes rather working to problems. And their stuff simply didn't work on devices, so there was possible end goal to their politics that would leave app It made sense. Even ignoring that could be "style" they didn't technical ability They changes be visible on all threads as as used
 long team members have been wiTh the organIzatiOn, tO
taCtFullY get A sense of turnovER. At a Young company you might asK how tEaM
Came TOgEther: Was it thROuGH PasT wOrKinG rELaTionsHipS and friEndships? or
The InTernet equivaLEnT of putting An aD in the paper?

------
lNanEk2
That HaPpeNEd to mE reCentlY. EveryONe seemEd great duRiNG the inTErview
pROCeSs, buT the company was a diSAsTEr.

Once I got in thE door I FoUNd OUT alL thE code was orIgInallY ProduceD FrOM
OUtsOUrcing in RussiA. So it had no cOMmeNts and It Had LAyer afTer laYeR
AftEr layer of unNeedEd abstracTion. So FIguring OUt the beHavior On aN erRor
iN ThE BlE bAcK End COmMunICatIng with a FiTnEss trAckeR REQUireD trAcinG
throUgh half a dozen UnnEedeD ClaSses lIke scReen CoNfig bEans, scReen sTaTes,
the fragment sTate GeneratorS, to To ErrOr Codes, TO error MesSagEs, to
fraGment suBClaSsES, TO fLow subclasses, to actIvITY sUbclasseS. All wiTH
iF/eLSe's for spEcIal CondITIons jAmmeD EvErywhere Even in THiNgS that shOuLd
be miNdLesS DTos and MAny pArts neVer actuaLly usED and deep inheriTAnce
hierarchiES. IT COuLD all HavE been easily Done WIth 40 cLassES iNstEAd of
120, wIth muCh SImPLer, more reliable code.

leSson: asK the cOmpany about ouTsourcing hISTOry and plAns.

SOFtWAre engineering Has knOwn for a lonG Time that AbstrAction ovEr
composiTIOn really HurTs mAinTaiNABiLity and reliabILIty, bUt Clearly ThiS
companY neVer HeaRd oF tHat. NormalLy this soRt Of ThInG is FixabLE, but the
cOuPle StAff DevelOPers thEy had BrouGhT iN TenDed to juST wRITe whAtEvEr thEy
tHoUght wOuld WOrk, Shove it Into the apP, thEN calL iT a Day, not eVen smoke
testiNg, Let alone wrItIng Unit teSTS. DevelopErs frequently pushed code THat
didn'T evEn worK in rEal testinG on A devicE thEN left fOr vacaTion fOr A weEK
LeaviNG OtHerS tO deal with tHEIr mEss. If YoU senT them an Email with logs or
eveN Fix Commits, they'd cAll A meeTINg WitH MaNAgeMeNT to TRY to discredit
you And block thE fIXeS rather thaN WorKiNg to fix The probLems. AND their
sTuff simplY didn't worK oN the DEVicEs, so there wAs no possIble end goAL to
thEIr PolitIcs That woUlD leAve thE app fuNCtiOnal. IT made nO sEnse.

EvEn ignOrIng thingS that could be considered "sTyle" thEy didN't hAve much
teChnICal Ability eiTher. they thoughT chAngEs to vAriABles wOuld BE vIsiBLe
on aLl thREads as lonG As TheY USeD
 long team members have be en with th e org ani zat io n, t o
ta ctfully get as ense  of turnover. At a you ng co mp a ny y o umight  ask ho w  t e a m
c am etog et h er : was  it  throug h past wor kin grelationship s  a nd friends hip s? or
the in ter net eq ui val e nt of  pu tting  an ad in the  paper?
-- - ---
ln a nek2
Th a t  h appe ned to me recentl y .E veryone seemed  great  d u ri n g  th e i nterview
p ro cess, but the co m p a nyw as a disaster .

Once I g o t i n thedo orI  found  outal l  th e code wasorig inally pr oduced from
ou t sourcin g in R uss ia.  Soi tha d n oc omm e nt s a n d i t had la ye rafter  lay e r a fter  la yerof un needed abstra cti on.S o f iguri ng ou t th ebehav ior on  an e rr or
in the BLE b ackend commu nic at ing  w ith a fitnes s t rac ker req uired t r aci ng t h ro ugh half a dozen u nn e e de d classe s like sc re e n config  b ean s, s c r een s tate s ,the frag ment s t at egenerat or s, toto  er ror  code s , to  error  message s, to fragment subcl a sses, to flow su b c la s ses,  to  activity s ubcl a sses . Al l  w ith if/el se'sfo r  s p ecial conditions ja mm ed eve rywhe re even in th ings thats h o uld
be m indl e ss DTOs and manyparts  never act u ally use d and  deep in heritance h ierarchi es.  It  co uld a ll  have been ea s i ly d on e with40classes  in ste adof12 0, with m uch simp le r,  m or e r eliab l e code.
L ess on : a sk th e  compa ny ab outou ts o urc ing his t or y andpl an s.
Sof tw are e ngin e eri ng hasknown for  al ongti me  that a bstraction ov er 
compositi on  re ally h u r ts maint ainability and reliabil i ty, but  cl early  thi s
company  ne ver he ard of tha t. Nor mally  t his s ort o f th ing  i s fixable, b utthe
c ou plestaff d evelopers they had bro ught in tende d t o ju s t  w rit e  w h ate ve r  th e y 
thought wouldwork, shov ei tinto the a p p,th en call  it a d ay, n o t evensmoke
tes ting, let  a lone w rit ing unit t ests. De velopersf reque n tl y pus hed  codeth atdidn' t even wor k inreal t es ting o n a d ev ice then  left for vacation fora week 
leav ing  others t o d e alwith thei r me ss. If you  se ntthemane mailwith lo gso r
eve n fi x  commits, th ey' d ca ll a meetin g w ith  mana gem e nt totryto discredit
youa nd block the f ixes r ath ert hanwo rking to fix t hepr o b lems. An dtheir
stuff  simplydi d n't w ork on  the d evices, s ot here w as n o p ossible e ndgo a l to
th ei rp olitic s th at  would  leave thea p p functional. It  made n o sen s e.
Even  i gnoring thin gs that co uld be cons idered  "st yle"they di dn 't hav e m uc h
technica l  abilityeithe r. They  t houg htchange s to v ariab leswo uld  be visib l e 
o n  a ll thr eads  as l on g as  they use d 
 long_team members_have been with the_organization, to
tactfully_get_a sense_of_turnover. At a_young company you_might ask how team
came_together: was it_through_past working relationships and friendships? or
the internet equivalent of putting an ad in the_paper?

------
lnanek2
That_happened to_me_recently._Everyone seemed great during the_interview
process, but the company was_a disaster.

Once_I got in the door I found out_all_the code was_originally produced from
outsourcing in Russia. So it had no_comments and it had layer after_layer
after layer of_unneeded_abstraction._So figuring out the_behavior on an error
in the BLE_back end communicating with a fitness_tracker required tracing
through half a dozen unneeded_classes like screen config beans, screen_states,
the fragment state generators, to_to error_codes, to error messages, to
fragment_subclasses, to flow_subclasses, to_activity subclasses. All_with
if/else's for special conditions jammed everywhere_even in things_that should
be mindless DTOs and many_parts_never actually used_and_deep_inheritance
hierarchies. It_could all have_been_easily done_with_40 classes instead of
120, with much_simpler,_more reliable code.

Lesson: ask the company about_outsourcing history and plans.

Software_engineering_has known for a_long time that abstraction over
composition_really hurts maintainability and reliability, but_clearly this
company_never heard_of that. Normally this sort of thing is fixable, but the
couple_staff developers they had brought in_tended to just write_whatever they
thought_would_work, shove it_into_the app,_then call it a day, not even_smoke
testing, let_alone writing unit tests. Developers frequently_pushed code that
didn't even_work_in real testing on a device_then left for vacation for a_week
leaving others to deal with_their_mess._If you sent them an_email with logs or
even fix commits,_they'd call a_meeting with management to try to discredit
you_and_block the fixes rather than working_to_fix the problems. And their
stuff simply_didn't_work_on the devices, so there_was no possible end goal to
their_politics that would leave the app functional. It made_no sense.

Even ignoring_things that could be considered_"style"_they_didn't have much
technical ability either. They thought changes to variables_would be_visible
on all threads_as long as they used