← Computers & Automation

Programming For Users A Bit of Psychology

B
Bilinmeyen Yazar
1981 · Computers and Automation

Barry Dwyer
Matematik ve Bilgisayar Bilimleri Okulu
South Australia Institute of Technology
The Levels
Pooraka, South Australia 5095

İhtiyaçlar ve Motivasyon

Programcılar, bilgisayar kullanan insanların — kendileri de dahil — yaşamını daha katlanılır kılmak için davranış bilimlerinden nasıl yararlanabilir?

Maslow’un “İhtiyaçlar Hiyerarşisi” ile başlayayım. Maslow’un kuramına göre, insan ihtiyaçları Şekil 1’deki gibi bir hiyerarşi içinde düzenlenebilir.

KENDİNİ GERÇEKLEŞTİRME
SAYGINLIK
SOSYAL İHTİYAÇLAR
GÜVENLİK
YİYECEK, İÇECEK, SICAKLIK

Şekil 1

Bir kişinin alt düzeylerdeki ihtiyaçları karşılandığında, üst düzeylerde tatmin arayabilir. Fizyolojik ve güvenlik ihtiyaçları karşılanmış bir kişi, esas olarak sosyal ihtiyaçlarla; arkadaşlıklar kurma ve bir gruba ait olma ihtiyacıyla ilgilenecektir. Yalnızca dört alt düzey ihtiyacın tamamı karşılanmış olan biri, en üst düzeyle; kendine ilişkin kendi idealinin gerçekleştirilmesiyle ilgilenebilir.

Sendika kuralları, iş gücündeki çoğu insan için alt iki düzeyin karşılanmasını güvence altına alır. Bu nedenle çoğu çalışan sosyal etkileşim ve özsaygı ile ilgilenmektedir.

Herzberg’in Motivasyon Kuramı

İlgili bir bakış açısı Herzberg’in motivasyon kuramında ifade edilir. Herzberg’e göre, karşılanmış bir ihtiyaç, onu geri alma tehdidiyle olumsuz biçimde kullanılmadıkça, bir motivatör olarak kullanılamaz. Çalışma koşulları yeterli ücret, konfor ve güvenlik düzeyleri sunuyorsa, bu düzeylerin iyileştirilmesi motivasyonu pek az değiştirir. Herzberg bunlara “bakım faktörleri” adını verir. Motive edici faktörler ise sosyal ihtiyaçlar ve özsaygı ile ilişkilidir ve şanslı azınlık için uzun vadeli hedeflerini takip edebilme yeteneğini içerir. Temel bir unsur, tanınma ya da başarı hissidir.

"Açıkçası, bilgisayarla ofisteki diğer insanların çoğundan daha iyi anlaşıyorum."

Bilgisayar Programlamasındaki İnsanların İhtiyaçları

Bilgi işlemle uğraşan insanlar üst düzey ihtiyaçlarını nasıl karşılar?

Çoğu programcı için yanıt kolaydır. Bir ekibin üyesi olarak çalışırlar. Bu, sosyalleşme ihtiyacını karşılar ve aynı zamanda “akran grubu tarafından tanınma” sağlar. Akran grubu dışında ise, çoğu insan ne yaptığını pek anlamadığından, bir programcı görece az tanınma bulur.

Bu tehlikeli bir durumdur. Bir programcının en çok, diğer programcıların hayranlığını kazanan şeyleri başarmaya motive olduğu anlamına gelir. Bunlar, nadiren yönetimin en çok arzu ettiği ya da o gizemli kişi olan “kullanıcının” istediği şeylerdir.

Bu, yönetimin programcının çabalarını doğru yöne işaret etmek için proje kontrol sistemleri, teknik şartnameler, dokümantasyon vb. ile müdahale etmesi gerektiği anlamına gelir. Bu tür planlar sosyal ihtiyaçları pek tatmin etmediğinden, programlama ekipleri tarafından grup normları olarak “içselleştirilmedikçe” etkisiz kalırlar. Bu bazen programcıların kendi standartlarını ve proje kontrol sistemlerini tasarlamalarına izin verilerek yapılır.

