şükela:  tümü | bugün
  • biraz micro blog şeklinde kullanacak olsam da yazılarımın ilgili okuyucular için önemli olabileceğini düşünüyorum. başlamadan yazılım sektörüyle ilgili gözlemlerimi ve bu işin gerçekten nasıl yapılması gerektiği ile ilgili düşüncelerimi paylacağım.

    yazılım olayı nedir tam olarak ? siyah ekran ve değişik değişik terimleriniz var. onlar ne oluyor ?

    size kullandığımız herşeyin yazılımdan ibaret olduğunu anlatmayacağım. bu işlere ilk olarak heves sardığımda liseye gidiyordum. bir web sitesi yazma düşüncesi heyecanlandırıyordu. daha da önemlisi yapacağım işin insanlar tarafından görüşmesi ve çok kişiye ulaşacak olmam heyecanlandırıyordu. sanıyorum ki sosyal medya'nın çok fazla kullanılmasının sebeplerinden birisi de bu. o dönemler bizde yazılımcı kavramı oturmamıştı. dreamweaver kullanıp yazılımcı egosuna sahip insanlar vardı. karanlık bir dönemdi. ben o zamanlar başladım.

    internet üzerinden para kazanma geyiğini duymuşsunuzdur. hani bir site açıyorsun. sonra zengin oluyorsun. o dönemler ben de o furyaya kapıldım. teknik bilgim ve yetersiz ingilizcemle blogspot üzerinden otel sitesi açıp adsense reklamı almıştım. reklamlarıma kendim tıklıyordum.. sonuç olarak hesabım banlanmıştı. ben çok önemli bir şey öğrenmiştim. dünya'nın en iyi yazılımıyla, tasarımıyla bir şeyler yapmanız hiç bir anlam ifade etmiyor. seo ile o yaşlarda tanıştım. caffeine algoritması vardı yanlış hatırlamıyorsam. google patentlerini inceleyip testler yapıyordum.

    html/css ve php ile dünyam başladı. wordpress'in o güzel cms'sine geliştirmede yapıyordum. seo benim bakış açımı inanılmaz değiştirdi. digital marketing konularına yöneldim. çok iyi olduklarını düşündüklerim yazılımcıların neden bir proje üretmediklerini düşünüyordum. bu düşünceye cevap bulmam 4 senemi aldı. bu cevabı yazımın son bölümüne saklıyorum.

    benim kadar başarısızlık yaşayan birisi olmamıştır sanırım. mesela lise dönemimde çok acayip sitelerime inanılmaz girişler oldu. bunu sağlayana kadar bir dolu başarısızlık var. tam işte oldu, dedikten sonra ddos saldırlarına maruz kalıyorsunuz.

    eminim her işte böyledir. yazılım için de durmadan çalışmak gerekir. hatta bir anımı anlatayım. ıos için geliştirmeye yapacağım. xcode diye bir ide var. hello world yazdıracağım. başka bir şey değil. kodu nereye yazacağımı bulamamıştım. sonra okuya, okuya çatır çatır yazıyorsunuz. o gün böyle dil mi olur ? deseydim. bunu öğrenemeyeceğimi adım gibi biliyorum.

    şu siyah ekran meselesini bir cevaplayayım. developer'ların bir çoğu terminal kullanır. sunucuya bağlantı kurmak, dosyaları uzaktaki repoya göndermek için vs. terminal kullanıyorlar. yapılan işlemler gözünüzü korkutmasın.

    okullarda mühendislik eğitimi nasıl ?

    doğrusunu söylemek gerekirse büyük umutlarla üniversiteye gittim. stanford seviyesinde eğitimler bekliyorumdum falan. abuk subuk dersler aldım. bana pek bir şey kattığını söyleyemem. sektörde böyle sunumlar oluyor. js teknolojilerini falan anlatıyorlar. özgür yazılım günleri gibi eventlar oluyor. oradaki konuşmacılar, katılımcıların bir çoğu 2 senelik okumuş adamlar. adamlar diyorum. kadın yazılımcı ne yazık ki çok az çıktı.

    önce şunun cevabını vermek gerekir ? neden yazılım sektörüne girmek istiyorum ?

    - çalışma ortamları rahat,
    - maaşları tr ortalamasının çok üstünde, (lise mezunu bir adam doktordan fazla kazanabiliyor.)
    - geliştme isteğinden dolayı,
    - proje geliştirip zengin olma düşüncesi,

    sayamadığım bir dolu sebep olabilir ama bir kaç sebebiniz olması gerekiyor. inovatif bir kafanız yoksa sadece teknoloji öğrenirsiniz. daha yüksek maaşlı bir yerde çalışırsınız. kariyer hedefiniz sadece maaş üzerine kurulu olur. benim istediğim bir şey olmadı fakat herkesin düşüncesine saygı duyuyorum.

    nerden başlamak lazım ?

    yaşınız ne olursa olsun. bu işi yapabilirsiniz. yeter ki bilgisayar başına oturduğunuzda vazgeçmeyin. o yüzden bu yaştan sonra başlanmaz diyen kişilere kulak asmayın. başarılı bir öğrenciyseniz. tr'de 1 kaç üniversite bilgi açısından olmasa bile ık açısından fark yaratıyor. zaten bunlar belli olduğu için üniversite reklamı yapmayayım.

    ben şunu gördüm. cto yaptığım firmaya belirli dönemler lise stajyeri alıyorduk. son sene hem staj yapıp bu teknolojileri öğrenmek istiyorlar hem de sınava çalışıp iyi bir üniversiteye girmeyi düşünüyorlar. birincisi o kafadan vazgeçmek gerek. ben sınava çalışacağım diyorsanız da benim tavsiyem mesai saati kafasında konulara çalışmak.

    neyse şimdi nereden başlayacağız ?

    öncelikle paradigma konusunda kendinizi geliştirmeniz gerekiyor. odun gibi bir programlama diline girerseniz. çok sıkıntı yaşarsınız. ben front-endcilerin bir çoğunda paradigma eksikliği sorununu gözlemliyorum. bu sorunu çözmek için ;

    programming paradigms dersleri vardı stanford'un. onlara başlayabilirsiz.

    bu aşamadan sonra hangi yönde kendimizi geliştirmek istediğimizi seçmemiz gerekiyor ?

    sunucu, network, mobil, web, elektronik .. hangileri ? bu seçim o kadar önemli ki. kullanışsız bir dil öğrenirsiniz. aç kalırsınız. bununla ilgili bir analiz yapar. burada yine paylaşırım.

    mobil seçtiniz diyelim.

    android, ıos diye bir seçenek çıkıyor. mesela ıos için kullanabileceğiniz minimum 2 dil 1 framework var. objective c mi ? swift mi ? react native mi ?

    bu seçimi tamamen ihtiyaçlarınıza yönelik yapmanız gerekiyor.

    yavaş yavaş ilk bölümü bitireyim. şu cevabı vereyim. iyi olduğunu düşündüğünüz bir yazılımcı neden bir şey üretemez ?

    bu soruya verdiğim en tutarlı cevap şu ; özellikle web,mobil odaklı yani kullanıcı etkileşimli bir işten söz ediyorsak. design bilmek gerekiyor. front-end ve back-end bilmek gerekiyor. yani ben çok iyi php yazarım diyen bir adam ıos'a geliştme yapamayabilir. hatta yakın bir zamanda meteorjs yazan bir arkadaşım. ıos'a geliştirme yapmaya çalışıyordu. bir ton sıkıntısı vardı. yani tasarımcıyı buldu diyelim. çizdirdi. front-end'ini yaptıktan sonra back-endi yapmaya enerjisi olmuyor.

    diğer bir gözlemim. bu adamların maaşlarından memnun olmaları ve yalnızca teknik bilgilerini geliştirmelerinin tatmin etmesi. yani ınstagramı yapabilirim. yapabilecek olmak bana gerekli hazzı veriyor kafası.

    ilk bölümde söyleyeceklerim bunlar. bir sorun olmazsa güzel bir roadmap oluşturma niyetindeyim.
  • evet roadmap olusturmak cok onemli ama aslinda iyi yazilimci olmanin temel ozelligi iyi bir teori (universite) egitimleri aldiktan sonra her dile max 2 hafta sonunda yuzde yuz hakim olabilmeli.

    ornek gecen nisanda internet of things, c yapiyorduk ondan sonra swift ve functional programming oldu, suan da django-python yapiyoruz.

    yani kendinizi iyi bir asci yapmak icin bir tarife baktiginizda herseyi dogustan biliyormus gibi yapmalisiniz, veya en azindan sure verildiginde öğrenmelisiniz.

    kotu asci iyi iskender yapar ama tatli yapamaz mesela, bu yuzden ozellikle takim ile calisma manifestosunda cok onemli degisime tamamen acik olmak.

    artik neredeyse tum sirketler startup gibi calismaya basladi ve kendi icinde takim rekabetini destekliyorlar.

    bu yüzden producti en uyumu dil ile gelistirmek gerektiginde direk research time verip dili sokup gelen elemanlar cok araniyor.

    yani ben denim ki, universite dersleri uzerine gitmek cok katki saglar

    (bkz: edx)
    (bkz: coursera)

    not: kitap okuyan arastiran yazilimci doktordan daha fazla kazanir, ama okumayan araştırmayan yazilimcidan bir bok olmaz, hayaller silsilesinde 3.5k ile hayatini dondurmeye oynar....... ;)
  • doğru dil seçimi ? dünya nereye gidiyor ?

    2000'li yılların ortalarında bir asp modası vardı. bugün adını duymuyoruz. c#'cı bir topluluk kaldı. yakın zamanda onlarında bitmesi dileğiyle.. şaka bir yana doğru teknoloji seçimi yapmak işlerinizde tam anlamıyla fark yaratıyor. biraz örneklerle anlatayım.

    ben c öğreneceğim. ondan sonra web sitesi yapacağım derseniz. sıçarsınız. ben bir dili öğrenmeyi seçersem aşağıdaki gibi sınıflandırma yapıyorum.

    - ne kadar hızlı geliştirme yapabilirim ?
    - taleplerimin tamamını karşılayabilir miyim ?
    - ne kadar hızlı geliştiriliyor.
    - ne kadarlık bir topluluk kullanıyor ?
    - tr'deki talepler ne doğrultuda ?

    örneklere geçelim.

    mesela python'un django framework'üyle normal bir dile göre çok daha hızlı proje çıkarırsınız. taş gibi çalışır. fakat türkiye'de ne yazık ki çok fazla kullanılmaz. en büyük sebeplerinden birisi bir işe başlayan yazılımcının o dille devam etmesi. mesela web'e geliştirme yapmak isteyen birisi hemen php'e ve ya c#'a yöneliyor. haliyle bir sektörde o işi yapan ne kadar çoksa fiyatta işletmeci için düşmüş oluyor. ucuza eleman çalıştırmak için php veya c# ile girişimlerine başlıyorlar. bu durumda bir seçim yapmak gerekiyor. bu seçimi de + ve -'lerinize göre değerlendirmek size düşüyor.

    front-end üzerinden örnek vereyim.

    html/css öğrenebilirsiniz. etliye sütlüye karışmazsınız. tasarımı giydirir. işinize bakarsınız. mesela böyle bir algı var. 4 sene önce bu söylem biraz haklı olunabilirdi. şimdi değil. js teknolojilerinde uzmanlığı olmayan kişilere front-end developer olarak bakmıyorlar bile. maaş durumu bile bu teknolojilere göre değişiyor.

    html/css + jquery => bu temeli oluşturuyor. + reactjs 'i koyduğumuz anda developerın durumu değişime uğruyor. siz siz olun for yazmayı bilmeyen front-endcilerden olmayın. fakat bu sektör öyle nankör bir sektör ki angularjs yazarsınız. sonra topluluktan bir çoğu vuejs'ı övmeye başlar. "abi vue aşmış, onda yazalım" kafasına girerler. sektör değişime uğramaya başlar. ne geliyorsa o ilk ateşi yakandan geliyor. neyse..

    bir de mobilden örnek vereyim. 3 sene önce sanırım. swift yayınlandı. insanlar hurra swift öğrenmeye başladılar. topluluğu gelişmemişti. başlangıçta bir dolu developer sıçtı. şu an en azından krallar gibi işlerini yapıyorlar. tr için konuşmuyorum. çünkü firmalar objective c ile başladıkları kodlarını swift'e taşımayı masraflı buluyor.

    ıos ve android development yapmış birisi olarak şunu söyleyebilirim. yakın gelecekte platform dışı teknolojiler her şeyi değiştirecek. react, meteor bunlardan en büyük örnekleri. teknolojiler hızlı bir şekilde javascript kanalına kaymaya başladı.

    facebook diyor ki ; "abi sen web yazıyorsun, ios için swift, andorid için javayla uğraşıyorsun. bir de yetmiyor bunların görünümleriyle uğraşıyorsun. uğraşma ben sana bir platform sağlayayım. çatır çatır geliştir."

    işlerin ne kadar kolaylaştığını düşünsenize. androidciye para verme, ioscuyu kov gitsin, front-endci zaten kim köpek. işte bu düşünce full stack developer kavramını doğurdu. ne iş olsa yaparım abi. zaten bundan önce de vardı diyeceksiniz ama en azından bu kadar popüler değildi.

    akıllı telefonlar çıktığında web'in x oranda büyüyeceğini mobilin 5x ile büyüme göstereceğini düşünüyordum. sanıyorum ki haklı çıktım. şu an js teknolojileri 6x oranda büyüyor. js yazmayan yakın gelecekte aç kalabilir :)

    girişken olmak sektörü takip etmek çok önemli. sketch diye bir tasarım programı var. bir tasarım programı front-endcinin hayatını nasıl kolaylaştırır ? adam senin bilinçsiz kod yazmanı engelliyor.

    şimdi sonuca gelelim.

    front-end aşamasında bulunacaksınız ?
    html/css + saas + jquery + reactjs

    mobil yazacaksınız ?
    react native

    back-end yazacaksınız ?
    memur olucağım diyorsanız : c#
    hızlıca güzel proje geliştireceğim ama iş bulamiyebilirim : python/django
    her durumda ekmeğime bakarım : php/laravel

    redis, memcache, elasticsearch, postgresql, nosql, mongodb, mysql, rest api

    gibi extra öğnenmeniz gereken şeylere de ihtiyacınız olacak.

    scala, go, java, ruby, c++ ve c alternatif olarak önerebileceğim platformlar. ben sadece ıos yazacağım diyorsanız. swift öğrenin. ben swift biliyorum. şimdi hayvani app'ler yaparım diyorsanız yanılıyorsunuz. xcode bambaşka bir yapı sunuyor.

    bu konuyu hızlıca bu şekilde toparlayayım. ben özellikle sektör grubu geniş bir kesimi değerlendirdim. sizin özel ilgi alanınız varsa araştırabilirsiniz.

    ingilizce konusu;

    bir kaç arkadaşım ingilizce bilmiyordu. bir sorunla karşılaştıklarında arama yapıyorlar. dil bilmedikleri için sadece girdikleri sitede kod arıyorlar. bu değişik bir kafa. bu konuyu acil bir şekilde halletmeniz gerekiyor şayet bilmiyorsanız. tr kaynak bana yeter diyorsanız. garip garip adamların tanımlamalarına maruz kalırsınız.

    geliştirici ve mühendis kafaları

    bu sektöre girdiğinizde bir yol ayrımına gireceksiniz. yanı baktığınızda her şeyin kütüphanesi var. oturup birde request için kütüphanemi yazayım. redis'i baştan mı geliştireyim diyebilirsiniz. benim bir çok arkadaşım. bas geç yapıyor. yani bir kodun çalışması ve düzgün yazılması bir developer için yeterli olabiliyor. bir mühendis içinse durum farklılaşıyor. mühendis adam o sistemin çalışma yapısını da kavrayan adamdır. nasıl olsa çalışıyor. banane demeyin. github'da okuduğunuz bir kod yazılıma bakış açınızı değiştirir.

    benim matematiğim kötü geyiği ?

    bu iş için iyi matematik bilmeye gerek var mı ? eskiden olsa evet derdim de şu an tr'de yapılan işlere baktığımda çok fazla gerek gözükmüyor. en azından matematik 1 bilmeniz hayatınızı kolaylaştırır.
  • udemy,lynda v.b platformlar sayesinde herkes "yazilimci" olabiliyor fakat su unutulmamali ki "yazilim muhendisiyim" derseniz muhendisler odasinin tuzugune gore "muhendislik fakultesi" mezunu olmaniz gerek.eger "muhendis" unvanini kullanacaksaniz bunun kanuni yaptirimlari da var.bazi ulkelerde "software engineering" hala daha "engineer" unvanini kullanabilecek konumda degil...

    bu gibi hukuki haklarinizi her "yazilimciyim" diyene kaptirmayin.turkiye gibi acik pazarlarda herkes "bilgisayarci","yazilimci","web designer" olabiliyor.
  • (bkz: eduard suess)
  • bölüm 3 : aydınlanma, standarta uygun kod yazımı, kod review kafası

    kod yazmaya ilk başladığınızda kodlarınız çok kötü olacak. garip garip değişken isimleri vereceksiniz. basit işlemleri dolambaçlı bir şekilde yapacaksınız. bunlar yeni başlayan kişiler için normal. ilk ayın sonunda ilk yazdığınız kodlara baktığınızda bunu hangi kafayla yazmışım ben diyeceksiniz. bu senior olana kadar devam edecek.

    aydınlanma aşamasının olduğu nokta sanıyorum ki sorunlarla karşılaştığınızda ; bu sorunları arama motoru aracılığıyla çözdüğünüz anda olacak. sizin yaşadığınız problemi emin olun başkaları da yaşadı. onların deneyimlerinden faydalanmak işinizde ilerlemeye sebep olacak.

    üniversitede garip garip dersler aldım. bir çoğu hayatımda hiç bir anlam ifade etmedi. o yüzden işin o kısmını unutun. aydınlanma yaşayacağınız diğer bir konu github'daki alanınızla ilgili kodları incelediğinizde olacak. ben orayı er meydanı olarak nitelendiriyorum.

    şimdi kod yazımında bazı standartlardan söz edelim.

    - fonksiyonel çalışın : basit bir blog yapıyorsan bunun önemini çok fazla anlamazsın ama iş biraz karmaşıklaştığında nerede ne işlem yaptığını görmen açısından büyük önem taşıyor. gerekli durumlarda class oluşturmayı unutmayın.

    - 2 farklı yazım tekniği var. performansa uygun ve temiz kod yazmak zaman alabilir. bu anlattığımı ihtimalleri katarak değerlendirin. mesela bir query'niz var. cache yazmak size extra zaman ve maliyet kaybı yaratacak fakat sisteminiz daha performanslı olacak. ben gerekmedikçe optimizasyon yapma taraftarı değilim. bir şeylerin hızlı çıkması çok daha önemli çünkü işin içine girince anlayacaksınız. kurumsal proje yapmıyorsanız o proje bitmiyor.

    - kütüphaneleri kullanın : amerikayı yeniden keşfetmeyin. mevcut kütüphaneleri kullanın. o kütüphanelerin arkasındaki topluluğun o kütüphaneyi devamlı geliştirdiğini unutmayın.

    - yorum : kendiniz için bile olsa kodunuzda yorum kullanmaktan çekinmeyin. bunun herkes tarafından anlaşılabilir olması kodunuza daha sonra bir başkasının girmesine sebep olacak.

    - değişken isimleri : css yazan bir mühendis arkadaşım vardı. alt -> altinalti -> altinaltıninalti şeklinde değişken isimleri vermişti. kanım donmuştu. demek ki neymiş. css bile olsa class isimlerini, değişken isimlerini anlaşılabilir vermek gerek. hocamızın teki şöyle söylemişti. yazılımda doğru değişken isimleri kullanmak en zor konulardan birisi.

    - indent olayı : şu olay sanırım en güzel python'da işlenmiş. çünkü seni mecbur bırakıyor. ne yazarsanı yazın. şu girintili yazmaya özen gösterin. neyin nerede olduğu belli oluyor.

    - programlama dilleri çok fazla değişime uğramaz fakat frameworkler devamlı gelişir. güncellemeleri takip etmeniz gerekiyor.

    kendi frameworkümü yazdım geyiği

    siz böyle adamlara uymayın. tarzınıza yakın olanı kullanın.

    code review (kodun incelenmesi) : kısaca anlatmak gerekirse kodun incelenme meselesidir. hem standartlara uygunluk hem de temelde yapılan hataların ortaya çıkmasını sağlar. yazdığınız kod bloğu ekip ve ya kişi tarafından incelenir. kendi kodunuzda review yapmanızda ben sakınca görmüyorum. projeyi yazarken az düşünen kişiler için iyi olabilir.
  • bölüm 4 : ego sorunları ve freelance meselesi

    bir yazılımcı için en büyük sorunlardan birisinin ego sorunu olduğunu düşünüyorum. hatta junior seviyesinde bu hastalığa girmiş kişiler gördüm. siz siz olun. bu tarz bir kafa içerisine girmeyin.

    öncelikle yaptığınız işi sadece siz yapmıyorsunuz. bunun farkında olun. dünya da bu işi sizden daha iyi yapacak milyona yakın kişi var. bir doktor için tedavi etmek zorunluluksa sizin de işinizi yapmanız mutlak bir sorumluluk. fakat şöyle oluyor. yazılımcı iş seçmeye başlıyor. bunu yaparım. şunu yapmam gibi. profesyonel olun. siz maaşlı bir yerde çalışıyorsanız. onun karşılığını verin.

    "ee abi ben projeyi yazdım. herif milyon dolar para kazandı. ne anladım ben bu işten." diyenler çıkacaktır. boğaz köprüsünün yapımında çalışmış birisi onun sahibi olduğunu iddaa edemez. bunu bu şekilde düşünmek lazım. yine de kendinizde o potansiyeli görüyorsanız; kendi girişiminize başlayabilirsiniz. önünüzde hiç bir engel yok. biraz cesaret ve çok çalışma ile sonuçlar alabileceğinizi düşünüyorum.

    bir anımı paylaşayım. orta seviye bir yazılımcı ; her ortamda kendini övüyordu. developer olduğunu iddaa ediyordu. yalnızca başkasının kodunu editleyip bir bütün oluşturuyordu. (developer tanımınıza bu girmez sanırım.) code review günlerimiz oluyordu. o gün o çocuk öyle bir deneyim yaşadı ki. yetersiz olduğu yüzüne çarpıldı. kendinizi bilin. girişken olun ama egolu hareket etmeyin.

    yine aynı seviyede bir yazılım grubunda maaşlarla ilgili bir sorun çıkmıştı. birisi mühendisti, diğeri meslek lisesinden mezun bir çocuktu. aynı seviyede maaş alıyorlarmış. ık ve ya idareciler bunu bir pozitif ayrım olarak görebilir ama cto olarak çalıştığım hiç bir yerde bu bir seviye değildi. ben adamların yaptıkları işlere bakarım. bu firmadan firmaya değişir tabi. kurumsal firmalarda bu tarz bir durum pek görmeyiz.

    bu konu da en son şunu söyleyeyim. 2 satır kod yazıyorsanız diye dansözlüğe gerek yok. türk gibi başlayın, alman gibi bitirin.

    - freelance meselesi

    freelance'ler size nasıl gelir ?

    - tanıdıklarınız önerir.
    - sektörde bilinen birisinizdir. size oradan gelir.
    - github'da çok iyi open sourcelarınız vardır. oradan gelir.
    - siz freelancer.com tarzı sitelerden bulabilirsiniz.

    en güzeli tasarımcılar. behance'e bir tasarım at. freelance yağsın. ne güzel istanbul..

    freelance alırken dikkat edilecekler ?

    - işinizi ucuza satmayın. gerçekten işin ortalama değeri neyse onu verin.
    - kuralları ve deadline'ları başta konuşun. revize meselelerini önceden konuşun. çünkü adam aklına gelecek her şeyi sizden isteyecek. sınırlarınızı koruyun.
    - her şey yazılı bir şekilde olsun yoksa emin olun pişman olursunuz.
    - anlaştığınız rakamın yarısını iş öncesi alın. kodu teslim ederken diğer kısmını alın.
    - arkadaşlarınıza freelance yapmayın !
    - telefonla iletişim kurmayın. mail ile kurun.
    - çalışabiliyorsanız. yabancılarla çalışın. kur farkının değerini hissedersiniz.

    kendinizi geliştirmek ve bağlantı sayınızı arttırmak istiyorsanız freelance iyi bir seçenek olur. bir dönem sonra freelance kafasını bırakıp kendinize portfolio kasmanız gerekecek. unutmayın.

    bu arada ; güzel mesajlarıyla destek olanlara teşekkür ederim :)
  • bölüm 5 : süreç planlamaları <jira, trello, slack> mvp'nin önemi

    merhabala arkadaşlar, kanalıma hoş geldiniz. <şaka, şaka> sondan başlayayım. yazılım projelerinde mvp kafasını iyi algılamak lazım. öncelikle bunu biraz tanımlayayım.

    mvp, projeninizin en yalın hali diyebiliriz. örneklerle anlatayım. bir e-ticaret paket yazılımı ürettiğimizi düşünelim. müşterinin temel istediği şey ; satış yapmak. siz bu projeye başlarken benzersiz kampanya özellikleri, banner yönetimi, tema yönetimi, crm, muhasebe entegre etmeye çalışırsanız. sizin projeniz bitmez. ve başarısız bir iş yapmış olursunuz.

    ben başladığım projeleri kurgularken aşama, aşama ilerlemeyi düşünüyorum. önce çalışan en az özellikli kullanılan bir şey ortaya koyayım. daha sonra uygulama kullanılmaya başladıktan sonra geri dönüşlerle uygulamayı geliştiririm. özellik kötüdür demiyorum. özellik maliyet ve zaman doğurur diyorum. bir projeye kendim yalnız başına bile başlasam ; trello üzerinde bir board oluşturup feature'larımı listeliyorum. tüm feature'lar çıktıktan sonra o özelliklerden en ihtiyaç olunanlarını alıp projeyi geliştirmeye başlıyorum. bu bana ne sağlıyor ?

    - kullanıcının istemeyeceği veya farklı isteyebileceği bir özelliği önceden yapmamış oluyorum.
    - sistemimi devamlı geliştirerek kullanıcıların kullanım deneyimlerini geliştiriyorum.
    - gereksiz zaman ve maliyetten kurtulmuş oluyorum.
    - projem çok daha hızlı alfa ve beta aşamalarına geçiyor.
    - projedeki kişiler projeden sıkılmamış oluyor. bu çok önemlidir. 1 sene uğraşıp yaptığınız işi göremezseniz sıkılırsınız.

    yukarıda saydığım sistemlerden bahsedeyim.

    trello : bir to-do uygulaması. basit bir proje yönetimi diyebiliriz. işlerinizi orada listeleyip zamana göre planlayabilirsiniz. 3,4 kişi çalışıyorsanız trello işinizi görür. bir arkadaş grubuyla web projesi yapıyorsanız aşağıdaki board yapısını kullanabilirsiniz.

    design, front-end, back-end, test, feature şeklinde boardlarınızı oluşturabilirsiniz.

    slack : eskiden ırc vardı hatırlar mısınız ? işte slack o konsepti web projesine getirmiş. ekip içi iletişimi sağlıyor.

    jira : büyük boyutlu projeler için proje yönetim sistemi. kişileri ve projeyi detaylı bölümlere ayırmanıza yardımcı oluyor.

    bu uygulamalar neden önemli ?

    yaptığınız işten kopmamanız gerekiyor. abi nasıl olsa işi ben yapıyorum. kafama göre yaparım derseniz, koparsınız. ne kadar çalıştığınızı görün. çalışma sürenizi nesil optimize edebileceğinizi düşünün.
  • bölüm 6 : zaman yönetimi : pomodoro tekniği

    kopma sorunu herkesin başına gelebilir. bir işe ayırdığınız zamanı çok daha etkili kullanabilmek için bazı zaman yönetim teknikleri kullanırız. odaklanmanın etkili yollarından birisi bu zaman yönetimi uygulamalarıdır.

    bir proje'nin ortasında facebook, twitter, ekşi'ye girdiğinizde, kopma sizin için başlar. youtube'da ilgi çekici bir video'ya denk geldiyseniz geçmiş olsun. 20 dk gitti. daha sonra bi 5 dk "ne yapıyordum lan ben ?" kafasına giriyorsunuz. 5 dk daha kaybettiniz. zamanınız boşa gitti, geçmiş olsun.

    pomodoro : 25 dk süreli çalışma, 5 dk dinlenmeyi esas alan bir çalışma modelidir. bir timer ile işinize başlıyorsunuz ve başka hiç bir şeyle uğraşmıyorsunuz. sadece planladığınız işe vakit ayırıyorsunuz. süre dolduğunda dinleniyorsunuz. 5 dk. sonra tekrar çalışmaya başlıyorsunuz. yani bir modül yazacaksanız. kaç pomodoro kullandığınızı görebileceksiniz.

    ben bunun için be focused pro diye bir uygulama kullanıyorum. bu şekilde çalışmaya alıştığınızda işlerin ne kadar hızlı bittiğini göreceksiniz.

    müzik konusunda bir kaç şey diyeyim. ben sözlü müzikler fazla dinleyemiyorum. coldplay falan odaklanmamı sağlıyor. fakat bunun kişiden kişiye değiştiğine eminim. bir arkadaşım trapstep müzik dinleyerek bile çalışabiliyor. sizi ne rahatlatıyorsa onu dinleyin.

    bir sonraki yazımda dünyadaki yazılım mühendisliği üzerine yazmaya çalışacağım. paradigmalar, üniversite odaklı bir yazı olacak.