» »

Ce programe de calculator să includeți în CV-ul dvs. Poți lucra în echipă: ce înseamnă asta cu adevărat? De ce ar trebui să tragem un semnal de alarmă?

17.08.2023

De-a lungul anilor, tatăl bogat și-a petrecut mult timp învățându-ne pe mine și pe fiul său cum să lucrăm și să interacționăm cu cel mai mult oameni diferiti. Dacă ai citit cartea Rich Kid, copil inteligent„, poate îți amintești că tata bogat își ședea adesea fiul și cu mine lângă el când avea conversații de afaceri cu oamenii. A învăța cum să angajezi și să concediezi oameni a fost foarte distractiv, mai ales când oamenii pe care tata bogat îi angaja și îi concedia aveau aceeași vârstă cu mama și tata. Pentru el, a ne învăța să comunicăm cu o varietate de oameni a fost cea mai importantă etapă inițială a educației noastre. El a spus constant: „Dacă înveți să lucrezi cu diferiți oameni, poți deveni mai bogat decât ai visat vreodată.”

Aceia dintre voi care ați citit cartea Cashflow Quadrant își pot aminti cât de importante au fost următoarele pentru tatăl bogat: circuit simplu:

Tatăl bogat a creat această diagramă pentru a-și ilustra ideea că lumea afacerilor este formată din patru tipuri de oameni. Cadranul „P” desemnează angajați, cadranul „S” - lucrători independenți și proprietari de întreprinderi mici, cadranul „B” - proprietari de întreprinderi mijlocii și mari și cadranul „I” - investitori.

Scopul principal al acestei diagrame este de a arăta că oamenii din cadrane diferite sunt diferiți la baza lor. Tatăl bogat a spus: „Pentru a reuși în cadranul B, trebuie să știi să comunici și să lucrezi cu oameni din toate cele patru cadrane. Acesta este singurul cadran în care această abilitate este absolut necesară.” Cu alte cuvinte, o afacere poate eșua dacă antreprenorul nu poate lucra și se înțelege cu diferite tipuri de oameni.

În anii 1980, m-am întors în Hawaii și am fost invitat de un tată bogat să lucrez în consiliul de administrație al unei companii în dificultate. Și tatăl bogat, care era unul dintre directorii săi, a vrut să învăț din acest exemplu neplăcut. Era o mică companie nou-înființată angajată în explorarea petrolului în Canada. Tatăl bogat nu a înființat compania, dar când au apărut dificultăți, a fost invitat să se alăture consiliului de administrație pentru a vedea dacă există vreo modalitate de a o salva.

Din cauza unei singure decizii a directorului financiar, compania era profund îndatorată și era în pragul falimentului. Când a început întâlnirea, tatăl bogat a întrebat restul consiliului:

De ce i s-a permis directorului financiar să accepte așa ceva decizii importante fara consultarea consiliului de administratie?

Unul dintre membrii consiliului a răspuns:

Pentru că a fost primul adjunct al șefului gigantului petrolier „XYZ”.

Şi ce dacă? Și dacă ar fi fost odată primul director adjunct al unei mari companii petroliere?

Am crezut că știe mult mai multe decât noi toți. Așa că i-au permis să acționeze după bunul plac”, a spus un alt membru al consiliului.

Tatăl bogat stătea tăcut, bătând cu degetele pe masă, apoi spuse: „Da, a fost primul director adjunct, dar a fost angajat timp de 30 de ani. Era angajat într-o companie mare. Habar n-are cum să conducă o mică afacere cu un buget redus. Vă sfătuiesc să-l înlocuiți, de preferință cu cineva care deținea deja propria companie și avea întreaga responsabilitate financiară, chiar dacă nu era o companie petrolieră. Există o diferență uriașă între un angajat și un antreprenor, indiferent de industria în care lucrează. Există o diferență uriașă între conducerea unei companii mici și conducerea unei companii mari. Pentru o companie mare, o eroare de această amploare este imperceptibilă. Pentru o companie mică, o astfel de greșeală este dezastruoasă.

Drept urmare, compania a intrat în faliment. Un an mai târziu, l-am întrebat pe tata bogat de ce a eșuat în cele din urmă. El a răspuns: „Conducerea companiei a fost extrem de proastă. Și asta în ciuda faptului că au fost angajați oameni grozavi și au fost plătiți cu mulți bani. Dar acești oameni nu au devenit niciodată o echipă grozavă. Antreprenorii de succes construiesc echipe grozave. Așa concurează cu marile companii care au mai mulți bani și mai mulți angajați.”