Bilgisayar Operatörlerinin ve Veri Giriş Görevlilerinin İhtiyaçları

Bilgisayarlarla çalışan diğer gruplar; bilgisayar operatörleri ve veri giriş görevlileri ne olacak? Bu insanlar sosyalleşme ve saygınlık ihtiyaçlarını nasıl karşılayabilir?

Olayların olağan seyrinde, bilgisayar operatörlerinin iş yükü düzensizdir. Durgun dönemlerde genellikle diğer personelle sosyalleşmek için bolca zaman vardır.

Yakın zamanda, tesisimizde bir vardiyayı tek bir operatöre düşürmekte sorun yaşadık. Operatörler, aksine açık kanıtlar olmasına rağmen, bunun neden uygulanamaz olduğuna dair her türlü gerekçeyi öne sürdüler. Tek vardiyada artan sorumluluk nedeniyle daha yüksek bir görev tazminatı talep ettiler.

Temelde sorun fazla sorumluluk değil, yalnızlıktı.

Son olarak, veri giriş görevlisi. Günün büyük bölümünü diğer insanlarla değil, bir bilgisayarla konuşarak geçiren bir kişidir. Bu kişinin sosyal ihtiyaçlarını karşılamasının tek yolu, işine ara vermek olabilir.

VDU operatörlerinin 2 saat çalışıp 1 saat ara vermeyi gerekli bulmalarına şaşmamak gerekir. Radyasyon tehlikeleri ya da göz yorgunluğu konusunda endişe duymalarına da şaşmamak gerekir. Ancak çok sayıda şikâyete rağmen, VDU’ların zararlı olduğuna dair henüz herhangi bir tıbbi kanıt bulunmamıştır.

Kötü Programlamanın Belirtileri

Programcılar ya da sistem tasarımcıları işleri daha iyi hale getirmek için ne yapabilir?

Sorunu açıklayan bir anekdot paylaşayım.

Birkaç yıl önce çevrimiçi bir sorgulama/güncelleme programı yazdım. Verilerin doğruluğunu ve bütünlüğünü güvence altına alma çabalarımda, girdiye yönelik akla gelebilecek her türlü kontrol yapıldı. Yalnızca kesin hatalar değil, olası hatalar da yüksek bir “bip” sesi ve bir hata mesajıyla sonuçlanıyordu.

⚠️ Uyarı: Orijinal metnin bu kısmı (4. parça) API içerik filtresi (Content Filter) veya bağlantı hatası nedeniyle işlenememiştir.

Önceki dönemlerde, görevler görece basitken, yazılım geliştirme donanım geliştirmeye uygulanan mühendislik bilimlerinden oldukça ayrı bir zanaat olarak görülüyordu. Bir yazılım programının kalitesi, bireysel bir ustanın beceri ve yaratıcılığına bağlıydı.

Donanım alanındaki ilerlemeler daha küçük paketlerde daha büyük yetenekler sundukça, yenilikçi kullanıcılar potansiyelden tam anlamıyla yararlanmak için bilgisayarlara daha ağır ve daha karmaşık iş yükleri yüklemeye başladılar. Bu durum, son derece kritik görevler için özgün ve benzersiz sistemlerin gerekli olduğu askerî ve havacılık uygulamalarında özellikle geçerliydi.

