İyi Yazılım

İyi yazılım paylaşımları

En İyi Web Uygulamasını Kim Geliştirir?

Programlama kökenli biri mi? Yoksa tasarım kökenli biri mi?

Siyah ekranlı komut satırlı işletim sistemlerinden grafik temelli arayüz destekli işletim sistemlerine geçildiği andan itibaren, yazılımlardan beklenen tek şey işlevsellik değildi artık. Kullanıcılar artık daha şık, görsel yönden doyurucu, tasarımıyla algısal bütünlük ve kullanım kolaylığı oluşturan uygulamalara prim vermeye başladılar.

Bunun en çarpıcı gelişmesi web uygulamalarında oldu. Öncelikle durağan sayfalar olarak sadece tasarımcılar tarafından geliştirilen web siteleri vardı. Sonrasında işin içine kullanıcıyla dinamik etkileşim girince, web sayfalarında istemci ve sunucu taraflarında kodlamalar yapılmaya başlandı. Arkasından da veritabanı destekli, uygulama ağırlıklı ancak son kullanıcı tarafında da görselliğin ön plana çıktığı bir konsepte kadar gelinmiş oldu.

Aşağıda Hakan Çamoğlu ile yaptığımız online bir sohbetin detayları var. Ben buraya kısaca özetlemeye çalıştım.

Hakan uzun zamandır web uygulamaları ağırlıklı çalışan bir ajans sahibi. Ödüllü bir tasarımcı olan Hakan aynı zamanda bilişim akademilerinde web tasarımı ve programlama konusunda sertifikalı bir eğitmen. Hakan’la ilgili detaylı bilgi için http://www.camoglu.net/ adresine bakabilirsiniz.

Gelelim konuya:
Öncelikle web uygulaması nedir bir tarifini yapalım: Sözlükvari bir yaklaşımla, sizin bilgisayarınızda değil de web bulutunda çalışan, size internet kanalıyla ulaşarak web gezgininiz tarafından çalıştırılan dinamik uygulamalar "web uygulamalarıdır" diyebiliriz. Yani web siteniz sadece görseller, gömülü sabit metin ve html’den ibaretse, sunucu tarafında çalışan bir kod yoksa bu web sitesidir. Ama eğer sunucu tarafında çalışan bir kod varsa, veritabanı etkileşimi söz konusuysa bu bir web uygulamasıdır.

Nelerdir web uygulamaları?
-        Çevrimiçi sözlükler
-        Alışveriş siteleri
-        Portaller
-        Veritabanı etkileşimli tanıtım siteleri
-        Çevrimiçi gazeteler
-        Vb.

Web uygulamaları geliştirme temel olarak 3 boyuta ayrılabilir: Tasarım, yazılım ve işletim.

Tasarım tarafı görsel  tasarımı, animasyonları, üç boyutlu grafik tasarımlarını ve oluşturulan bu tasarımların web’de yaşayabilir hali olan html’i dönüştürülmesini içerir. Html kodlama bir yönüyle programlama kapsamına girse de, günümüzdeki html geliştirme araçlarının kodlamayı neredeyse sıfıra indirmesi nedeniyle bu işlem daha çok tasarımcılar tarafından gerçekleştirilmektedir.

Yazılım tarafında öncelikle sunucu ve istemci taraflı kodlamalar söz konusudur. Sonrasında da veritabanı tasarlama/programlama devreye girer. İstemci tarafında javascript, sunucu tarafındaysa asp.net, php, jsp gibi dil ve teknolojiler kullanılmaktadır. Yine veritabanı olarak MS SQL, My SQL, Oracle, Accsess seçeneklerinden farklı durumlara göre farklı tercihler yapılmaktadır.

İşin işletim boyutunda ise alan adı alma, web uygulamasının barındırılması, web sunucusunun yönetilmesi, güvenlik ve arama motorları optimizasyonları gibi başlıklar karşımıza çıkmaktadır.

Şimdi gelelim nereden başlayacağınıza?
Kabul edilebilir bir tasarım yapmak,  kabul edilebilir derecede kodlama ve veritabanı geliştirmekten daha kısa zaman alır ve çizgiyi belirlemek daha kolaydır.  Ama asıl olan hedefinizin ne olduğudur.