Abilități diferite

În a treia carte a mea, Ghidul tatălui bogat pentru investiții, am scris despre triunghi B-I bogat tată, care este fotografiat mai jos.

Triunghiul B-I este important pentru oricine dorește să înceapă o afacere în cadranul B sau are deja una. De asemenea, este important pentru oricine are o idee de un milion de dolari și intenționează să o transforme într-o afacere. Cu alte cuvinte, poate fi dificil pentru oameni să înceapă o afacere în cadranul B, deoarece o afacere adevărată necesită mai mult de o abilitate și mai mult de o specialitate.

Sistemul nostru educațional produce oameni cu aceste abilități specializate. Dar este nevoie de un antreprenor adevărat pentru a reuni oameni cu toate aceste abilități, pentru a-i face să lucreze în echipă și astfel să creeze o companie puternică.

Problema principala

Principala provocare nu este doar să asamblați toate cele patru cadrane din afacerea dvs. și să aveți toate abilitățile tehnice de la care triunghiul B-I. Provocarea este să găsești liderul antreprenorial care să-i determine pe acești oameni disparați cu abilități diferite și sisteme de valori de bază diferite să lucreze împreună ca o echipă. De aceea tata bogat a spus: „Cel mai greu lucru în afaceri este să lucrezi cu oamenii. A face afaceri ar fi ușor dacă nu ar fi oamenii.”

Cu alte cuvinte, un antreprenor trebuie să fie în primul rând un mare lider, iar fiecare dintre noi trebuie să muncească pentru a ne dezvolta abilitățile de leadership.

Ce este un antreprenor?

Tata bogat ne-a învățat pe fiul său și pe mine să fim antreprenori. Când l-am întrebat ce este un antreprenor, mi-a spus:

Un antreprenor vede o oportunitate, formează o echipă și creează o afacere care profită de pe urma acelei oportunități.

Apoi l-am întrebat:

Dacă văd o oportunitate, pot profita singur de ea?

Bună întrebare, a spus tata bogat. - Dacă vezi o oportunitate și poți profita de ea singur, atunci ești proprietar de mică afacere sau persoană care desfășoară activități independente activitatea muncii, - și tatăl bogat a început să explice diferența dintre o persoană angajată în activități independente și un antreprenor: - Un comerciant sau specialist individual este o persoană care poate produce un produs sau poate furniza un serviciu în primul rând pe cont propriu. De exemplu, un artist poate picta singur un tablou, un dentist vă poate vindeca dintele cu propriile mâini. Un adevărat antreprenor nu poate face ceea ce are în minte doar singur. Un antreprenor trebuie să fie capabil să reunească oameni inteligenți dintr-o varietate de medii cu abilități diferite și să îi facă să lucreze împreună pentru un obiectiv comun. Cu alte cuvinte, un antreprenor creează echipe care produc produse pe care nicio persoană nu le-ar putea produce singură. Motivul pentru care majoritatea oamenilor nu intră niciodată în arena mai largă este că rezolvă doar probleme pe care le pot rezolva singuri.

Deci, asta înseamnă că un antreprenor își asumă sarcini care necesită o întreagă echipă pentru a le rezolva? - am spus. - O persoană din cadranul B nu va fi plătită până când oamenii lui nu fac ceea ce trebuie să facă ca echipă. Majoritatea angajaților și a persoanelor care desfășoară activități independente sunt plătite pentru ceva ce fac singuri. Antreprenorul nu va primi bani până când echipa sa nu va atinge succesul.

Tatăl bogat a dat din cap că da și a continuat să explice:

La fel ca în construcții, un antreprenor atrage muncitori din diferite meserii (instalatori, electricieni, dulgheri) și profesioniști din diferite domenii (arhitecți, contabili) pentru a-și construi o casă, la fel un antreprenor atrage diverși muncitori, tehnicieni și profesioniști care îl ajută. crea afaceri.

Vrei să spui că un antreprenor este, de fapt, liderul unei echipe, deși el însuși poate să nu lucreze fizic în ea? - Am întrebat.