Sorun şudur ki, bilgisayar görevleri daha karmaşık hale geldikçe, yazılım geliştirmenin karmaşıklığı birkaç büyüklük mertebesi artmaktadır. Bazı örnekler:

  • 1950’lerin ortalarında tipik bir yazılım programı 10 çalıştırma modülüne sahip olabilir ve günümüzde kullanılan bilgisayar kapasitesinin 1/100’ünü kullanabilirdi. Buna karşılık, modern havacılık ve askerî bilgisayar sistemlerinde 100 yazılım uzmanından oluşan bir kadro tarafından bütünleştirilen 12.000 yazılım modülünü görmek olağan değildir. Birbiriyle etkileşime giren 10 farklı bilgisayar bulunabilir.

  • Günümüzde tek bir bilgisayar işlevi 200.000 makine komutu gerektirebilir ve yerden fırlatmadan 22.300 mil yükseklikteki kendisine tahsis edilmiş yörünge yuvasına kadar bir eşzamanlı uydunun yönlendirilmesini içeren 25 ayrı işlev söz konusu olabilir.

  • Radar ve kızılötesi görüntüleme sensörlerini komuta, kontrol ve iletişim ağlarıyla birleştiren gelişmiş bir silah sistemi, geleneksel prosedürler kullanıldığında, ömrü boyunca yazılım geliştirme ve bakım için 500 insan-yılına kadar emek gerektirebilir.

Bilgisayar sistemlerinin artan karmaşıklığı ve ölçeği, kaynaklar, maliyetler ve güvenilirlik açısından yazılım üzerinde muazzam bir baskı oluşturmuştur.

Sanayi ve devlet yetkilileri bu on yıl içinde otomasyonda on kat artış ve 1980’lerin ortalarına gelindiğinde eğitimli yazılım uzmanlarında yüzde 30’luk bir açık öngörmektedir. Bu emek yoğun bir süreçtir. İnsanlar yalnızca özelliklerin ilk taslağını oluşturan fikirleri ortaya koymakla kalmaz. Kullanıcı gereksinimleri değiştiğinde ya da teknoloji iyileştiğinde, insanlar mevcut yazılımı tüm sistemin bütünlüğünü bozmadan değiştirmek zorundadır. Sözde yaşam boyu bakım olarak adlandırılan bu süreç, daha fazla yazılım sistemi devreye girdikçe iş gücü havuzunu tüketmektedir.

Yazılım Maliyeti Eğilimi

Şaşırtıcı olmayan bir şekilde, yazılım maliyetleri hızla arttı. 1950’lerin ortalarında yazılım, tüm bilgisayar maliyetlerinin yaklaşık yüzde 15’ini; donanım ise yaklaşık yüzde 85’ini oluşturuyordu. Bir çeyrek yüzyıl sonra, bu yıl itibarıyla, oranlar tersine dönmüştür.

Dahası, yazılım güvenilirliği yetersiz kalmaya başladı. Bilgisayar kullanıcıları donanım yeteneklerinden yararlanmak için gereksinimlerini zorladı ve bazen hayal kırıklığına uğradılar. Yazılım, bilgisayar donanımının vaatlerini her zaman yerine getiremedi.

Sonuç olarak, yazılım çoğu zaman hak edilmiş bir ünle etiketlendi: pahalı, takvimden geri ve düşük performanslı.

Açıkça görülüyordu ki, yazılım üretkenliği ve güvenilirliği donanım teknolojisindeki hızlı ilerlemeye ayak uyduracaksa değişiklikler gerekliydi. Büyük ve karmaşık bilgisayar görevlerinin çığıyla parçalanan yazılım geliştirme süreci, makinelerin genetik taslağını formüle etmenin giderek bölünen sürecini bir arada tutacak bir şeye ihtiyaç duyuyordu.

Yazılım yavaş ama kaçınılmaz bir biçimde zanaattan teknolojiye geçiş yapmaktadır...

Bu şey, makinelerin genetik mühendisliği olan yazılım mühendisliğinin katı disiplinidir. Yazılım, yavaş ama kaçınılmaz bir biçimde zanaattan teknolojiye geçiş yapmaktadır — donanımınkinden daha talepkâr standartlara ve uygulamalara sahip bir teknolojiye.

