Wir tun was wir mĂŒssen, weil wir können - GLaDOS
Ischewsk heute
Der erste Februar markiert genau zwei Jahrzehnte, seit ich anfing, offiziell als Softwareentwickler zu arbeiten:
Ich mache bis heute weiter. Und aus irgendeinem Grund scheint es mir, dass viele daran interessiert sein werden, die Geschichte kennenzulernen, wie Sie eine vollstĂ€ndig erfolgreiche horizontale Programmierkarriere machen können, ohne Ihre Heimatstadt zu verlassen, und fast die ganze Zeit ziemlich interessante, wenn nicht verrĂŒckte Aufgaben zu erledigen.
NatĂŒrlich hat jeder sein eigenes MaĂ an âErfolgâ, aber meine Tatsache ist, dass ich in den letzten 15 Jahren in leitenden Positionen an Projekten gearbeitet habe, die hauptsĂ€chlich an groĂe Firmenkunden oder auslĂ€ndische Kunden gebunden sind, und fast jeder neue Job mich alleine findet. Und immer noch nicht mĂŒde.
Ich möchte warnen, dass meine Geschichte ein typischer Longride im Format eines Interviews aus der ersten Person ist, manchmal langweilig und fast ohne Bilder, weil ich im Grunde ein Backend bin. FĂŒr einen Leser ohne technischen Hintergrund kann es schwierig sein, da es voller Programmierjargon ist (ich habe versucht, einige der Begriffe zu erklĂ€ren, aber nicht alle). Und auch anstĂ€ndige alte Meme, nostalgische Details und lokale Kulturwissenschaften.
Aber du liebst Autobiografien mit
autistischen Witzen, nicht wahr?
Ischewsk, Mitte der achtziger Jahre
Alles begann vor langer Zeit. Eines Tages nahm mich meine Mutter, die als Programmiererin in einem gewöhnlichen sowjetischen Forschungsinstitut arbeitete und sich mit Reverse Engineering von Proben westlicher Computertechnologie beschĂ€ftigte, zur Arbeit - um zu zeigen, was, wie und mich spielen zu lassen. KĂŒrzlich kamen sie zu geschmuggeltem "Personal" - PC / AT, auf dem alle Arten von Baggern und Tetris laufen.
Vor dem Erscheinen der âMitarbeiterâ arbeitete das Forschungsinstitut fĂŒr die Sowjet-EU (Klon IBM S / 360, belegt einen Raum) und SM (Klone VAX, PDP-11 usw., normalerweise ein Schrank von der GröĂe eines Klaviers), sodass zu Hause einige Spulen verwendet wurden LochbĂ€nder und Ausdrucke mit Baugruppenlisten. Meine Mutter unternahm auch regelmĂ€Ăig GeschĂ€ftsreisen mit Paketen âPfannkuchenâ - austauschbare Magnetantriebe mit einem Gewicht von jeweils 15 Pfund, aus Angst vor Fahrten mit Obussen -, sodass ich mental auf die Tour vorbereitet war. Erwartet etwas Ăhnliches wie die Szenerie der damaligen Science-Fiction-Filme.
Und ich habe gesehen. Aber die SchrĂ€nke, in denen sich etwas dreht, mit GlĂŒhbirnen blinkt und mit Ventilatoren summt, waren selbst auf einem monochromen Bildschirm nicht so beeindruckend wie der Digger. Neben der Software fĂŒr das PCB-Layout, das Zeichnen auf einem Plotter (Beobachten eines Tintenmarkers ĂŒber ein A1-Blatt - es schien eine Art Magie zu sein) und endlosen LeinwĂ€nden bekannter Assembler-Listen von Programmen fĂŒr CNC-Maschinen, an denen ich damals arbeitete Mutter
Unnötig zu erwĂ€hnen, dass die Entscheidung, Programmierer zu werden, im Kopf eines ZweitklĂ€sslers sofort Gestalt annahm und sich dort fest etablierte. Ich war sieben Jahre alt und kann mich nicht erinnern, ob ich einmal davon getrĂ€umt habe, Astronaut, Feuerwehrmann zu sein oder was Kinder normalerweise dort sein wollen - aber sobald ich mich entschlossen habe, Programmierer zu werden (auĂerdem gut, denn worum geht es? schlecht werden?), nichts anderes interessierte mich.
Und um ein guter Programmierer zu werden, muss man hart lernen. Ich beendete die ersten drei Klassen einer Gesamtschule mit hervorragenden Noten und konnte mit mathematischen Vorurteilen in ein Lyzeum gelangen. Im Allgemeinen gab es zu dieser Zeit in der Stadt mehrere Schulen mit guter BildungsqualitĂ€t - 29, 30, 41 (Lyzeen), 56 (Gymnasium). Jedes ist eine lokale Marke und ein dynastischer Kindergarten fĂŒr technische, humanitĂ€re oder leitende Angestellte, je nach Profil und Elite. Besonders die âDreiĂigâ - fast alle örtlichen Fabrikleiter (und Ischewsk war traditionell eine Stadtfabrik) haben das Studium abgeschlossen, und in der Regel die Matclass. Wie jedoch meine Mutter (und sie wurde schlieĂlich auch eine FĂŒhrungskraft, aber dazu spĂ€ter mehr).
Und wenn wir ĂŒber die Schule sprechen, die Tatsache, dass es im Korridor des zweiten Stocks Schachtische mit einer ganzen Reihe von Figuren gab, die stĂ€ndig nach Pausen gefragt waren, und die SpitzenvorhĂ€nge an den Fenstern blendend weiĂ waren, dann lohnt es sich, sich ĂŒber die TransferprĂŒfungen ab der siebten Klasse zu wundern - an denen lokale SchĂŒler gemeinsam mit Kindern anderer Schulen teilnahmen. Zu dieser Zeit hielt âdreiĂigâ die Marke noch (sie lieĂ sie nach meiner Veröffentlichung fallen und leider vollstĂ€ndig).
Die Kultur war hoch und die Konkurrenz sehr groĂ. Von den 30 hervorragenden SchĂŒlern, die mit mir in die fĂŒnfte Klasse kamen, blieben zehn bis zum Finale in der mathematischen Richtung, der Rest verstreute sich auf andere Weise oder brach sogar ab. TatsĂ€chlich gab es zwei Klassen, aber nur die SchĂŒler der ersten Klasse, die die obere HĂ€lfte der akademischen Bewertung besetzten, konnten an der Olympiadenmannschaft teilnehmen, die traditionell in der Republik und in Russland (und manchmal auch an internationalen Wettbewerben) stattfand.
Ich habe irgendwo auf dem sechsten Platz rumgehangen und bin in regelmĂ€Ăigen AbstĂ€nden höher gestiegen. WĂ€hrend der Vorbereitung auf die Olympischen Spiele befand ich mich daher oft mit den anderen fortgeschrittenen Leuten an den hinteren Schreibtischen, wo wir anstelle von unabhĂ€ngiger Arbeit Probleme +, Aufgaben ° und sogar Aufgaben ** lösten. In Wahrheit habe ich kein olympisches Denken - ich beschĂ€ftige mich gut mit der Essenz der Probleme, aber ich denke zu langsam und mache immer mehrere VersuchsansĂ€tze, also bin ich nie ĂŒber die StadtbĂŒhne hinausgegangen. Nun, zumindest habe ich teilgenommen, und das Ergebnis kann als Gehirntraining fĂŒr Nicht-Standard angesehen werden (aber reproduzierbar, im Gegensatz zu den Entscheidungen typischer Olympiaden, die normalerweise streng ad hoc sind).
Wie auch immer, selbst der letzte Dreier nach den MaĂstĂ€ben eines Elite-Kindergartens wĂ€re ein ausgezeichneter SchĂŒler in einer regulĂ€ren Schule gewesen, und an der UniversitĂ€t hat es mich angerufen ... jedoch in Ordnung.
Nach vielen Jahren, in denen ich meine FĂ€higkeiten eingeschĂ€tzt habe, bereue ich manchmal, dass ich keine HauptuniversitĂ€t anstelle der örtlichen technischen UniversitĂ€t gewĂ€hlt habe - meine Klassenkameraden haben das Moskauer Institut fĂŒr Physik und Technologie und die Moskauer Staatliche UniversitĂ€t erfolgreich abgeschlossen (und einige arbeiten schlieĂlich bei Google), aber das ist bedauerlich vergeht schnell, wenn ich mich erinnere, wie ich in allgemeinen Semestern vor dem "Ăquator" studiert habe. Ich habe ĂŒberhaupt nicht gelernt - SchulgepĂ€ck, einschlieĂlich zusĂ€tzlicher Kurse, die von denselben UniversitĂ€tslehrern unterrichtet wurden, reichte aus, um in fast allen FĂ€chern âMaschinenâ zu erhalten. Ich habe jedoch nicht einmal die EinfĂŒhrungskurse belegt - ich wurde bereits im April Student, nachdem ich Vorbereitungskurse abgeschlossen und die höchste Punktzahl bei den ScheinprĂŒfungen erzielt hatte. Es war, wie Sie wissen, nicht schwierig.
Am Ende des gesamten UniversitĂ€tsprogramms brauchte ich zumindest irgendwie nur einen Datenbankkurs - Ende der neunziger Jahre war er fĂŒr fĂŒnfzehn Jahre, wenn nicht mehr, veraltet, und das HauptgrundstĂŒck fĂŒr die Lehre wurde von ehemaligen Fabrikprogrammierern geschaffen. Was sie lehren könnten, auĂer dem primitiven âWasserfallâ und der prozeduralen Programmierung, ist eine rhetorische Frage. Von den Vorteilen einer solchen "Ausbildung" - ich kann Assembler lesen und verstehe, wie das Betriebssystem mit Eisen funktioniert. Aber industrielles Programmieren im modernen Sinne war es entschieden unmöglich, an einer UniversitĂ€t zu lernen.
Nur die Selbstbildung im Kampf konnte mich retten, und im zweiten Jahr fand ich einen Job. Genau dort in der Abteilung ein Systemadministrator. Die Arbeit ist mittelmĂ€Ăig, aber sie garantiert uneingeschrĂ€nkten Zugriff auf FakultĂ€tsserver und das Internet und ermöglicht es Ihnen, zumindest tagelang im Labor herumzuhĂ€ngen - und Zeit damit zu verbringen, nicht nur mit MĂ€dchen von einer nahe gelegenen UniversitĂ€t im IRC zu plaudern, sondern auch etwas fĂŒr alle möglichen ZufĂ€lle zu codieren Kunden. Das Mindestgehalt im Jahr 1999 betrug 83 Rubel 49 Kopeken (warum einen SchĂŒler mehr bezahlen?), Und eine Flasche des Chuvashia-BlumenstrauĂes im Dekanat gegenĂŒber dem SchulgebĂ€ude kostete 4,60, sodass wir manchmal mit anderen Ă€hnlichen Studentenverwaltern ein paar Kisten abgaben billiges Bier fĂŒr den Sportunterricht, um keine Zeit mit bedeutungslosen Kreisen im Stadion zu verschwenden.
Anstelle von Physra wurde Zeit fĂŒr unser eigenes Handwerk auf Perl und tcl verschwendet (es ist sehr interessant, den
Irz- Chatbot zu
programmieren , um MĂ€dchen von einer benachbarten UniversitĂ€t zu unterhalten) sowie ein internes System fĂŒr die DurchfĂŒhrung von Turnieren gemÀà den
ACM- Regeln zu entwickeln.
Ischewsk âmehanâ fand auch eine eigene Olympiadenmannschaft, die zu dieser Zeit auch weit von den letzten PlĂ€tzen bei internationalen Wettbewerben entfernt war, aber es schien mir viel interessanter, Infrastruktur fĂŒr Turniere bereitzustellen, als sich den Kopf zu zerbrechen. AuĂerdem sollte die Rangliste so und so sein. Abgesehen von absolut einfachen und Skriptsprachen scheute ich mich nicht vor Dienstprogrammen fĂŒr die Buchhaltung auf einer Reihe von 1C und Visual Basic oder fĂŒr das Dekanat auf FoxPro und Delphi, und zum SpaĂ schrieb ich Applets in Java fĂŒr meinen "Hamster" auf dem FakultĂ€tsserver.
Ăbung ist nicht ĂŒberflĂŒssig wie Geld. Da ich fĂŒr die ersten Kurse faul war, traf ich fĂŒr das Studium und blieb ohne Stipendium. Am Ende ging ich wegen der fehlgeschlagenen Sitzung insgesamt zur Akademie. Dabei spielten auch die Grippe, die einem von den FĂŒĂen fiel, und die Depression, die nach unglĂŒcklicher Liebe zusammenbrach, eine Rolle.
Wie dem auch sei, es gelang mir nicht, das vierte Jahr zum ersten Mal zu beenden, und ich musste sechs Monate Freizeit fĂŒr eine gute Nutzung aufwenden, wĂ€hrend ich versuchte, nicht in der Armee zu rasseln.
Sommer 2001, Ischewsk
Wohin zu einem verlernten SchĂŒler mit der FĂ€higkeit, Nyx und das verstreute GepĂ€ck praktischer Programmierkenntnisse fĂŒr etwas Einfaches zu verwalten? Ohne Diplom haben sie nichts mitgenommen, auĂer einem Systemadministrator, aber ich wĂŒrde jede Arbeit ĂŒbernehmen, nur um die Zeit zu warten, bis ich mich erholt habe.
GlĂŒcklicherweise tauchte der Schreibtisch mit dem sprechenden Namen âVirtual Izhevskâ auf. Ein mikroskopisch kleines Webstudio, aber wie es damals eigentlich jedes selbstbewusste Webstudio sein sollte - mit einem Katalog regionaler Ressourcen, einem Webserver und vielen Projekten unterschiedlicher MarginalitĂ€t. Wie gefĂ€llt Ihnen zum Beispiel der Online-Schönheitswettbewerb "Miss BikiNu-2002"? Und wenn ich sage, dass er einen geschlossenen Bereich fĂŒr Sponsoren hatte, mit interessanteren Fotos von âModelsâ?
Kurz gesagt, der gleiche Addierer. Auf der anderen Seite hatte der Direktor des BĂŒros die Idee, die gesamte Entwicklung des Studios von der Bremse Perl bis zur frisch veröffentlichten PHP-Version 4 zu reparieren, weil er irgendwo gelesen hatte, dass er die Zukunft hatte (und er war blöd schneller). Im Allgemeinen hat sich der Regisseur nicht geirrt. Ich habe dort nur sechs Monate durchgehalten, aber zumindest habe ich gelernt, in PHP ertrĂ€glich gut zu schreiben - und aufgrund der Besonderheiten der Projekte musste ich mich um die Sicherheit kĂŒmmern. Sie versuchten, sie zu brechen, um Stimmen zu betrĂŒgen - die Sponsorenpreise bei den Wettbewerben waren ziemlich gut, wie zum Beispiel Reisen zu einer Gruppe von Freunden in der TĂŒrkei, und MĂ€dchen von dieser benachbarten UniversitĂ€t versammelten ganze Teams von Gratulanten, die bereit waren, sie an die Spitze zu bringen.
Interessant war auch die Initiative desselben Direktors, eine lokale Community von Webentwicklern zusammenzubringen - ein Forum, in dem sich alle Ischewsk-Entwickler und -Anbieter aufhalten wĂŒrden - und das in gewisser Weise auch in der fĂŒnften Reinkarnation noch lebendig ist . Welche andere Stadt hat ein eigenes Rockfestival fĂŒr 1.500 IT-Leute? Und in Ischewsk gibt es RockIzhaiti. Alles begann dort auf einem selbstgeschriebenen Message Board, wo die Entwickler und Manager eines Dutzend lokaler BĂŒros ihre Projekte und Erfahrungen zunĂ€chst kulturell hinter verschlossenen TĂŒren austauschten und dann begannen, epische Srachs zu zĂŒchten, die schnell offline gingen. Die letzten Echos dieser legendĂ€ren verbalen Schlachten und GeschĂ€ftsvendetten der frĂŒhen 2000er Jahre schwelen immer noch in der örtlichen Gemeinde.
Ich erholte mich an der UniversitÀt, und es gab keinen Grund mehr, Tage und NÀchte im Keller herumzuhÀngen und mich vor einem Kameradenmajor zu verstecken.
Aber das Schicksal selbst warf sofort die Arbeit in einem Webstudio ein paar Stockwerke höher (und der Rang der Projekte) höher. Meine Mutter hatte zu diesem Zeitpunkt ihre Programmierkarriere abgeschlossen, aber sie verlieĂ die IT nicht (es ist nicht so einfach, die IT zu ĂŒbernehmen und zu verlassen), sondern bekam eine Stelle als stellvertretende Direktorin einer der Infrastrukturabteilungen dieser sehr benachbarten UniversitĂ€t, von der die MĂ€dchen stammten, die in dieser Geschichte bereits einige Male erwĂ€hnt wurden. Die Jungen studierten jedoch auch dort und sogar in den Fachgebieten âInformatik auf dem Gebiet von etwasâ, aber die UniversitĂ€t ist nicht technisch.
Die Abteilung wurde als "Zentrum fĂŒr Multimedia- und Internet-Technologien" bezeichnet und befasste sich offiziell mit der UnterstĂŒtzung von UniversitĂ€tsstandorten, Fernlehrsystemen usw., aber tatsĂ€chlich war es eine hybride Struktur als Teil des GeschĂ€ftsumfelds der UniversitĂ€t, das heiĂt, sie verdiente Geld und nicht nur, um das Bild zu pflegen.
Die Multimedia-Abteilung produzierte PrĂ€sentations-Discs fĂŒr lokale Fabriken (z. B.
Izhmash und
SEGZ ), und die Abteilung fĂŒr Internet-Technologie war
genau das Web-Studio, das regelmĂ€Ăig Preise auf Branchenausstellungen gewann. Ehrlich gesagt, inspirierte die Wand im BĂŒro des Direktors, die mit Diplomen vom Boden bis zur Decke hing. GrundsĂ€tzlich Kunden, die zu dem Thema gekommen sind, um sich auf die Entwicklung des nĂ€chsten reprĂ€sentativen Standorts zu einigen.
Es ist nur ein kleines Problem passiert - das Team von Programmierern und Designern, die all diese Auszeichnungen gewonnen haben, hat das GebÀude als Ganzes genommen und verlassen und die HÀlfte der aktuellen Projekte mitgenommen. Es war schwierig, eine stÀndig wachsende Menge in einer nicht aus Gummi gefertigten UniversitÀt unterzubringen, und im Allgemeinen wollten sie etwas mehr.
Ich brauchte dringend einen Ersatz fĂŒr "gut, zumindest jemanden", aber ich war sehr erfolgreich frei. Mutter zog mich einfach am Genick, warf mich hinter die Konsole des Office-Servers und befahl mir, alles online selbst in die Hand zu nehmen. Die Multimedia-Abteilung landete ebenfalls in den HĂ€nden des Sohnes der Freundin meiner Mutter, und wir begannen herauszufinden!
In der Tat ist es schwierig, sich eine stressigere Situation vorzustellen: An die Stelle anerkannter Fachleute zu treten, fremde und völlig unbekannte Entwicklungen in der Luft zu fangen und so zu tun, als könnten Sie all dies herausholen. Ja und zumindest nicht schlimmer. Ich erinnere mich nicht an die nÀchsten Monate - am Morgen musste ich Paare (Gott sei Dank, nicht alle, einige der GegenstÀnde, die ich nachgeladen hatte) an meiner UniversitÀt besuchen, mich dann durch die ganze Stadt in die benachbarte ziehen und dort bis spÀt in die Nacht herumhÀngen. Und das Wochenende hÀngt auch bei der Arbeit herum. Ich wollte auch abhÀngen, aber wie man ein Student ist und auf Trunkenheit verzichtet ...
Es dauerte ungefĂ€hr sechs Monate, um alle RFCs zu Technologien, alle HandbĂŒcher fĂŒr die verwendeten Sprachen und Plattformen zu lesen, alle vom alten Team geerbten Code-Haufen zu analysieren (insbesondere UniversitĂ€tsseiten, die in einer schrecklichen Mischung aus frĂŒhen Versionen von Java und PHP mit selbst geschriebenen Erweiterungen geschrieben wurden) und parallel zu bleiben Entwicklung einer eigenen Softwarebasis - nur in PHP. Nicht nur, weil sich der neue Besen auf neue Weise rĂ€chen sollte, sondern zumindest aus hygienischen GrĂŒnden: In den zehn Jahren, in denen das alte Team in Projekten gearbeitet hat, die ohne Versionskontrolle durchgefĂŒhrt wurden, hat sich viel MĂŒll angesammelt, und von einem frischen Aussehen aus war es sehr auffĂ€llig.
Es ist auch zu bedenken, dass der Markt zu diesem Zeitpunkt noch kein entwickeltes
CMS hatte und die aktuelle Situation in der Webentwicklung schwer als âMarktâ zu bezeichnen war. Jedes BĂŒro hat etwas Originelles mit einem eigenen Zoo geschrieben. Aus diesem Grund habe ich mich mit allen verfĂŒgbaren Beispielen fĂŒr Open-Source-
Akte umgeben und im nĂ€chsten Sommer, kurz vor dem fĂŒnften Jahr, ein einfaches CMS aus den Ersatzteilen meines Forums und wettbewerbsfĂ€higen âEnginesâ zusammengestellt, das es ermöglichte, momentane Aufgaben zu lösen. AuĂerdem blieb ich beim Thema
UX hĂ€ngen und nachdem ich alle zu diesem Zeitpunkt verfĂŒgbaren HIGs studiert hatte, wurde ich aus irgendeinem Grund von Microsoft Wizards 97 inspiriert, dessen Ideologie ich versuchte, so viel wie möglich in die BenutzeroberflĂ€che zu implementieren und schrittweise Assistenten fĂŒr alle Gelegenheiten zu implementieren.
Seltsamerweise war der Streich ein Erfolg. Es gelang mir nicht nur, die bereits auf meiner eigenen Engine abgestĂŒrzten Projekte erfolgreich abzuschlieĂen, sondern auch die Entwicklung mehrmals zu beschleunigen. Aufgrund der Notwendigkeit, die Projekte, die wir hatten, sorgfĂ€ltig zu dokumentieren, hatte ich natĂŒrlich die detaillierteste technische Aufgabe fĂŒr einen typischen reprĂ€sentativen Standort fĂŒr eine typische Fabrik - sowie ein Schulungshandbuch fĂŒr die Autoren kommunaler Standorte, da eines der Projekte genau war solche, und das
Bundesgesetz mit der Vorlage war noch nicht da.
Viele unerfahrene Entwickler unterschĂ€tzen die LeistungsfĂ€higkeit der Dokumentation, insbesondere die LeistungsfĂ€higkeit methodischer HandbĂŒcher, aber so wie ich es verstehe, habe ich mich in diesem Moment, nachdem ich alle BenutzerfĂ€lle durchgesehen und den Schmerz und die BedĂŒrfnisse des Kunden gespĂŒrt habe, von einem unerfahrenen Entwickler zu einem unerfahrenen Systemanalytiker gewandelt. Und wenn mir frĂŒher die Arbeit eines Programmierers als Lösung fĂŒr interessante RĂ€tsel erschien, ist sie jetzt zu dem geworden, was sie wirklich ist - zur Automatisierung der Routine von Menschen.
AuĂerdem!
Ein Programmierer ist kein Schöpfer. â , , , , , , , .
. -, , « - » . CMS ( ; â ). - , «
[sic!] ». 2003 «», .
( , , ) â . , , , . , , , CMS ( , , , , HTML, ).
-, , , â , , CMS, â , , . , , . , 13 . .
( â , , , ; ), , , . , .
, , , , , , .
Einmal vergaĂ ich, den CSS-Server-Cache nach dem Wiederherstellen der Site aus dem Backup zurĂŒckzusetzen, und einer meiner Kollegen warf sofort einen Screenshot mit dem vollstĂ€ndigen Layout, das fĂŒr den Link zu Lebedev ĂŒbrig geblieben war. FĂŒr lulz. Fazit: ein berĂŒhmtes Mem.Aber der technokratische Ansatz war vorteilhaft, und vor dem Hintergrund anderer Ischewsk-BĂŒros sahen unsere Projekte zumindest nicht schlechter aus und existierten sicherlich um ein Vielfaches lĂ€nger als die ĂŒberwiegende Mehrheit der Kollegen. Und einige, wie Izhmoto.ru, haben sogar den Tod des ursprĂŒnglichen Kunden ĂŒberlebt. Oder sogar die zweite.
Zum SpaĂ habe ich einmal ein völlig unmenschliches Experiment durchgefĂŒhrt. Es gab ein solches Schulungsprogramm fĂŒr Lehrer fĂŒr lĂ€ndliche Informatik - als sie an verschiedene Ischewsk-UniversitĂ€ten aus allen 25 Regionen der Republik gefahren wurden und ihnen einen Kurs ĂŒber die Grundlagen der Standortbildung beibrachten. NatĂŒrlich habe ich am Beispiel meines Motors unterrichtet und konnte nicht anders, als die groĂartige Gelegenheit zu nutzen, um A / B-Tests mehrerer Versionen der Schnittstelle an Hunderten von unglĂŒcklichen durchzufĂŒhren. Es hat SpaĂ gemacht, ich habe einige völlig unerwartete Dinge ĂŒber Benutzerverhaltensmuster und -wahrnehmungen gelernt (Microsoft-Mitarbeiter hatten Recht, als sie die Office-BenutzeroberflĂ€che auf eine kontextsensitive umgestalteten - es ist am effektivsten; auĂerdem ist es absolut unmöglich, die SchaltflĂ€che "Speichern" mit einer Diskette von den BenutzeroberflĂ€chen zu entfernen).
Aber am Ende langweilte ich mich immer noch.
Nun, wie viele Websites können Sie nieten? Nun, Multisites (dies ist der Fall, wenn anderthalb Dutzend miteinander verbundene Sites auf verschiedenen DomĂ€nen, aber auf einer Kopie der Engine und mit Pass-Through-Berechtigung). Nun, Dokumentportale (Dokumentenkataloge mit Metadaten zu Ihrem Weihnachtsbaum, mit Echtzeitsuche nach allen Parametern). Nun, Intranets, Video-Blogs, Medienseiten (nur spezielle Plugins fĂŒr das ursprĂŒngliche CMS, die gemÀà meinen Spezifikationen von Doktoranden geschrieben wurden).
Es war offensichtlich, dass es Zeit war, zum Beispiel als vorheriges Team einzutreten und das GebĂ€ude zu verlassen. Leider habe ich nicht genĂŒgend QualitĂ€ten, um GeschĂ€ftsfĂŒhrer zu werden. Technisch kann ich, aber warum? Im Web konvergierte das Licht nicht und der Fortschritt steht nicht still. Was im Jahr 2002 exklusiv war, im Jahr 2006 bereits der Mainstream, und im Allgemeinen brachte Bitrix das Erstellen von Websites in das Handwerk.
Aber ob man in einen angrenzenden Bereich zieht. Warum ja?
Nur in welcher?
Ich habe mit verschiedenen BĂŒros gesprochen. Nicht ĂŒberall wurde ich, der schreckliche Troll mit
Izhaiti , mit offenen
Armen begrĂŒĂt (nur wenige Menschen lieben Trolle im Allgemeinen), aber die Auswahl war ziemlich reich. Es war möglich, auf Desktop .NET zuzugreifen und EisenstĂŒcke zu programmieren (obwohl dies werkseitig ist, ist es also eher nein als ja). Aber ich mochte besonders die Idee, groĂe Systeme fĂŒr ein blutiges Unternehmen zu entwickeln - nur in dieser Welt fuhr Java, und ich kannte Java nur auf der Ebene dieser Applets von einem universellen âHamsterâ und einem nudelartigen Erbe, das bei einem frĂŒheren Job begraben wurde. Auch Version 1.1.
Daher nahm ich das Angebot des lokalen Telekommunikationsanbieters
Izhsvyazinvest an (es war âMulti-Serviceâ,
dh es stellte Internet, Telefonie und Fernsehen bereit; nach der Krise von 2008 starb ich qualvoll und wurde von Beeline gekauft, aber zu dieser Zeit florierte es).
Hier brauchen Sie eine kleine Bemerkung zur Geschichte des lokalen Internets. Es ist ganz anders als das typisch russische dank der Firma Mark (egal wie es fĂŒr seine mehr als zwanzigjĂ€hrige Geschichte genannt wurde) - seit Mitte der neunziger Jahre ist Ischewsk Geschwindigkeit und Reichweite weit voraus und zu einem niedrigeren Preis nicht nur allen Nachbarregionen , aber auch nach Moskau. DarĂŒber hinaus löste die Ăra der DSL-Modems sehr schnell die Ăra des Kupfers und dann der Heimoptik aus, und das schnelle Internet in Ischewsk verbreitete sich, und dieser Anbieter war eine hervorragende Schmiede von technischen und leitenden Mitarbeitern fĂŒr die lokale Industrie. Sogar die lokale Fidosnaya Tusa war gröĂtenteils ĂŒber Markov Ethernet.
Die Eingeborenen von Mark grĂŒndeten mehr als ein konkurrierendes BĂŒro, darunter Izhsvyazinvest. Sie brachten die Abrechnung mit - ein monströses System, das in einem Cluster von Oracle funktionierte, auĂerdem ein klassisches, auf dem Sanovo-Eisen des Unternehmens und unter einem Solarium. Fast die gesamte GeschĂ€ftslogik dieses chthonischen Monsters wurde auf wundersame Weise gespeichert, und sogar Zahlungsschreiben an Kunden wurden von einem asynchronen Job gesendet. Nur ein kleiner Teil des Admin-Panels wurde in Java (Version 1.4) geschrieben, obwohl es fast vollstĂ€ndig ĂŒber System.out.println () generiert wurde und es aussah ... es sah höllisch aus. Es war unmöglich, die BenutzeroberflĂ€che ohne TrĂ€nen zu betrachten (und nicht nur, weil alles 7.5pt war).
Besonders im Vergleich zu dem, was das Admin-Panel meines CMS damals gemacht hatte. Und es war eine
HTA- Anwendung, die Ă€uĂerlich nicht von der nativen zu unterscheiden war und sogar keine Maus benötigte, obwohl sie in reinem JS / DHTML geschrieben war. Der Abteilungsleiter war so beeindruckt, dass er mich sofort als UX-Spezialisten aufnahm. Die Absicht war einfach - einem schönen Abrechnungsmonster eine schöne, schnelle, bequeme und native OberflĂ€che zuzuweisen und sie an andere Anbieter zu verkaufen. In Bezug auf die Möglichkeiten, die ab Mitte der neunziger Jahre entwickelt wurden, riss er alle verfĂŒgbaren Analoga als Ass auf, aber die Konkurrenten hatten eine vernĂŒnftige BenutzeroberflĂ€che, aber TELSI hatte sie nicht.
So geben Sie
einem Schwein Lippenstift ... Sie können eine Schnittstelle jedoch nicht einfach an der Logik befestigen, wenn sie keine Endpunkte fĂŒr etwas Ă€hnliches wie AJAX hat.
Die Endpunktschicht musste durch Integration in den vorhandenen Code geschrieben werden. Aber im Jahr 2006 war Java 1.4 bereits ein ziemliches Relikt. Als erstes habe ich den vorhandenen Keim des Administrators in die aktuelle Version kopiert, wobei das gleiche Haar gekÀmmt und der Code in Ordnung gebracht wurde (ja, ich musste mich erneut mit der geerbten Substanz befassen). Unterwegs habe ich mich mit dem technologischen J2EE-Stack befasst, aber aufgrund der Besonderheiten habe ich mich vorerst auf Servlets und alle zugehörigen Bindungen sowie auf JDBC (ich muss den Speicher ziehen), Velocity (als die PHP-Template-Engine am Àhnlichsten) und tatsÀchlich auf Core Java beschrÀnkt.
AllmĂ€hlich wurde klar, dass die gesamte Logik, die sich auf die seitliche Darstellung des Benutzers und insbesondere auf die interaktive Interaktion mit ihm bezieht, aus dem Speicher gezogen und in der Serviceschicht in Java implementiert werden sollte, da sich die Anforderungen an Funktionen im Laufe der Zeit Ă€ndern Die Erstellung von Rohaufrufen der gespeicherten Dateien ĂŒber JDBC ist schwierig zu verwalten (alles muss an zwei Stellen geĂ€ndert werden, und mit der Version des Codes sind die Datenbanken immer noch schlecht, ganz zu schweigen vom achten Oracle) und zerbrechlich.
"Okay", sagte der Abteilungsleiter.
Ich habe ein Jahr gebraucht, um diese ganze Sache ans Tageslicht zu bringen. Jahr! Die Menge an Code war einfach ungeheuerlich. Ich kann mich an jeweils ein Megabyte Quellcode erinnern, und hier hat der Code den Speicher nur um fĂŒnf erhöht. Die HĂ€lfte der Unbenutzten, die andere HĂ€lfte nennt sich rekursiv und ist im Allgemeinen zu einem solchen Nudelball verwoben, dass es ohne die Hilfe des Chefs entschieden unmöglich war, ihn zu entwirren.
Ich musste sechs Tage die Woche arbeiten, elf Stunden am Tag - der Rest der Programmierer saĂ auf der UnterstĂŒtzung des vorhandenen Monsters und konnte mir nicht helfen. Das Ergebnis war ein Mikroschlag (im Alter von 26 Jahren mein Arsch!) Und sechs Monate auf Tabletten. Ich habe eine Lektion gelernt - seitdem bin ich nicht ĂŒberfordert. Die Arbeit wird nicht weglaufen, aber die Gesundheit kann.
Nach einiger Zeit stellte sich heraus, dass es bequemer war, einen Teil der Abrechnungsdaten in Form von Verzeichnissen zu speichern - das sind keine ganz normalen relationalen Tabellen, sondern Dokumente, die aus SchlĂŒsselwertsĂ€tzen mit hĂ€ufig unbekannten Metadaten fĂŒr jeden Datensatz bestehen. Oracle unterstĂŒtzt dies nativ nicht und im Allgemeinen war es mit NoSQL in jenen Jahren noch faul.