Cu cât poți organiza mai bine o echipă de oameni inteligenți și calificați fără să lucrezi ca parte a ei, cu atât poți deveni mai mult antreprenor de succes și mai semnificativ”, a explicat tata bogat. - Detin mai multe companii, dar nu lucrez in cadrul acestora. În acest fel, pot câștiga mai mulți bani și pot oferi mai multă valoare fără a fi nevoit să fac singur munca specifică. Acesta este motivul pentru care conducerea este abilitate esentiala necesar pentru a deveni un adevărat antreprenor.

Poți învăța abilități de conducere? - Am întrebat.

Da, a spus tata bogat. - L a observat că fiecare persoană are calitățile unui lider. Problema majorității oamenilor este că își dedică întreaga viață dezvoltării abilităților profesionale și de carieră, motiv pentru care majoritatea oamenilor se află în cadranele „E” și „S”. Foarte puțini oameni își dedică viața dezvoltării abilităților de conducere atât de necesare în cadranul B. Așa că spun: „Da, poți învăța să fii lider”.

Și mulți ani mai târziu, tatăl bogat a spus: „Liderii acceptă provocările vieții, în timp ce alții caută siguranța locului de muncă”.

Titlul a ieșit captivant, dar a dat peste cap. Voi spune imediat că vom vorbi despre 1C. Dragi utilizatori 1C, nu știți să lucrați cu tranzacții și nu înțelegeți ce sunt excepțiile. Am ajuns la această concluzie uitându-mă număr mare Cod 1C, născut în sălbăticia întreprinderii interne. În configurațiile tipice, toate acestea sunt destul de bune, dar o cantitate îngrozitoare de cod personalizat este scrisă incompetent din punctul de vedere al lucrului cu baza de date. Ați văzut vreodată eroarea „Această tranzacție a întâmpinat deja erori”? Dacă da, atunci titlul articolului se aplică și pentru tine. În sfârșit, să ne dăm seama ce sunt tranzacțiile și cum să le gestionăm corect atunci când lucrăm cu 1C.

De ce ar trebui să tragem un semnal de alarmă?

Mai întâi, să ne dăm seama care este eroarea „Erori au apărut deja în această tranzacție”. Acesta este, de fapt, un lucru extrem de simplu: încercați să lucrați cu baza de date într-o tranzacție deja anulată (anulată). De exemplu, undeva a fost apelată metoda CancelTransaction și încercați să o efectuați.

De ce este rău? Pentru că această eroare nu vă spune nimic despre unde s-a întâmplat de fapt problema. Când o captură de ecran cu un astfel de text vine în sprijinul unui utilizator, și mai ales pentru codul de server cu care nimeni nu poate interacționa interactiv, este... Am vrut să scriu „eroare critică”, dar am crezut că este un cuvânt la modă pe care nimeni nu îl plătește mai atentie... Acesta este un fund. Aceasta este o eroare de programare. Aceasta nu este o eroare întâmplătoare. Acesta este un bug care trebuie remediat imediat. Pentru că atunci când procesele serverului dvs. de fundal se defectează noaptea și compania începe să piardă rapid bani, atunci „Au apărut deja erori în această tranzacție” este ultimul lucru pe care doriți să-l vedeți în jurnalele de diagnosticare.

Există, desigur, posibilitatea ca jurnalul tehnologic al serverului (este pornit în producție, nu-i așa?) să ajute cumva la diagnosticarea problemei, dar în acest moment nu mă pot gândi la o opțiune din capul meu - cum exact pentru a găsi în ea cauza reală a acestei erori. Dar adevăratul motiv este unul - programatorul Vasya a primit o excepție în cadrul unei tranzacții și a decis că odată nu a fost o idee rea, „doar gândește-te, este o greșeală, hai să mergem mai departe”.

Ce sunt tranzacțiile în 1C

Este incomod să scrii despre adevăruri elementare, dar se pare că va fi necesar puțin. Tranzacțiile din 1C sunt aceleași cu tranzacțiile dintr-un SGBD. Acestea nu sunt niște tranzacții speciale „1C”, acestea sunt tranzacții în SGBD. Conform ideii generale a tranzacțiilor, acestea pot fi fie executate în întregime, fie deloc executate. Toate modificările aduse tabelelor bazei de date în cadrul unei tranzacții pot fi anulate imediat, ca și cum nimic nu s-ar fi întâmplat.