Donanım mühendislerinin minyatürleşmeyle başa çıkmak için yaptıkları gibi, yeni nesil yazılım mühendisleri de üretkenliklerini ve sistemlerinin güvenilirliğini artırmaya yardımcı olmak için bilgisayar destekli tasarım tekniklerine yönelmektedir. Bilgisayarlar, programcı talimatlarını makine dillerine çevirmek için kullanılmış; bir program kavramını daha üst düzey dillere ve oradan da makinelerin anlayabileceği ikili kodlara elle aktarmanın angaryasını ortadan kaldırmıştır. Ancak bilgisayarların gerçek potansiyeli, yazılımın kavram ve tasarımının erken aşamalarında en tam biçimde kullanılmaktadır. Bu erken aşamalarda yazılım ekipleri temel meselelerle yüzleşir.

Özetle, herhangi bir yazılım süreci temelde problem çözmedir: problemi tanımlamak; ardından çözüme götüren en uygun önlemleri seçmek. Eğer yazılım bir göreve ilişkin yanlış anlamalardan doğarsa, bilgisayar sisteminin performansı asla gereksinimleriyle örtüşmez. Bir sistemin doğuştan gelen yapısına aykırı unsurlar — ister bir makine ister canlı bir organizma olsun — onun genetik taslağına dayatılırsa, sistem bozulur hatta dağılabilir.

Bu tehlikelerden kaçınmayı amaçlayan büyük bir adım, Hughes Aircraft Company’de üretim, yönetim ve bilgisayar bilimlerinde kullanılan otomatikleştirilmiş bir gereksinim analiz sistemidir.

Özetle, herhangi bir yazılım süreci temelde problem çözmedir... problemi tanımla, ardından en uygun çözümü seç...

Öncelikle sistem, yazılım tasarımına başlanmadan önce gereksinimlerin açık, eksiksiz ve özlü bir biçimde ifade edildiğini doğrular. Bilgisayar, kullanıcı teknik şartnamelerinde yanlış yorumlamaya açık olabilecek terminolojiyi işaretler. Belirsiz genellemeler, kullanıcı ile yazılım ekibinin sorunun tüm boyutları üzerinde uzlaşmasını sağlayacak son derece nesnel ayrıntılara indirgenir.

Gereksinimler netleştirildikten sonra, bir yazılım tasarımcısı bir fikri doğrulamaya yardımcı olması ve alternatif yaklaşımlarla karşılaştırmak için bilgisayarı kullanabilir. Tek tuşla kolaylıkla, tasarımcı TV benzeri bir terminalin başında oturur ve tek bir satır programlama üretilmeden önce bilgisayar yazılım kavramının işlevini simüle ederken fikrin yeşerdiğini ya da çöktüğünü izler. Bu simülasyon analizi boyunca tasarımcı ile makine, terminal üzerinden yazılım tasarımına özgü bir söz varlığıyla iletişim kurar.

Gereksinimlerin ve tasarım kavramlarının doğrulanması, otomatik yazılım mühendisliğinin yalnızca ilk adımıdır. Bu katı disiplin, yazılım sürecinin tamamına yayılmalıdır.

Bir beceriksizi dâhi yapmaz, ama beceriksizin tasarımı mahvetmesini engeller ve dâhiyi daha fazla yaratıcılık için serbest bırakır...

Hughes, yazılım tasarımının tamamı boyunca standart prosedürleri zorunlu kılarak üretkenliği ve güvenilirliği artırmak için Otomatik Etkileşimli Tasarım ve Değerlendirme Sistemi (Automated Interactive Design and Evaluation System — AIDES) geliştirmektedir. Bir bilgisayarın tutarlılığa olan ısrarı, süreç sırasında mühendislik disiplinini uygulamak için onu ideal kılar. Örneğin, bulanık düşünce basitçe "hesaplanmaz"; çünkü veri bankasında yalnızca sağlam mühendislik ilkeleri bulunur. Ayrıca, hatalar ya da eksiklikler tasarım kilitlenmeden önce saptanır.