Eğer bir profesyonel olarak orta ve büyük ölçekli ajanslarda, yazılım firmalarında çalışacağım diyorsanız, buralarda uzmanlaşma olduğu için tasarım ya da programlama başlıklarından birini seçmenizi öneririm.

Eğer hobi olarak bu işi yapacaksanız ya da tek başınıza çalışıp küçük ölçekli projeler geliştirecekseniz, Hakan’ın da dediği gibi tasarımla başlayıp daha sonra yazılımla belirli bir noktaya gelip, ardın da her iki alanda da ihtiyacınız oldukça kendinizi geliştirmeniz gerekir.

Kendinizi nasıl geliştireceksiniz?
Öncelikle şu bir gerçek ki, bu başlıkların tamamını içeren tek bir eğitim ya da kitap bulamazsınız. Tercihinize göre belirlediğiniz sırada (programlama, tasarım ya da tasarım, programlama) eğitim almanız yararınıza olacaktır. Ayrıca bu alanda iş yapacaksanız mevcut işleri, yeni teknolojileri ve konseptleri mutlaka yakından takip etmeniz gerekecektir.

Daha fazlası için yorumlarınızı/sorularınızı bekliyoruz.

Kadir Çamoğlu, Microsoft MVP
Hakan Çamoğlu, Adobe Certified Expret

* * *
NOT:
Blogdaki diğer yazılarla ilgili bilgi almak için tıklayın.

Eğer facebook grubumuza halen üye değilseniz tıklayın.

* * *
RÖPORTAJ (MSN)

Kadir:
yazılım alanına giriş yapmak isteyenler, internet projeleri yapmak ya da geliştirmek istiyorlar
bu noktada yazılım geliştirmeyle grafik tasarım arasındaki ayırımı, neyin nerede olduğunu tam olarak bilemiyorlar
internet projeleri yapmak istiyorlar ama hem yazılım tarafını, hem veritabanını, hem grafik tasarımı, hem web tasarımı ve geliştirmeyi bir anda öğrenmek ve hepsini tek başına yapmak istiyorlar
sence buradaki ayırım ne?

Hakan:
şimdi her zaman
tasarımla yazılım birbirine karıştırılmamalı bu bir ekip işi diyoruz ama
artık tasarımcının yazılım yazılımcının tasarım bilmesi şart hale gelmeye başladı
ancak şöyle bir ayrım yapmak lazım bence
yazılımcıdan
süper tasarım
ya da tasarımcıdan süper kodlama beklememek gerekiyor
örneğin bir site yaparken ortada kalan bir alanı bazen ne yazılımcı ne tasarımcı bilmeyebiliyor
sitenin taslağı tasarlandı
taslak onaylandıktan sonra html koda döküldü
tüm sayfalar yapıldı
ama bazı görsel efektlerde kod gerektiriyor
yazılımcı bu alanda tam olarak tasarım bilmediğinden sonuca gidilemeyebiliyor
yada yazılımcı hazır componentler kullanıyor
sonra yeterince tasarım yada css bilmediğinden
onu istenen şekle getiremeyebiliyor

Kadir:
yani aslında iş, web projelerinde tasarımın ve görselliğin ön plana çıkışıyla ilgili diyebilir miyiz
yani web in tarihçesine bakarsak, statik ve tasarım öncelikli sayfalarla başlanıyor
daha sonra programlama devreye giriyor
bu aşamada da tasarım önemli
zamanla dinamik programlama ve veritabanlı uygulamalar gittikçe gelişiyor, ama tüm dünyaya açılan web projelerinde tasarım hala önemli
halbuki öncesinde masa üstü programlamada tasarım neredeyse hiç göz önünde bulundurulmuyordu
sadece öğelerin biraz düzenli olması yetiyordu
listeler, metin kutuları, seçenekler vb.
sanki ayırım buradan başlıyor
masa üstü programlamadan web programlamaya geçiş ve kullanıcı beklentileri
normal bir masa üstü uygulamada standart bir butondan fazlasını beklemezken, aynı işi yapan bir web arayüzünde şık simgeler bekliyoruz
ne diyorsun?

Hakan:
teknik bilgisi olmayan birisi
internet sitelerini gezerken
arka tarafta bir kod çalıştığını bile bilmiyor
web tasarım sınıfıma gelen çoğu öğrenciye bunu yapabilmek için kod yazılmalı dediğimde şaşırıyorlar
dolayısıyla bilmeyen bir göz bir web projesinin sadece tasarımdan ibaret olduğunu düşünür