În continuare, trebuie să înțelegeți că 1C nu acceptă tranzacții imbricate. De fapt, ele nu sunt acceptate „în 1C”, dar nu sunt acceptate deloc. Cel puțin acele SGBD-uri cu care poate lucra 1C. Tranzacțiile imbricate, de exemplu, nu există în MS SQL și Postgres. Fiecare apel „imbricat” la StartTransaction pur și simplu crește contorul de tranzacții, iar fiecare apel la „CommitTransaction” pur și simplu scade acest contor. Acest comportament este descris în multe cărți și articole, dar concluziile din acest comportament aparent nu sunt suficient analizate. Strict vorbind, în SQL există un așa-numit. SAVEPOINT, dar 1C nu le folosește, iar chestia asta este destul de specifică.

Procedură Cod foarte util și important (Lista link-urilor directorului) StartTransaction();

Pentru fiecare legătură din lista de legături directoare buclă Director Object = Link.GetObject();

Directory Object.SomeField = "Am fost schimbat de la codul programului";

Director object.Write(); EndCycle;.

Vă rugăm să rețineți că codul este simplu. Pur și simplu există multe din acestea în sistemele dumneavoastră 1C. Și conține cel puțin 3 erori deodată. Gândiți-vă pe îndelete câte erori există în scenarii mai complexe pentru a lucra cu tranzacții scrise de programatorii dvs. 1C :)

Blocarea obiectelor

Deci, prima greșeală. În 1C există blocări de obiecte, așa-numitele „optimiste” și „pesimiste”. Nu știu cine a inventat termenul, l-aș fi ucis :). Este absolut imposibil să ne amintim care dintre ei este responsabil pentru ce. Despre ele au fost scrise în detaliu, precum și în altă literatură generală IT.

Esența problemei este că, în exemplul de cod specificat, un obiect al bazei de date este modificat, dar într-o altă sesiune poate exista un utilizator interactiv (sau un thread de fundal vecin) care va schimba și acest obiect. Aici, unul dintre voi poate primi eroarea „întrarea a fost modificată sau ștearsă”. Dacă acest lucru se întâmplă într-o sesiune interactivă, utilizatorul își va zgâria napii, va înjura și va încerca să redeschidă formularul. Dacă acest lucru se întâmplă într-un thread de fundal, atunci va trebui să îl căutați în jurnale. Și jurnalul de înregistrare, după cum știți, este lent, iar în industria noastră doar câțiva oameni configurează stiva ELK pentru jurnalele 1C... (noi, apropo, suntem printre cei care configurează și îi ajută pe alții să configureze :))

Pe scurt, aceasta este o greșeală enervantă și mai bine să nu o ai. Prin urmare, standardele de dezvoltare afirmă în mod clar că, înainte de a schimba obiectele, este necesar să plasați un obiect de blocare pe ele folosind " Director object.Lock()„. Atunci sesiunea concomitentă (care trebuie să facă și asta) nu va putea începe operația de actualizare și va primi eșecul așteptat, controlat.

Și acum despre tranzacții

Ne-am ocupat de prima greșeală, să trecem la a doua.

Dacă nu furnizați verificarea excepțiilor în această metodă, atunci o excepție (de exemplu, foarte probabil în metoda „Write()”) vă va scoate din această metodă fără a finaliza tranzacția. O excepție de la metoda „Scrie” poate fi aruncată în funcție de cele mai multe diverse motive, de exemplu, unele verificări ale aplicației în logica de afaceri vor funcționa sau va avea loc blocarea obiectului menționată mai sus. Oricum, a doua eroare spune: Codul care a început tranzacția nu este responsabil pentru finalizarea acesteia.


Exact așa aș numi această problemă. În analizatorul nostru de cod static 1C bazat pe SonarQube, am integrat chiar și separat astfel de diagnostice. Acum lucrez la dezvoltarea lui, iar imaginația programatorilor 1C, al căror cod vine la mine pentru analiză, mă lasă uneori în șoc și uimire...

De ce? Pentru că o excepție aruncată în partea de sus în interiorul unei tranzacții în 90% din cazuri nu va permite efectuarea acestei tranzacții și va duce la o eroare. Trebuie înțeles că 1C derulează automat o tranzacție neterminată numai după ce revine de la codul de script la nivelul de cod al platformei.

Atâta timp cât sunteți la nivelul codului 1C, tranzacția rămâne activă.

Să urcăm un nivel în stiva de apeluri:

Procedura ImportantCode() LinkList = GetLinkListWhere(); VeryUsefulAndImportantCode(LinkList); EndProcedure Uite ce se întâmplă. Metoda noastră problematică este apelată de undeva din exterior, mai sus în stivă. La nivelul acestei metode, dezvoltatorul habar nu are dacă vor exista tranzacții în cadrul metodei Cod foarte util și important sau nu. Și dacă există, vor fi toate finalizate... Suntem cu toții aici pentru pace și încapsulare, nu? Autorul metodei „ImportantCode” nu ar trebui să se gândească la ce se întâmplă exact în interiorul metodei pe care o apelează. Același în care tranzacția este procesată incorect. Ca rezultat, o încercare de a lucra cu baza de date după ce s-a aruncat o excepție din cadrul unei tranzacții, cu

probabilitate mare

va duce la faptul că „În această tranzacție bla bla...” Răspândirea tranzacțiilor între metode A doua regulă a codului „sigur pentru tranzacții”:

Numărul de referințe de tranzacție la începutul metodei și la sfârșitul acesteia trebuie să aibă aceeași valoare

. Nu puteți începe o tranzacție într-o metodă și o puteți încheia în alta. Probabil că este posibil să găsiți excepții de la această regulă, dar acesta va fi un fel de cod de nivel scăzut scris de oameni mai competenți. În general, nu poți scrie așa.

De exemplu:

Procedura ImportantCode() LinkList = GetLinkListWhere();

VeryUsefulAndImportantCode(LinkList);

Să ne întoarcem la metoda inițială și să încercăm să o reparăm. Voi spune imediat că nu vom remedia blocarea obiectului deocamdată, doar pentru a nu complica exemplul de cod.

Prima abordare a unei porecle tipice 1C

De obicei, programatorii 1C știu că o excepție poate fi aruncată la înregistrare. De asemenea, le este frică de excepții, așa că încearcă să-i prindă pe toți. De exemplu, așa:

Procedură Cod foarte util și important (Lista link-urilor directorului) StartTransaction();

Pentru fiecare legătură din lista de legături directoare buclă Director Object = Link.GetObject(); Directory Object.SomeField = "Am fost schimbat de la codul programului"; AttemptDirectoryObject.Write();

Exception Log.Error("Nu s-a putut scrie elementul %1", Link);

Continua; EndTempt;

EndCycle; CommitTransaction(); EndProcedure

Ei bine, lucrurile s-au mai bine, nu? La urma urmei, acum

posibile erori

  • înregistrările sunt procesate și chiar înregistrate. Excepții nu vor mai fi aruncate atunci când scrieți un obiect. Și în jurnal puteți vedea chiar pe ce obiect, nu am fost prea leneș și am inclus un link în mesaj în loc de laconicul „Eroare la scrierea unui director”, deoarece dezvoltatorii care se grăbesc adesea le place să scrie. Cu alte cuvinte, există o preocupare pentru utilizator și o creștere a competențelor.
  • CommitTransaction()
  • Anulați tranzacția()
  • TranzacțieActivă()

Primele 3 metode sunt evidente și fac ceea ce spun numele lor. Ultima metodă returnează True dacă contorul de tranzacții este mai mare decât zero.

Și există caracteristică interesantă. Metodele de ieșire din tranzacție (Commit și Cancel) aruncă excepții dacă numărul de tranzacții este zero. Adică, dacă apelați unul dintre ei în afara unei tranzacții, va apărea o eroare.

Cum să folosești corect aceste metode? Este foarte simplu: trebuie să citiți regula formulată mai sus:

Cum să respectați această regulă? Să încercăm:

Am înțeles deja mai sus că metoda Do Something este potențial periculoasă. S-ar putea să arunce un fel de excepție, iar tranzacția se va „strecura” din metoda noastră. Bine, să adăugăm un posibil handler de excepții:

StartTransaction(); Încercați DoSomething(); Excepție // dar ce să scriu aici? EndTempt; CommitTransaction();

Grozav, am prins eroarea care se producea, dar ce ar trebui să facem în privința ei? Scrieți un mesaj în jurnal? Ei bine, poate dacă codul de înregistrare a erorilor ar trebui să fie exact la acest nivel și așteptăm o eroare aici. Dacă nu? Dacă nu ne-am aștepta la nicio eroare aici? Atunci ar trebui doar să trecem acea excepție în sus și să lăsăm un alt strat al arhitecturii să se ocupe de ea. Acest lucru se face cu operatorul „CauseException” fără argumente. În aceste Javascript-uri ale tale, acest lucru se face exact în același mod cu operatorul aruncare.