Bir yazılım mühendisi bunu şöyle ifade ediyor: "AIDES bir ahmaktan dahi yapmaz, ama ahmağın bir tasarımı mahvetmesini engeller. Ve dahiyi daha fazla yaratıcılık için serbest bırakır!"

Önerilen bir tasarım, kalite açısından alternatif olasılıklara karşı ölçülebilir; ölçütler olarak bir tasarımın sadeliği, ekonomisi, uyarlanabilirliği ve test edilebilirliği kullanılır. Tasarımcı, problemi çözüme götüren yapıları ve mimarileri değerlendirmek için bilgisayar terminalini otomatik bir "mühendislik karalama defteri" gibi kullanacaktır. Periyodik olarak, tasarımcı mecazi olarak geri çekilip, tüm karmaşık sistemin ayrıntılarını bilmeden bile, belirli bir alt sistemin toplam düzen içine nasıl uyduğunu görebilecektir.

AIDES, tasarım kararları için yüksek hızlı bir bilgi kaynağı olarak hizmet vermenin yanı sıra, en güncel yazılım tasarımını otomatik olarak taslak haline getirecek, depolayacak ve belgeleyecektir. AIDES bilgisayarı tüm yazılım bileşenlerini çizecek ve konumlandıracaktır. Değişiklikler yapıldığında yapıları yeniden düzenleyecek ve genetik planın görsel temsilleri olan, duvar boyutunda yapı şemaları üretecektir. AIDES’in, gelecek yıl uygulamaya alındığında, tüm yapı şeması maliyetlerinin yüzde 95’ini tasarruf ettirmesinin yanı sıra yazılım tasarım süresini de yaklaşık yüzde 30 kısaltması beklenmektedir.

Bilgisayar destekli sistemden kaynaklanan, belki de daha kapsamlı bir başka yarar daha vardır. Bir yazılım modülü tasarımı tamamlandığında, sistemin veritabanına kaydedilir. Bu genişleyen kütüphane, nihayetinde kolayca erişilebilen, raflardan hazır alınabilen yazılımlar için bir depo görevi görebilir. Bilgisayarın "genetik mühendisleri", geniş envantere uzanabilecek ve donanım mühendisi meslektaşlarının mikroelektronik yapı taşlarını raftan alması gibi, yeniden kullanılabilir yazılım modüllerinden yararlanabilecektir.

Bundan önce ise, otomatik yazılım mühendisliğinin yazılımın diğer aşamalarına—programlama, test ve bakım—genişletilmesi gerekmektedir. Ancak en azından, otomatik yazılım mühendisliğine giden yol, makineler için bu yeni tür genetik mühendisleri tarafından bulunmuştur. Başkaları için sorunları çözmek üzere tasarlamalarına yardımcı oldukları makinelerin içsel yeteneklerini kullanan yazılım mühendisleri, kendi yazılım sorunlarını çözmeye başlamaktadır.


Duyuru

Yardımsever bir kişinin, yardımı zorla alınan biri değil, gönüllü olarak yardım eden biri olduğunu unutmayın. Programlar için de durum aynıdır.

"Bilgisayar bir insan olsaydı, onu burnuna ne kadar sürede vururdunuz?"

İyi tasarlanmış bir diyalogun etkisi, kullanıcının sistemi kullanmayı kolay öğrenmesidir. PITA etmenlerinden şikâyet etmez. Uzun süreler boyunca onunla çalışmaya istekli ve mutludur.

Bir alıntı daha:

"Açıkçası, bilgisayarla ofisteki diğer insanların çoğundan daha iyi anlaşıyorum."

Son olarak, bu konuda verebileceğim çok daha fazla özel tavsiye olmasına rağmen, bunların hepsi aslında gereksizdir. Sadece ilgili temel ilkeyi anlayın. O bilgisayar bir insan olsaydı, onu burnuna ne kadar sürede vururdunuz?


Berkeley — Sayfa 21’den Devam