Kadir:
evet
web projelerine programcı perspektifinden bakanlar da tasarımın önemini göz ardı ediyorlar
tabii olayın şimdi bir de animasyon, video, ses boyutları da var

Hakan:
evet şöyle bir gerçek var
web tasarımını öğrenen herkes
daha sonra ya yazılım öğrenmeliyim yada bir yazılımcıyla çalışmalıyım diyor
ancak yazılımcı bunu nedense kabul etmiyor
tasarım dediğin nedirki
bende bunları yan yana koyarım
bende renk veririm diyor

Kadir:
evet
peki neden web uygulamalarında tasarım bu kadar önde
gerçi masa üstü uygulamalar da artık belki de web uygulamalarında esinlenerek görselliğe önem vermeye başladılar

Hakan:
çünkü artık eskisi gibi seçenek az deil
şöyle düşünelim
eskiden eve koltuk alırken
halı alırken
az seçenek vardı
ve biz onlar arasından bir seçim yapıyorduk
şimdi baktığımızda
Hakan Çamoğlu (22:54):
seçenekler çok çok fazla
dolayısıyla
tasarım daha önemli hale geldi
insanların önünde birden fazla seçenek olduğunda
kendilerini en çok çekene gidiyorlar

Kadir:
evet ama masa üstü uygulamalarda seçenek kullanım kolaylığı, ek özellikler ve fiyat üzerinde yoğunlaşıyordu
web gelişmeden önce de uzun bir süre masa üstü uygulamalar vardı ve grafik tasarım da vardı

Hakan:
ama insanlar daha iyilerini görmemişlerdi

Kadir:
ama neden acaba web gelişmeden önce masa üstü uygulamalarda görsellik ön plana çıkmadı

Hakan:
o zamanlarda masa üstü yazılım vardı ama
windows un görünümü böyle miydi?
artık insanlar
bir sürü yazılım kullanır hale geldiler

Hakan:
önceden bilgisayar ortamında görünenler sayılı şeylerdi
windows
paint
word
excel
ama artık özellikle internetle birlikte
insanlar bilgisayar ekranında çok daha fazla şey görmeye başladılar
dolayısıyla her seferinde
insanlar daha iyisini bekliyor
bu yüzden tasarım git gide önemli hale geldi

Kadir:
artık masa üstü uygulamalar için de grafik ajanslardan destek alınıyor
giriş ekranları, ikonlar, vb. için
peki toparlayalım o zaman
web projelerini sınıflamak mümkün mü;
sanıyorum artık statik html kalmadı
bu durumda
tanıtım ağırlıklı
siteler var
portallar var
fonksiyonel siteler var
direkt iş fonksiyonlarına yönelik siteler var

Hakan:
evet en basit web sitesinde bile iletişim formu isteniyor

Kadir:
en yukarıdan bakıldığında tasarım, yazılım, veritabanı boyutları var diyebilir miyiz
Hakan Çamoğlu (23:02):
dolayısıyla işin içine kod girmiş oluyor
Hakan Çamoğlu (23:03):
evet hemen hemen her işte tasarım + yazılım söz konusu
veritabanı ise
bir üst düzey projelerde devreye giriyor

Kadir:
evet
peki şimdi tasarımı parçlayalım, nedir alt bileşenleri

Hakan:
genel tasarım bilgisi
renk, tipografi, çizim gibi
bu bilgiler eşiğinde taslak hazırlanabilir
bundan sonra devreye uygulama giriyor
html ve css bilgisi
Hakan Çamoğlu (23:05):
daha sonra projenin içeriğine göre
animasyon, 3d, video
bu aşamadan sonra görsel programlama denebilir
özellikle son yıllarda
birçok projede yer alan
actionscript veya ajax
yada actionscript ve javascript diyebiliriz buna
bir de son aşamada yada proje süresince
seo
devreye girmeli
search engine optimization
artık insanlar sitem google da çıksın diyor direk
evet
sayfaları dolduracak veriler de veritabanından çekiliyor ve alınan bilgiler de veritabanına yazılıyor arkasından
tabii veri tabanıyla html arasında da jsp, asp, php gibi web uygulamaları geliştirme teknolojileri var
ve her alan kendi içinde ayrı bir genişlik ve derinlik içerdiği için tek bir kişi tarafından hakkıyla yapılması çok zor gibi görünüyor

