Sokat olvashatsz nálam a szoftverek biztonsági problémáiról, pedig ez maga nem új jelenség, a negatív trend ezzel kapcsolatban az, hogy annak ellenére, hogy kiderült nem tudják megoldani a biztonsággal kapcsolatos problémákat tovább nyomatják, hogy legyen az élet szinte minden területe digitális, miközben azért azt is elmondják, hogy ja ebből amúgy katasztrófa lesz.
A szoftverekkel kapcsolatban azonban vannak még negatív trendek, úgyhogy most legyen szó más problémákról is. Az infók egy 15 éve programozással foglalkozó szakembertől származnak, köszönet btprg nick nevű olvasómnak, hogy figyelmembe ajánlotta a blogot, amin rajta van az irása.
A címe:
"I’ve been programming for 15 years now. Recently our industry’s lack of care for efficiency, simplicity, and excellence started really getting to me, to the point of me getting depressed by my own career and the IT in general."
Szóval valósággal depressziós lett, hogy mostanra a szoftver "ipar"-t mennyire nem érdekli már a hatékonyság, az egyszerűség és a kiválóság.
"Only in software, it’s fine if a program runs at 1% or even 0.01% of the possible performance. Everybody just seems to be ok with it. People are often even proud about how much inefficient it is, as in “why should we worry, computers are fast enough”"
Valószínű ez azért már túl meredek, de szerinte a mai programok a potenciális teljesítményüknek csak az 1, vagy még annál is kevesebb százalékán futnak... és ez látszólag mindenkinek megfelel, sőt egyesek még büszkék is rá, hisz a gépek amúgy is elég gyorsak.
Azért kell gyorsan és rosszul összedobmi a dolgokat mert:
You’ve probably heard this mantra: “programmer time is more expensive than computer time”.
Vagyis a programozó ideje fontosabb mint, hogy a gép gyorsabb legyen, a gépen jobban fusson a program. A jó munkához pedig több idő kellene.
Ezt persze nyilván a cégek ahol dolgoznak akarják így; minél előbb piacra akarják dobni a cuccukat, nem a programozó az, aki nem szeretne valami jobbat csinálni.
Emiatt a hozzáállás miatt viszont hatalmas mennyiségű gépi kapacitást pazarlunk el, és ezt eltürjük, míg hasonlót egy kocsinál például nem türnénk:
"What it means basically is that we’re wasting computers at an unprecedented scale. Would you buy a car if it eats 100 liters per 100 kilometers? How about 1000 liters? With computers, we do that all the time."
"Everything is unbearably slow"
Ebben a részben bemutatja példákkal, hogy a rosszul megírt programok miatt mennyire lassúak lettek olyan dolgok amiknek sokkal gyorsabbaknak kellene lenniük.
"As a general trend, we’re not getting faster software with more features. We’re getting faster hardware that runs slower software with the same features. Everything works way below the possible speed."
Hiába lettek egyre gyorsabbak a hardverek, előfordul hogy az új szoftverekben a régi featur-ok lassabbak lettek. Sokkal lassabbak mint amilyenek lehetnének.
"Everything is HUUUUGE"
Ebben a részben a fő mondanivaló nyilván az, hogy a rosszul megírt programok nemcsak lassúak, hanem sokkal több helyet fogalalnak el mint kellene.
"Android system with no apps takes almost 6 Gb. Just think for a second how obscenely HUGE that number is. What’s in there, HD movies? I guess it’s basically code: kernel, drivers. Some string and resources too, sure, but those can’t be big. So, how many drivers do you need for a phone?"
Az Android appok nélkül 6 giga. Kérdezi mi van ott talán HD filmek? Vagyis megint egy olyan cég termékét hozza fel példának, akiket a közvélemény még mindig a legjobbak közé sorol. Mégis sz@rt ad. Amúgy az, hogy az Android ilyen nagy... talán a rejlett kémfunkciók miatt is van.
"Windows 95 was 30Mb. Today we have web pages heavier than that! Windows 10 is 4Gb, which is 133 times as big. But is it 133 times as superior? I mean, functionally they are basically the same. Yes, we have Cortana, but I doubt it takes 3970 Mb. But whatever Windows 10 is, is Android really 150% of that?"
A Windows is a 95-höz képest 133 szorozásra hízott a Windows 10-re, de közel se ad 133 szoros javulást, hanem kb. ugyanazt adja mint a 95, lényegében. Megjegyzem a 10 is jó teli lett rakva kémfunkciókkal, meg persze a szerző említi "Cortanát" a virtuális asszisztenst, mint ami plusz helyt foglal.
További példák hatalmasra hízott, de amúgy egyszerű programokra:
"Google keyboard app routinely eats 150 Mb. Is an app that draws 30 keys on a screen really five times more complex than the whole Windows 95? Google app, which is basically just a package for Google Web Search, is 350 Mb! Google Play Services, which I do not use (I don’t buy books, music or videos there)—300 Mb that just sit there and which I’m unable to delete."
Vagyis például a Google billenytűzet programja ami 30 különböző karaktert tud a képernyőn megjeleníteni, tehát elvileg egy egyszerű valami, ötször több helyet foglal mint a Windows 95.
Nekünk szabad hely meg alig marad.
De a szimpla, vagy legalábbis annak tűnű chat programok is hatalmas erőforrásokat igényelnek pedig csak szöveget tudnak küldeni:
"A simple text chat is notorious for its load speed and memory consumption. "
Megint csak mondom... talán nem csak a hatékonyság a probléma hanem az is, hogy a felhasználóról ma már kb. minden legális program is folyamatosan adatokat gyűjt és elég gyakran el is küldözgetik.
Itt jön egy nagyon fontos rész:
"At least it works, you might say. Well, bigger doesn’t imply better. Bigger means someone has lost control. Bigger means we don’t know what’s going on. Bigger means complexity tax, performance tax, reliability tax. This is not the norm and should not become the norm. Overweight apps should mean a red flag. They should mean run away scared."
A nagyobb nem jelenti, hogy egy szoftver jobb, a nagyobb azt jelenti: el veszett az irányítás, nem tudjuk, hogy igazából mi történik (gondolom itt arra is célzott, amit én írtam... titokban ezek a szoftverek kémkednek a felhasználó után), a nagyobb azzal jár, hogy a komplexitás miatt plussz erőforrásokat veszítünk, és ami még fontos: a megbízhatóság is csökken. A nagy méretű szoftverek azt jelentik, hogy baj van, és jobb ha sikítva elfutsz tőlük.
"Everything rots"
Ebben a részben bemutatja, hogy a romlás általános jelenség és a még korábban jól induló dolgok is egyre rosszabbak.
"6Gb Android phone was perfectly fine 3 years ago. Today with Android 8.1 it’s barely usable because each app has become at least twice as big for no apparent reason. There are no additional functions. They are not faster or more optimized. They don’t look different. They just…grow?"
A programok mérete a duplájára nőt látszólagos igazi ok nélkül. Nincsenek új funkciók, nem lettek gyorsabbak, vagy optimalizáltak, nem látszik, hogy miben lettek mások... de csak egyre nőnek.
"Worse is better"
"Nobody understands anything at this point. Neither they want to. We just throw barely baked shit out there, hope for the best and call it “startup wisdom”"
Senki sem ért meg semmit se igazán, és nem is akarják, csak kidobják a piacra a félig se kész szemetüket és bízakodnak... Ezt nevezik a starupok bölcsességének. Ebben van valami, a startupok tényleg kb. ezt csinálták és megvették őket régebben vagyonokért.
Sok terméknél már egyszerűen a gyártók se tudják mi romlik el, de tuti hogy el fog és a csoda megoldásuk erre a gyári reset.
"Every device I own fails regularly one way or another. My Dell monitor needs a hard reboot from time to time because there’s software in it. "
Amint láthatjuk mivel szoftveressé tesznek dolgokat, amiket nem feltétlenül kéne, hát ezek a dolgok is meghibásodnak. A megoldás nem a hiba feltárása és kijavítása, hanem a reset.
"Airdrop? You’re lucky if it’ll detect your device, otherwise, what do I do? Bluetooth? Spec is so complex that devices won’t talk to each other and periodic resets are the best way to go."
Az IoT-ról is megvan a véleménye, ami olyan rossz, hogy úgy dönt bele se kezd, mert röhögnivalóan katasztrofálisan rossz arrafele minden.
"And I’m not even touching Internet of Things. It’s so far beyond the laughing point I’m not even sure what to add."
Ezek helyett szeretne minőségi, stabil munkákat kiadni a keze közül. Szeretné, hogy amit kiad a keze közül azt jól ismerné, de ha a programok ilyen elhízottak ez lehetetlen:
"I want to take pride in my work. I want to deliver working, stable things. To do that, we need to understand what we are building, in and out, and that’s impossible to do in bloated, over-engineered systems."
"Programming is the same mess"
A dolgok ma már annyira elromlottak az "iparban", hogy senkit se érdekel, hogy jó, gyors, minőségi cuccot készítsen... még akkor se ha már van évek óta bevált megoldás.
"It just seems that nobody is interested in building quality, fast, efficient, lasting, foundational stuff anymore. Even when efficient solutions have been known for ages, we still struggle with the same problems: package management, build systems, compilers, language design, IDEs."
A mai rendszerek elképesztően megbízhatatlanok, sokkal jobbak lehetnének:
"Build systems are inherently unreliable and periodically require full clean, even though all info for invalidation is there. Nothing stops us from making build process reliable, predictable and 100% reproducible. Just nobody thinks its important. NPM has stayed in “sometimes works” state for years."
És emiatt a rossz hozzáállás miatt, ami eredetileg a cél volt, vagyis hogy gyorsabban kész legyen a programozó, nem jön össze és inkább sokkal tovább tartanak a dolgok.
A "mesterséges intelligenciáról" és a "gépi tanulásról" is igen lesúlytó a vélemény:
"Machine learning and “AI” moved software to guessing in the times when most computers are not even reliable enough in the first place."
"When an app or a service is described as “AI-powered” or “ML-based”, I read it as “unreliable, unpredictable, and impossible to reason about behavior”. I try to avoid “AI” because I want computers to be the opposite: reliable, predictable, reasonable."
Vagyis ezek az új, hypeolt technológiák azt hozzák el, hogy a géped, megbízhatatlan, kiszámíthatatlan lesz és lehetetlen lesz megérteni mit miért tesz.
Ma már a programok nem tudnak meglenni újraindítás nélkül, valamik, valahogy elromlanak bennük, és olyan összetett és egymástól függő lett minden, hogy senki se tudja igazán mi a bajuk és mi jöhet elő.
"Programs can’t work for years without reboots anymore. Sometimes even days are too much to ask. Random stuff happens and nobody knows why."
És ami még nagyobbá teszi a bajt... nincs is rá idő, hogy kiderítsék mi a baj, meg miért is tennék, ha következmények nélkül megúszhatják?
"What’s worse, nobody has time to stop and figure out what happened. Why bother if you can always buy your way out of it."
"Spin another AWS instance. Restart process. Drop and restore the whole database. Write a watchdog that will restart your broken app every 20 minutes. Include same resources multiple times, zip and ship. Move fast, don’t fix."
Légy gyors, ne bíbelődj javítással, javasolj resetet.
"We’re stuck with it"
A kiút se látszik ebből, mert az egyik megírt rossz kódra jön a másik, amire épül az újabb rossz munka és végül egy hegy összejön egymásra rakott rossz kódokból.
"So everything is just a pile of barely working code added on top of previously written barely working code. It keeps growing in size and complexity, diminishing any chance for a change."
"Business won’t care"
A vállalatokat se érdekli, hogy jobb legyen, a felhasználók is szemlátomást megszokták a rosszat, úgyhogy kb. senkit se érdekel az, hogy ennyire rossz hatásfokon megy minden a szoftveriparban. Igazi verseny sincs legtöbbször, mert mindenki hasonlóan rossz termékekkel jön elő.
Szeretné, ha a mérnökök mutatnák meg, hogy sokkal többre képesek a gépek...
"So it’s our mission as engineers to show the world what’s possible with today’s computers in terms of performance, reliability, quality, usability. If we care, people will learn. And there’s nobody but us to show them that it’s very much possible. If only we care."
"It’s not all bad"
Ebben a részben pozítív példákat mutat be.
"Work Martin Thompson has being doing (LMAX Disruptor, SBE, Aeron) is impressive, refreshingly simple and efficient.
Xi editor by Raph Levien seems to be built with the right principles in mind.
Jonathan Blow has a language he alone develops for his game that can compile 500k lines per second on his laptop. That’s cold compile, no intermediate caching, no incremental builds."
"Better world manifesto"
Ez a rész a zárás.
"I want to see progress. I want change. I want state-of-the-art in software engineering to improve, not just stand still. I don’t want to reinvent the same stuff over and over, less performant and more bloated each time. I want something to believe in, a worthy end goal, a future better than what we have today, and I want a community of engineers who share that vision.
What we have today is not progress. We barely meet business goals with poor tools applied over the top. We’re stuck in local optima and nobody wants to move out. It’s not even a good place, it’s bloated and inefficient. We just somehow got used to it.
So I want to call it out: where we are today is bullshit. As engineers, we can, and should, and will do better. We can have better tools, we can build better apps, faster, more predictable, more reliable, using fewer resources (orders of magnitude fewer!). We need to understand deeply what are we doing and why. We need to deliver: reliably, predictably, with topmost quality. We can—and should–take pride in our work. Not just “given what we had…”—no buts!
I hope I’m not alone at this. I hope there are people out there who want to do the same. I’d appreciate if we at least start talking about how absurdly bad our current situation in the software industry is. And then we maybe figure out how to get out."
Szeretne látni igazi haladást, szeretne változást látni az iparban, szeretne látni igazi csúcs minőséget és reméli ezzel nincs egyedül. Lehetne minden sokkal jobb. Jobb eszközök, appok, amik sokkal kiszámíthatóbbak, megbízhatóbbak, amik sokkal kevesebb erőforrást használnak. A mai helyzet abszurd.
Az eredeti írás persze ennél több infót tartalmaz, de a lényeg átjön ennyivel is. Nekem úgy tűnik, hogy kicsit túlságosan is magasztalja a régi szép időket, amikor minden mennyivel hatékonyabban volt megírva, de a sebezhetőséget, a biztonság hiányát csak közvetetten említi. Mert bizony a régi szép időkben is ott voltak a sebezhetőségek, hiába volt jobban megírva a cucc, csak nem derült ki mert jól működött ha megfelelően használták, míg ma sokszor a hibák teljesen szembetűnőek. Ha megvalósul az álma ("We need to deliver: reliably, predictably, with topmost quality.") a biztonsági, sebezhetőségi problémák maradnak; nyilván jelentősen kevesebb lenne belőlük, de meglenne.
Egyébként pedig a reménye egyre kevesebb lesz, mert vannak egyéb negatív trendek is az "iparban" pl. a kvótázás, nem tehetség szerint.
A vállalatok egyre olcsóbb, tömeges programozókat, vagy talán inkább "programozókat" akarnak, ami miatt a minőség tovább fog zuhanni.
Egy friss példa:
"A Telekom szerint legyen mindenki informatikus"
Vagy azt se árt elfelejteni, hogy miután összejöttek az okosak és megállapították, hogy nem tudják megvédeni a digitális bankokat a hackerektől, a politikus azt a "nagyszerű" megoldást találta ki, hogy ezután kisebbségieknek kéne lenniük infobiztonsági szakembereknek.
Szóval a dolgok valószínű egyre csak rosszabbak lesznek; amit mi tehetnénk, hogy jobbak legyenek leginkább az, hogy a rossz termékeket nem vesszük meg. Abból tanulnának előbb-utóbb.
Viszont sajnos a vezetőink oda vannak ezért az egész digitalizálásért és a biztonsági problémák mellett azokkal a dolgokkal sincsenek tisztában valószínű, amikről ez a szakember írt.