StartTransaction(); Încercați DoSomething(); Excepție ThrowException; EndTempt; CommitTransaction();

Așadar, așteptați... Dacă doar aruncăm excepția mai departe, atunci de ce este nevoie de o încercare? Iată de ce: regula ne obligă să asigurăm finalizarea tranzacției pe care am început-o.

StartTransaction(); Încercați DoSomething(); ExceptionCancelTransaction();

throwException; EndTempt; CommitTransaction(); Acum pare a fi frumos. Cu toate acestea, ne amintim că nu avem încredere în codul Do Something(). Ce se întâmplă dacă autorul din interior nu a citit acest articol și nu știe cum să lucreze cu tranzacții? Dacă a luat-o acolo și a apelat la metoda CancelTransaction sau, dimpotrivă, ar fi comis-o? Este foarte important pentru noi că handlerul de excepții nu a lansat o nouă excepție

, altfel eroarea originală se va pierde și depanarea va deveni imposibilă. Și ne amintim că metodele Commit și Cancel pot arunca o excepție dacă tranzacția nu există. Aici este utilă metoda TransactionActive.

Versiunea finală

StartTransaction(); Încercați DoSomething(); Excepție If TransactionIsActive() Then CancelTransaction();

endIf; throwException; EndTempt; CommitTransaction(); Așteptați, dar nu numai „Anulare tranzacție” poate produce erori. Atunci de ce „CommitTransaction” nu este împachetat în aceeași condiție cu „TransactionActive”? Din nou, folosind aceeași regulă: Codul care a început tranzacția ar trebui să fie responsabil pentru finalizarea acesteia..

Tranzacția noastră nu este neapărat prima care poate fi imbricată. La nivelul nostru de abstractizare, ni se cere doar să ne pese de tranzacția noastră. Toate celelalte nu ar trebui să ne intereseze. Sunt străini, nu ar trebui să fim responsabili pentru ei. Tocmai ele NU TREBUIE. Nu trebuie făcută nicio încercare de a determina nivelul real al contorului de tranzacții. Acest lucru va întrerupe din nou încapsularea și va duce la logica de gestionare a tranzacțiilor „întinsă”. Am verificat doar activitatea în handlerul de excepții și doar pentru a ne asigura că handlerul nostru

nu va genera o nouă excepție, „ascunzându-i” pe cea veche

Lista de verificare a refactorizării

Să ne uităm la unele dintre cele mai frecvente situații care necesită intervenția codului.

Model:

Lista de verificare a refactorizării

StartTransaction(); Fă ceva(); CommitTransaction();

Înfășurați-l într-un design „sigur” cu Attempt, Keep Alive and Throw an Exception.

If NotTransactionActive() ThenStartTransaction()EndIf

Analiză și refactorizare. Autorul nu a înțeles ce face. Este sigur să începeți tranzacții imbricate. Nu este nevoie să verificați starea, trebuie doar să începeți tranzacția imbricată. Sub modul, probabil că este încă distorsionat acolo cu fixarea lor. Acest lucru este garantat hemoroizi.

O variantă aproximativ similară:

Lista de verificare a refactorizării

Dacă Tranzacția este Active() Atunci CommitTransaction() EndIf

  1. în mod similar: comiterea unei tranzacții prin condiție este ciudată. De ce există o condiție aici? Ce, altcineva ar fi putut deja să înregistreze această tranzacție? Motivul procesului.
  2. StartTransaction() While Select.Next() Loop // citirea unui obiect prin referință // scrierea unui obiect EndCycle; CommitTransaction();
  3. introduceți blocarea controlată pentru a evita blocajul

Lista de verificare a refactorizării

introduceți un apel la metoda Block

Această tranzacție nu se va mai finaliza în cazul unei excepții. Nu are rost să continui ciclul. Codul trebuie rescris, verificând sarcina originală. În plus, furnizați un mesaj de eroare mai informativ.

În concluzie