â

â
Klickbare BilderVerdammt, aber irgendetwas erinnert mich daran ... Na ja, Dokumentportale. Was stellt sich heraus, alle Informationssysteme sind ungefÀhr dieselbe Person, wenn Sie im Profil schauen? Na ja, okay.
Okay, sagte ich. In wenigen Monaten implementierte er ein dokumentenorientiertes Repository ĂŒber Oracle-Tabellen mit Triggern, Speichern, die Ansichten erstellen, und einer Art Mutter. Es hat nicht sehr schnell geklappt, aber es schien nach einem halben Tritt zu funktionieren. Es war Zeit, den Minx-Bolzen in den Probebetrieb zu bringen.
Und dann kam die Krise von 2008 nach Ischewsk
Obwohl er zu allen kam.
Nicht nur nicht jeder hatte Geld, sondern auch das BĂŒro, insbesondere um einen Programmierer an einer zukĂŒnftigen Version des Systems arbeiten zu lassen. Das BĂŒro beeilte sich, neue Kunden zu gewinnen, nur um zu ĂŒberleben, und sie beschlossen, mich fĂŒr die routinemĂ€Ăige Wartung des alten Monsters zu verlassen, weil die Last zunahm und das neue Projekt in die KĂ€lte geriet. Sie kĂŒrzen auch das Gehalt, weil das Wort âim Allgemeinenâ kein Geld enthĂ€lt.
"Auf Wiedersehen", sagte ich. "Jetzt bin ich ein alter Mann", sagte ich, "und ich kenne Kung Fu", sagte ich, "und ich bin Ihnen dankbar, dass Sie es mir gezeigt haben, aber ich möchte mein Kung Fu ĂŒben und nicht unter Unsinn leiden."
Leider war es schwieriger zu tun als zu sagen. In einer wĂŒtenden Krise mit einem blutigen Unternehmen sind die Dinge ungefĂ€hr die gleichen wie bei TELSI (dh âverschobenâ auf âspĂ€terâ), aber in der neuen wirtschaftlichen RealitĂ€t hat das westliche GeschĂ€ft als eines der Mittel zur Kostensenkung die Aufmerksamkeit auf russische Outsourcer gelenkt. und sie wurden ĂŒberflutet. Ich musste das Unternehmen um einige Jahre verschieben und das tun, was das Geld brachte.
Sehr schnell fand ich Arbeit im nĂ€chsten Studio (genauer gesagt, sie fanden mich - trotzdem Ruhm in der örtlichen Gemeinde, sogar ein kleiner Troll, eine Sache, die manchmal nĂŒtzlich ist). Nun, als Studios ... Sie hatten Webentwicklung, aber in gröĂerem MaĂe positionierte sich dieses "Informations- und Verlagszentrum" als Outsourcer. Na ja, auch als Druckerei. Dies ist ein weiteres HybridgeschĂ€ft.
Die Hauptrichtung des Outsourcings war die Entwicklung von Geoinformationssystemen, dh Systemen, die etwas mit kartografischen Daten tun.
Zum Beispiel war das aktuelle Projekt - etwas Schreckliches fĂŒr dĂ€nische Biker auf
Zend , mit einem gewissen Analogon von Portlets (fragen Sie nicht, was es ist, ich weiĂ nur ĂŒber Applets und Schnitzel Bescheid) und im Allgemeinen einer Art extrem seltsamer TK. Und nur ich setzte mich hin, um es sorgfĂ€ltig zu lesen, als sich die Biker zusammen mit dem technischen Direktor des BĂŒros in eine unbekannte Richtung versteckten, der mich, wie sich herausstellte, dazu verleitete, mich selbst zu ersetzen.
Nun, "fĂŒr einen Ersatz." Wir brauchten einen Hauptentwickler fĂŒr ein neues Projekt - auch ein GIS, nur ĂŒber Satellitenfernsehen. SatBeams.com - noch am Leben, Sie können sehen, nur bitte bringen Sie es nicht herunter.
Ein interessantes Projekt. Ja, ich musste wieder zu PHP zurĂŒckkehren, aber dort waren die meisten Tricks beim Entwerfen der Basis. In der geostationĂ€ren Umlaufbahn hĂ€ngen mehrere hundert Satelliten ĂŒber ihrer LĂ€nge an jeweils mehreren (bis zu Hunderten) Antennen - Transpondern, die in mehreren BĂ€ndern senden. Sie senden Pakete, in denen jeweils mehrere (bis zu Hunderte) FernsehkanĂ€le vorhanden sind, von denen jeder eine Reihe von Merkmalen aufweist (wiederum bis zu Hunderte, weil Sprachen).
Das Wesentliche des Problems: Es ist nicht nur notwendig, fĂŒr jeden Transponder eine Abdeckung auf der Karte zu zeichnen, sondern auch in Echtzeit Diff-Ănderungen in allen Eigenschaften aller auf der Platte empfangenen KanĂ€le an einem bestimmten Ort zu generieren und in RSS auszuspucken. FĂŒr solche Informationen zahlen professionelle Liebhaber von Satellitenfernsehen auĂerdem betrĂ€chtliches Geld.
Es scheint, dass es einfach klingt, aber hey ... Multipliziere hundert mit ein paar, multipliziere mit hundert, multipliziere mit ... oops. Das kartesische Produkt aller möglichen Parameter ĂŒberschreitet eine Billion, und wir mĂŒssen in Echtzeit einen
Diff erstellen. Es ist ĂŒbrigens ein Olympiadenproblem.
Hier hat sich der UniversitĂ€tsdatenbankkurs fĂŒr mich als nĂŒtzlich erwiesen, ebenso wie all die bisherigen Erfahrungen mit ihnen und all die Erfahrungen im Systemdesign, die ich gerade hatte. Infolgedessen fĂŒhrte dies zu mehreren Dutzend Tabellen, die auf
5NF normalisiert
waren , denormalisierten Tabellen mit Verlauf und einem Haufen von Anforderungen fĂŒr jeweils mehrere Seiten. Mit kniffligen VerknĂŒpfungen, die das Optimierungsverhalten des ausgewĂ€hlten DBMS berĂŒcksichtigen. MySQL meine ich. Der Kunde hat einem anderen nicht zugestimmt.
Zusammen schaffte es der zweite Programmierer in etwa einem Jahr. Es funktioniert, wenn Sie es bisher noch nicht mit dem Habraeffekt fallen gelassen haben. Ich liebe dieses Projekt. Und das nicht nur fĂŒr das Backend, sondern auch fĂŒr satbar.js - das letzte Schnittstellen-Widget, das ich gerade geschrieben habe (seitdem habe ich die BenutzeroberflĂ€chen nicht mehr berĂŒhrt).