Hakan:
evet zor ama imkansız değil
bütün bunlar
tecrübede gerektiği için
şöyle bişey diyebiliriz
ya tek bir konuda çok yükseleceksiniz
yada bir çok konuda bilgi sahibi olacaksınız
dikey yada yatay gelişim

Kadir:
ama yatay gelişimle çıtayı geçen proje üretmek mümkün mü?

Hakan:
hem dikey hem yatay olabilmesi içinde min. 3-4 sene geçmeli
eğer kişi
yüksek bir kapasiteye sahipse
kolay öğrenebiliyorsa
ve herşeyini bu işe adamışsa olabilir
ama çok uzun zaman alır
3-4 sene bile çok olumlu olabilir
belki 7-8 sene

Kadir:
peki çok profesyonel olmayan ama iş görür, göze değer projeler yapabilmek için bu yola yeni girecekler nereden başlamalı?
önce tasarım mı, yazılım mı

Hakan:
bunu şu açıdan değerlendirebiliriz
bir yazılım mezunu öğrenci
ve tasarım mezunu öğrenciyi karşılaştırırsak
tasarım mezunu
yazılım öğrenmeye daha heveslidir
ama yazılıma başlayan birisi
yazılımı bitiremez
csharp öğreneyim
sonra java öğreneyim
sonra o bu şu
derken
işin içinden çıkamaz
bir bu açıdan bakılabilir
ikinciside
kullanıcı bir web sitesine girdiğinde
önce arka tarafta çalışan koda bakmaz
ilk bakılan şey görselliktir
bu yüzden
tasarımdan başlamak daha doğru olacaktır
yazılım zaten istemesede
bir taraftan başlamış olacak
artık yazılım ayrı tasarım ayrı demek mümkün deil
ikisi artık iç içe girmiş durumda
yazılımsız tasarım, tasarımsız yazılım bir işe yaramaz hale geldi
Kadir:
yani diyorsun ki öncelikle tasarımdan başlamalı,
tasarımda bir şeyler ortaya koyabilecek hale gelmek daha az zaman alır ve daha belirgindir
yazılım tarafı ise dipsiz bir kuyudur, her zaman öğrenilecek bir şeyler olur

Hakan:
denebilir
ama bu işe atılacak kişi önce ne yapacağına karar vermeli
eğer içinde video, 3d, animasyon olan bir site yapmak istiyorsa
tasarımı asla bitiremez

Kadir:
yani tasarımı ne düzeyde kullanacağı önemli
Hakan Çamoğlu (23:21):
evet yoksa tasarımda dipsiz bir kuyudur
Tasarımın da, yazılım da sonu yok
peki toparlayıp bitirelim
eklemek istediğin bir şey varm ı
Hakan Çamoğlu (23:23):
sonuç olarak en önemli şey
kişinin sonuçta ne yapmak istediğine karar vermesi

Kadir:
bu hayatın anlamını bulmak kadar zor
biraz dah belirleyici olalım, ne yapmak istediğine karar vermesi derken?

Hakan:


video, 3d vs.
bir çok içerik var
aslında
benim son 1 yıldır çok ilgimi çeken bir sektör var
işlevselliğe
yazılıma en çok önem veren sektör
bankalardı
ve son 1 yılda
tüm bankalar
web sitelerinin tasarımını düzenlemeye başladılar
altın örümcek
ön elemelerinde gördüm
tüm bankalar
sitelerinin tasarımını iyi bir ajansa yaptırmış
ve hepsininki çok güzel olmuş
soru şu olabilir
nasıl bir web sitesi yapmak istiyorsunuz?
kurumsal
ürün tanıtımı
portal
alışveriş sitesi
vs. vs.
örneğin ürün tanıtımı ve kurumsal siteler yapmak istiyorlarsa
3d, video ve animasyon
çok önemli hale geldi
ama portal, alışveriş sitesi vb. projelerde
yazılım ağırlıklı oluyor
ama her ikisinde de
başlangıç aşaması tasarım olabilir
genel tasarımdan sonra
yok ya
bu sarmıyor
ben animasyon yapmalıyım
ben 3d ye geçmeliyim diyebilirler
yada işte tasarım budur
şimdi bunu işlevsel hale getirelim deyip
yazılıma da geçebilir