Eu, așa cum probabil ați ghicit deja, sunt unul dintre cei care iubesc platforma 1C și dezvoltarea pe ea. Desigur, există plângeri cu privire la platformă, în special în mediul Highload, dar, în general, vă permite să dezvoltați rapid și ieftin aplicații de întreprindere de foarte înaltă calitate. Furnizarea imediată a unui ORM, a unei GUI, a unei interfețe web, a raportării și multe altele. În comentariile despre Habré scriu de obicei tot felul de lucruri arogante, așa că băieți - principala problemă cu 1C, ca ecosistem, nu este o platformă sau un furnizor. Acesta este un prag prea mic pentru intrare, care permite oamenilor să intre în industrie care nu înțeleg ce este un computer, bază de date, client-server, rețea și tot ce este. 1C a făcut dezvoltarea de aplicații pentru întreprinderi prea ușoară. In 20 de minute pot scrie un sistem de contabilitate pentru cumparari/vanzari cu rapoarte flexibile si client web. După aceasta, îmi este ușor să mă gândesc că la o scară mai mare poți scrie aproape în același mod. Cumva 1C va face totul intern, nu știu cum, dar probabil o va face. Lasă-mă să scriu „StartTransaction()”....

Și știi, cel mai important lucru este că este minunat. Ușurința dezvoltării în 1C vă permite să implementați instantaneu idei de afaceri și să le integrați în procesele companiei. Apoi puteți întotdeauna refactoriza, principalul lucru este să înțelegeți cum. Și dacă brusc aveți nevoie de ajutor pentru auditarea sistemului „1C lent”, contactați specialiștii în optimizare. Nu este deloc lentă.

Angajatorilor le place să întrebe despre rezistența la stres, dar chiar vrei să obții nou loc de muncă că sunt gata imediat să-și confirme disponibilitatea de a lucra din greu într-o situație de urgență. Dar nu vă grăbiți să spuneți „da” imediat - acest lucru vă poate dăuna carierei și sănătății.

Nu ar trebui să spui la un interviu că acționezi cel mai bine în situații de urgență. O astfel de afirmație, mai ales într-o formă clar dură, poate alerta angajatorul. Va crede că în alte condiții te simți inconfortabil. De obicei, nu ar trebui să abordați acest subiect fără a pune o întrebare de la recrutor sau potențial șef. Dar dacă în timpul interviului îți devine clar că situațiile de urgență sunt obișnuite în companie, atunci poți și ar trebui să menționezi experiența ta de succes de a lucra în situații de urgență.

Atunci când un angajator selectează un angajat, el află adesea dacă solicitantul poate lucra în condiții de sarcină de vârf, dacă are experiență în astfel de activități și dacă acest lucru l-ar putea intimida. În unele zone (construcții, turism, comercializare a anumitor produse alimentare și altele) există vârfuri sezoniere. Situațiile de urgență pot fi asociate cu ora din zi sau cu anumite zile (afaceri cu restaurante, comerț cu amănuntul). Sau, de exemplu, pentru contabili - cu perioada de intocmire a rapoartelor.

Este întotdeauna mai ușor pentru solicitant dacă angajatorul întreabă direct cum se simte persoana în condiții de volum mare de muncă. Apoi, merită să spuneți că aveți o astfel de experiență și sunteți calm în astfel de situații. Dar nu poți spune că lucrezi cel mai bine în aceste condiții. Intervievatorul tău poate crede că s-ar putea să te plictisești foarte repede de programul regulat al activităților de birou. Este mai bine să te imaginezi ca generalist din acest punct de vedere. Prin urmare, răspundeți, de exemplu, astfel: „Desigur, îmi place să lucrez când totul este clar și conform planului, dar dacă se întâmplă o urgență, atunci este în regulă, nu poți face afaceri fără ea”.

Pentru a ilustra, voi da un exemplu luat dintr-un interviu cu un solicitant pentru postul de manager de destinație la o agenție de turism.

  • În afacerea noastră există perioade diferite si situatii. În ce mediu lucrezi cel mai bine?
  • În perioada sărbătorilor, înainte de Revelion și Sărbători mai, înainte de sărbătorile copiilor încărcăturile sunt de vârf. Acesta este cel mai interesant moment de lucru. Este important să nu ratați un singur client - planificarea clară a tuturor contactelor, creșterea intensității, procesare.
  • Ce se întâmplă dacă există o pauză?
  • Întotdeauna există muncă care poate și ar trebui făcută în astfel de perioade. Este important să mențineți contacte cu clienții vechi, să colectați și să pregătiți informații pentru următorul sezon cald și să dezvoltați noi oferte. Dacă o persoană își cunoaște și iubește meseria, are întotdeauna ceva de făcut.

Angajatorul ar trebui să aibă impresia că ești mereu pregătit să lucrezi în modul cerut de situație.