Ein unerwartetes Hindernis war das Zeichnen von FuĂabdrĂŒcken von Transpondern auf Google Maps. Google wollte im Allgemeinen sein dickes Mojo auf Integrationen von Drittanbietern setzen und sĂ€gte systematisch Feature-Karten fĂŒr jedes Feature aus jeder neuen API-Kartenversion 2. Als Ergebnis erhielt es eine unglaubliche Anzahl von KrĂŒcken und benötigte stĂ€ndige UnterstĂŒtzung von Seite des zweiten Programmierers nach Inbetriebnahme des Projekts - und er migrierte auf die dritte Version der API und wurde regelmĂ€Ăig depressiv. Der Kunde prahlte jedoch mit einem Bild des PMa Google Card-Desktops mit dem Etikett unserer Website mit der Signatur ânette Polygoneâ - er hat es heimlich gemacht, als er die lokale Zentrale besuchte.
Aber coole Projekte neigen dazu zu enden. Und wenn erfolgreich.
Die Krise tobte weiter. Ich musste nicht so coole Projekte ĂŒbernehmen, wenn nur das BĂŒro Geld bezahlte.
Ich ging wieder auf den Daumen und sammelte mehrere Stellen, fast ohne das Bewusstsein wiederzugewinnen. Da ich nichts zu tun hatte, aktualisierte ich das CMS mit den Schnittstellenentwicklungen, die aus der vorherigen Arbeit stammen - einschlieĂlich einer Art Ribbon-BenutzeroberflĂ€che aus dem neuen Office (dabei frĂŒher als Microsoft selbst, aber natĂŒrlich einfacher, obwohl die magische Single ALT auch dort funktionierte). Ich zeige dir etwas, es verdient eine eigene Geschichte. Er ĂŒbernahm sogar die Entwicklung einer Desktop-Datenbank unter .NET + SQLite fĂŒr einen staatlichen Kunden im Austausch fĂŒr eine Legacy-Lösung unter Firebird (oder sogar FoxPro? Und ich erinnere mich nicht, aber auf etwas völlig Altes), aber dieses Projekt brachte eine neue PM mit sich, die behauptete fĂŒr die Rolle des technischen Assistenten, und wir konnten uns nicht auf den Zeitpunkt einigen. Daher konnte ich mich nicht in den .NET-Desktop-Stack vertiefen.
Und dann schrieb mir plötzlich ein ehemaliger Student, der einmal ein Diplom in meiner Abteilung gemacht hatte (dieselben âDokumentenportaleâ). In den letzten fĂŒnf Jahren hat er sich zum Leiter seines eigenen BĂŒros entwickelt, das glĂŒcklicherweise mit dem blutigen Unternehmen SAP und etwas mehr Entwicklung auf Java EE beschĂ€ftigt war.
Also viel GlĂŒck. Er brauchte nur einen Experten, um bei einem neuen Projekt zu helfen.
Das Wesen (und im Allgemeinen die Bedeutung) dieses Projekts ist schwer zu erklĂ€ren. Ich habe immer noch wenig Ahnung von den Motiven des Tatarstan-Risikokapitalgebers, der eine Art SaaS / PaaS / Box-Ăquivalent zu MS SharePoint + Exchange + Lync + Dynamics erstellen wollte, aber nur mit dem Serverteil auf J2EE und mit dem "dicken" Java Swing-Client. Zuerst nannte er ihn NewOutlook und dann vollstĂ€ndig OfficeSuite. AuĂerdem war er Mohnarbeiter, weshalb er im BĂŒro Mohn kaufen musste - Swing-Komponenten fĂŒr einen dicken Kunden verhielten sich unter MacOS manchmal unvorhersehbar. Ein sehr, sehr seltsames Projekt. Aber schrecklich interessant.
Insgesamt waren mindestens drei Teams daran beteiligt - auĂer uns waren die Jungs in Kasan und irgendwo in Minsk, oder was? oder in Kiew?, und unser Team wurde als das wichtigste angesehen: Wir mussten eine gemeinsame Architektur sowohl des Serverteils als auch des Clients entwickeln, einen Mechanismus zum Synchronisieren von Daten zwischen ihnen und beispielsweise ein Modul zur Verwaltung persönlicher Finanzen implementieren. Der Rest hĂ€tte sich mit
Unified Communications und allem anderen befassen sollen, was sich der Investor vorgestellt hatte (ohne spezifische TK).
Die Implementierung des Synchronisierers schien die schwierigste Aufgabe zu sein - keiner der vorhandenen Mitarbeiter wusste, wie er sich dem nĂ€hern sollte. Wie wir uns erinnern, ist der Client "dick", das heiĂt, er kann und sollte ĂŒberhaupt ohne den Serverteil funktionieren, und gleichzeitig muss er in der Lage sein, gemÀà einem Zeitplan oder einer Benutzeranforderung eine Verbindung zum Server herzustellen, um "Objekte" (was auch immer) hier und da zu aktualisieren .
Zuerst wusste ich nicht wie, aber meine Augen hatten Angst und meine HĂ€nde taten es. Die cleveren Worte âClient- und Serverarchitekturâ sind eigentlich nur einige Entwurfsskizzen, die sich gut als strukturiertes Dokument eignen. NatĂŒrlich ist âjede Art von Objektenâ eine mittelmĂ€Ăige Anforderung, aber zum GlĂŒck konnte ich seit der Zeit des Multimedia-Centers Host-Plug-In-Systeme entwerfen, die ihre Objekttypen beschreiben können. Die gerissenen ORMs nach dem Izhsvyazinvestovsky-Monster machen mir keine Angst, aber die Vermissten Ich kann J-Technologien ziemlich schnell von EE lernen.
"Architekt" ... Ich mag es nicht, wenn dieses Wort auf die Position eines Programmierers angewendet wird. Eine krumme Ăbersetzung aus dem Englischen von System Designer. Es wĂ€re richtiger, ein "Konstrukteur" zu sein. Meiner Meinung nach beschreibt der Prozess der Erstellung eines Prototyps eines zukĂŒnftigen Produkts von Grund auf neu, den sich selbst der Kunde nicht gut vorstellen kann, den Begriff âForschungsingenieurâ viel besser.
Sieben Monate spĂ€ter - zum Zeitpunkt der Zwischenlieferung - aller drei Teams war etwas, das es wert war, gezeigt zu werden, nur fĂŒr uns bereit. Unser Team hat ein voll funktionsfĂ€higes Modul zur Verwaltung des persönlichen Budgets geschrieben, der Synchronisierer hat alles bestmöglich synchronisiert, und der Kern der Server- und Client-Teile der Anwendung war bereit, die verbleibenden Plugins zu verbinden. â , , , , , .
. , , , , SAP.
. , . .
: . , , - , - , , , , . , , . â , . , , .
.
2011 . -
. - , - , , . , .
.
( , «») â . , . «» â , â - . , , , , . , .
, , . , , .
, . â . , , , , . .
â , , . - , :
âą , , ;
âą , ;
âą , ;
âą ;
âą , ;
âą -.
, , , «» ( ) ! Stark! !
, , «», «», « », «», , , â , . .
?
, , . . .
, , , , . â , ( , ), mission critical. Java EE, : â IBM. â WebSphere AS MQ, â DB2. JVM â J9, , ( , ).
: ( ), ( , , ) ( 300 ).
: («» 15, ⊠, ).
⊠. . . « ». â 25 â ( , applications.xml ).
, , 19
JNDI . , , . . !
, . â
SVN . , . , ⊠« » (!) , .
, , J9 DB2 ⊠IBM , , .
â - , âŠ
, , , , , , .
, . , . , - . â « ».
- . , â , .
, â , , â . , , . , . , .
«» , . , - , , . , , .
, ⊠, - «», , 8 , , .
: , . , , .
,
â . ,
delivery , 24 , . ( , ) .
â ( ), . , «». .
: . : .
, , â , , , , , .
, ? ? . , , , . - . , - ( ).
, 2014
, ⊠, â , , â , . tinypass ( , p ) . â . â , , !
( ) . ( ). ( ), , , , . , , , .
. . .
, , . â - â , -, , . . , , , ( , ).
( ) â . (middleware - â ), . , , . , .
, , . , . - . - ( !) , . #.
, 15, 20 . - , . â .
, Piano ( ), . , , .
Java, ( -, â , ). Continuous Integration â QA . -! , DevOps, , , .
Java, - . â , ( , ), ( , ! ) , , â . .
- , ? , . ⊠. .
- DevOps , . BigQuery, Node.js ( , ). , .
- , , . , middleware, Piano, , , â . , -, , . , . , , , false positive , - .
, . , , «-», ( , , - ).
, , - - . , . #.
,
, . , â ? , .
[x] - .
[x] .
[x] .
[x] .
[x] , , .
[x] , , 11 (!!!11) CMS , . ?
[x] , , .
[ ] , -, Big Data .
Piano , . , , .
. , , , , .
, , , â . . , ,
MapReduce ( ,
Spark ), ArcGIS, , . -, !
, , . , . Java ( Scala , ), AWS , -, , ( , ) .
, , -, - . . , , , , â . . HUDWAY. #.
, .
we do what we must because we can , .
, ,â . , , , . , - , . .
, , , 20 . , ( , ), , , â , .
, , ( )? , , / ( , mortgage 25 ). ( , ).
, , , - , . (, , -, , , ). , , . , â - ever.
, , 20 .