Kadir:
Teşekkürler Hakan.

Okuyucu Yorumları

Toplam 6 Yorum

tasarımı iki noktadan ele almakta fayda var. grafik tasarım ve kullanıcının asla göremeyeceği tasarım bence bu sıralama şöyle olmalı.
algoritmik tasarım, programlama, grafik tasarım
web uygulamalarında grafik tasarım herzaman daha sonra gelmelidir.
işlevsellik herzaman on puandır.

evet web uygulamalarında önce algoritmik tasarım, yazılım, grafik tasarım şeklinde gerçekleşmelidir.

yazı için daha doğrusu sohbet için çok teşekkürler film izler gibi okudum ve bilmeiğim bir çok şeyi öğrenmiş oldum...eskıden tasarım bilmem gerekmez,bana yazılım yeter diyordum sonrasında ödev projelerinde tasarım kabiliyetim olmadığı için çok zorlandım iş sadece butonu bir yere yerleştirmek değilmiş onu anladım(:
Esra Ünver

Kendimi hep yazılımcı olarak gördüm ama okul projelerimizde bile görsel estetiğin hocalarımızı ne kadar etkilediğini inkar etmek mümkün değil. Kullanıcılar arka planda olagelen şeyleri sanırım tasarımda da görmek istiyorlar. Bu Swatch marka şeffaf gövdeli saat almaya benziyor. Saatin emitasyonu da var, güzel görünmesine rağmen ömrü fazla olmuyor :) eskiler bilir, Seiko5 saatler vardı taş gibi, maden işçileri kullanırdı genelde bizim orda, sağlam diye; kapağını açınca tornavida sokacak yer bulamazdınız. Ama dıştan bakınca gayet mütevazi.

Bir de yazılımcı olarak tasarımda en zorlandığım mesele browserlar arası uyumluluk oldu. Hiç eğitim almadan "agile developer" olduğumu farkettim, her yaptığım değişiklikten sonra defalarca deneyerek aman IE'de nasıl görünüyor, Mozilla'da şurası niye kaymış, birinde düzgün, diğerinde değil... Bir web projesinde bikere 500'e ayarladığım hit counter proje bittiğinde 1400'lerdeydi :)

Ayrıca bir konu da, artık tasarımın içerikten soyutlanması gündemde. Burda da devreye CSS giriyor. Fakat CSS'i hakkıyla kullanabilmek için de resmin bütününü baştan iyi görmek gerekiyor. Yaptıkça öğreniyor insan. ;)
Sanırım bir tasarım kitabı edinmeliyim.
Teşekkürler.

Orkan METİN

@Hakan Bey 'e kesinlikle katılıyorum. Özellikle son 3 çalışmamda müşterilerimin önlerime taslağını attığı eskizler beni fena derecede gerdi hatat sıkıntıya soktu denilebilir.

19 yıldan bu yana bu işin içerisinde olduğumu belirteyim de konunun örneği daha açık olarak gün yüzüne çıksın. Programcıyım. CSS bilgiminde oldukça iyi olduğu kanaatindeydim. Ancak son zamanlarda CSS Türleri o denli iyi uygulanır hale geldi ve üstü tozlu raflardan kaldırılan ve yeniden silinip koyulan bardaklar hesabı o denli güzel bezenip kullanıma sunulur oldu ki buna ne yetişmek mümkün ne de hepsini akılda kalıcı şekilde tutabilmek. Sürekli kendinizi geliştirmeye devam etmesseniz, yaptığınız iş yada işçilik sadece 2 ay geçerliliğini korur pozisyonuna geldik artık. Hakan beyin Önce tasarımla bu işe başlanılması gerektiğini çağrışım yapan cümlesini son derece kesinkes söyleyemediği bir gerçek , ki sebebi de iki işin yani Coding ve Designing kısmının artık iç içe girmiş duurmda olması.

Ama nereden bailanılması gerektiğinde ise gene bir keisnyanıt söylemek son derece manasız olucaktır kanaatimce. Bu durumda sizinde sorduğunuz soru gibi kesinlikle Yatay öğrenim / gelişim olmalı.

Fatih Toprak

Teşekkürler...

Sen de yorum yaz