În secțiunea competențe profesionale sau Informații suplimentare multe indică cunoștințe de calculator. Dar nu toată lumea poate face o listă de programe de calculator pentru un CV. Desigur, cel mai bine este să indicați doar software-ul cu care știți cu adevărat să lucrați. La urma urmei, recrutorul vă poate cere să vă arătați abilitățile chiar la interviu.

Reguli de scriere

Ofițerii de resurse umane sfătuiesc să scrie despre abilitățile de calculator chiar și acelor persoane care aplică pentru un post care nu are legătură cu lucrul pe un computer. Când descrii nivelul tău de competență în această tehnică, poți indica o listă de programe pe care știi să le folosești. De asemenea, trebuie să scrieți la ce nivel cunoașteți computerul. Puteți indica acest lucru după cum urmează:

  • utilizator de PC sigur;
  • nivel mediu;
  • abilități de calculator la nivel de intrare.

Dar nu merită să descrieți în detaliu cunoștințele dvs. despre anumite programe. Fiecare solicitant poate folosi acest exemplu de scriere a acestei coloane:

Utilizator experimentat. Abilitatea de a lucra cu programe de bază MS Office (Access, Excel, Power Point, Word, WordPad), editori grafici (Picture Manager, CorelDRAW), programe pentru trimiterea și primirea corespondenței electronice (Outlook Express). Pot căuta rapid informațiile necesare pe Internet, pot lucra cu diverse browsere (Opera, Firefox, Chrome, Amigo, Internet Explorer). Bună cunoaștere a caracteristicilor sistemului de operare Windows.

Versiunea universală a acestei secțiuni poate arăta ușor diferit:

Cunostinte intermediare PC. Capacitatea de a lucra cu programe MS Office (experienta cu Excel, Word), de a cauta si de a descarca informatiile necesare prin Internet (a lucrat cu browserele Opera, Firefox), pot trimite e-mailuri.

Specificul profesiilor

Există o serie de specialități pentru care este necesar să enumerați cunoștințele de programe care ajută la lucru. Desigur, este mai bine să începeți descrierea cu Informații generale despre nivelul de cunoștințe de calculator și capacitatea de a lucra cu programe de bază. De exemplu, în CV-ul unui contabil, această coloană poate arăta astfel:

Utilizator de computer încrezător. Cunoașterea programelor de bază Microsoft Office, cum ar fi MS Access, Word, PowerPoint, Excel, capacitatea de a lucra cu e-mail (inclusiv Outlook Express, Mirramail, EmailOpenViewPro). Cunoștințe excelente de internet în diverse browsere (a lucrat în Opera, Google Chrome, Mozilla Firefox și altele). Cunostinte programe informatice specializate: 1C: Contabilitate 7.7 si 8, Parus, Sisteme Client-Banca.

O listă prea mare care listează toate tipurile de software poate avea efectul opus: angajatorul va decide că cunoștințele dumneavoastră sunt foarte superficiale.

Ar fi bine ca un candidat pentru postul de director de vanzari, pe langa lista de programe de baza pentru PC, sa indice si cunostinte de specialitate. În CV-ul său, secțiunea specificată a coloanei „aptitudini profesionale” poate arăta astfel:

Nivelul utilizatorului competent. Abilități în căutarea de informații specializate pe Internet, experiență de lucru cu diverse browsere (inclusiv Explorer, Opera, Chrome și altele). Cunoașterea elementelor de bază ale lucrului cu sistemele de operare Linux și Windows, programe de birou de bază, editori de text și grafice (Word, WordPad, PowerPoint, Access, Paint, Excel, Photoshop). Abilități în lucrul cu sisteme specializate „BEST”, 1C:Enterprise (specificația „Trade and Warehouse”), experiență în lucrul cu un sistem CRM care reglementează relațiile cu clienții.

Dacă postul necesită cunoștințe mai aprofundate ale anumitor programe, atunci acestea trebuie indicate. Așadar, pentru postul de programator PHP, pe lângă capacitatea de a lucra cu un PC, este posibil să aveți nevoie de următoarele: cunoștințe de PHP, API de social media, API WordPress, CSS, HTML, JS, CSS.

În acest din urmă caz, trebuie să vă concentrați pe cunoștințele dvs. și pe cerințele angajatorului.

Dacă stăpânirea noilor programe nu vă provoacă dificultăți, acest lucru este demn de remarcat la sfârșitul secțiunii.