Coke & Code: Bir İşe Başlamak, Devam Ettirmek, ve Bitirmek

Uzun zaman boyunca gerçekten de muzdarip olduğum, üzerime yapışan, ve artık belli bir noktadan sonra “adımız çıkmış dokuza, inmez sekize” haline dönen bir konudur bu.
Hani daha genç olduğumuz yıllarda saatlerce ders çalışıp, 5 dakika ara verdiğiniz anda ebeveyniniz odaya girip “Ben de seni ders çalışıyor sanıyordum, tembellik ediyormuşsun (ve diğer bilimum ithamlar)” dediği ve isyan ettiğimiz durumlar vardı ya, aynı öyle işte.

Ama bu konuda yine oyun geliştirici bir arkadaşım olan Joe geçenlerde şöyle bir söz söyledi. “İnsanlar eleştirmeyi, suçu başkalarına atmayı sever. Böyle durumlarda, ‘ben şunu şunu yaptım, sen ne yaptın?’ diyerek susturabilirsin.” dedi. Bir açıdan aklıma yattı. Hiçbir şey yapmadığınızı söyleyen, ya da yaptığınız işe çamur atan insanların genellikle gerçekten de bir şey yapmayan insanlar olduğunu farkedeceksiniz. Siz bir şey yapıyor ve/veya yapmış olacaksınız, ve onlar halen hiçbir şey yapmamış olacak. Eğer bu ithamlardan ve çamurlardan sıkılırsanız, tek yapmanız gereken “Sen ne yaptın?” sorusunu sormak yeterlidir. Tabi bunun daha vahim durumları her işi sizin yapmanızı bekleyip hiçbir şey yapmadığı halde sizi bir şey yapmamakla suçlayan insanlar olacaktır ki, o konuda nasıl başa çıkılacağı ile ilgili bir fikrim yok. Olan varsa söylesin lütfen.

Code & Coke, birçok programcının ilk adımlarını attığı zamanlarda kurtarıcı olan site gruplarından biridir. Zamanında benim de çok işime yaradı, o yüzden aynı başlıklı yazısını doğrudan Türkçe’ye çevirip “şikâyet etmek dışında hiçbir şey yapmayan” insanlardan olmak yerine bir işe başlayan, onu devam ettiren ve bitiren insanlardan olmanız buraya koyuyorum.


Oyunlarımın çoğu mükemmel değil. Çoğu devrim niteliğinde yenilikler getirmiyor. Çoğu pek ilgi görmüyor. Ama oyunlarımın bir özelliği var: yapılıyor ve bitiriliyorlar. Arada bir Twitter üzerinden nasıl hızlıca bir ürün çıkarılabileceğine dair sorular alıyorum ve bu da benim egomu okşuyor. O yüzden buraya bana işleri halletmem konusunda yardımcı olan birkaç maddeyi sıralayacağım:

İşe Başlamak

1) Odaklanmak: Sürekli fikir değiştirip durmayın. Başladığınızda seçtiğiniz dil, araçlar, programlar ve motorlar pek de önemli değildir. Hemen hemen hepsi temelde aynı şeyi öğretir ve hepsinin de dahil olabileceğiniz forum, irc gibi toplulukları vardır. GameMaker, Unity, Java, XNA, Flixel… seçin birini. Pek önemli değil; ama seçiminize bağlı kalın. Takıldığınız zaman hemen değişiklik yapmaya kalkışmayın. Olacak tek şey, vaktinizi harcayıp tekrar o noktaya geldiğinizde yeniden takılmak olacaktır.

2) Israr: Bir yerlerde takılacaksınız. Sinirleriniz bozulacak, zamanınızı boşa harcıyormuşsunuz gibi gelecek, çözümü imkânsızmış gibi görünecek. Biraz zaman tanıdığınızda problemi çözeceksiniz. Sırf iş çok zor ve çözdüğünüzde bilgisayarı kaldırıp duvara fırlatmak isteyeceksiniz diye hemen vazgeçmeyin. Bir ara verin, kafanızı uzaklaştırın, sonra geri gelip işi halledin. Bu iş herhangi bir ürün geliştirmenin doğasında vardır, her zaman da olacaktır.

3) Küçük Başlayın: Ve çalışın. Eğer ilk yapmaya başladığınız oyun 3 boyutlu multiplayer fizik etkileşimli ve dağıtılmış yapay zekâ kapsamlı bir oyun olacaksa, muhtemelen -kısa sürede- başarısız olacaksınız. Aptal derecede küçük olmasına da gerek yok, ama bir defada bir adım. Basit 2 boyutlu eğlenceli oyunlar başlamak için muhteşemdir. (Bakmayın, ben de öyle başladım, White Night’tan önce bir sürü 2 boyutlu oyun yaptım)

4) Yardım İsteyin: Yardım isteyeceksiniz; ama bunu yaparken dikkatli olmanız gerekiyor. Endüstri içindeki yıllanmış, olgun geliştiricilerin birçoğu yardımcı olmak için can atar (Tecrübeyle sabit). Ama nazik olmanız gerekiyor. Dinlemeniz ve vakit ayırıp cevapları anlamaya çalışmanız lazım. En önemlisi ise, cevap beklemeyin. Herkes meşgul. Herkesin zamanı kısıtlı. Eğer bir cevap alırsanız, ne mutlu; eğer alamazsanız, ikinci adıma geri dönün. Kendiniz çözmeye çalışın ve süreci soruya ekleyin. İnsanlar, kendine yardımcı olmaya çalışan birine yardımcı olma konusunda daha isteklidirler. İnsanlar sırf sizin problemlerinizi çözmek için vakit ayırmıyorlar diye öfkelenmeye ve bağırıp çağırmaya başlamayın.

5) Gururlu Olun: Diğer insanlara bitirdiğiniz işleri gösterin. Başardığınız her şeyden gurur duyun. Size göre pek bir şey ifade etmeyebilir; ama diğerlerine ilginç gelebilir. Yaptıklarınızı Twitter, Facebook vs yerlerde paylaşın. Forumlara gönderin ve ekran görüntüleri paylaşın. Bir işi başardığınız her defasında kendinizle gurur duymalısınız. Bir oyunu çalıştırdığınız her defasında insanlara oynatın, geri bildirim alın. Bu geri bildirim ve eleştiri işinizi yaparken size yardımcı olacak en büyük etkendir.

İşe Devam Etmek ve Bitirmek

1) Takıntılı Olmayın: Kod sizin kodunuz ve onu sevdiğinizi biliyorum; ama kodunuzun ne kadar güzel şekillendiği veya mimarisinin ne kadar harika olduğu oyuncuya hiçbir şey ifade etmez, hele ki oyun oynanacak durumda değilse hiç mi hiç etmez. Kodunuz hakkında takıntılı hale gelmeyin. Çalışır hale getirin. Hızlı hale getirin. Güzel hale getirin. Bu sırayı uygulayın. Eğer pek vaktiniz yoksa sadece ilk adımı uygulayın ve ikinci ve üçüncü adımları ancak gerekli olduğunda uygulayın. Bir oyunu çalışır hale getirmeye ne kadar hızlı gelirseniz, o kadar çabuk geri bildirim almaya başlar ve o kadar çabuk motivasyonunuzu tazelersiniz.

2) Çalışan 1 şey, yarım yamalak çalışan 100 şeyden iyidir: Hemen bir şeyi çalışır hale getirmeye çalışın. Bir karakterin sağa sola yürümesi kadar basit bir şey olsa bile, bunu yapın. Bir şeyleri ne kadar çabuk görürseniz, oyunun nasıl hissettireceğini ve nelere ihtiyacı olduğunu o kadar çabuk görebilirsiniz. Eğer oyunu birçok açıdan aynı anda geliştirmeye çalışırsanız, motivasyon eksikliği bir yana, kafanız da çok çabuk karışacak. Her şeyin sonunda birbirine uyumlu olup olmayacağını bilmek bambaşka bir konu.

3) Her Yiğidin Yoğurt Yiyişi Farklıdır: Yazılımsal bir probleme yaklaşmanın birden fazla yolu vardır. Genellikle bir grup ‘doğru yol’ internette yer alır ve bu yolların nasıl takip edileceği konusunda birçok rehber ve video yanında beraber gelir. İlle de ‘doğru yol’dan çözmek zorunda değilsiniz. Mesela oyununuzda çarpışma denetimi için bir kod yazmaya başladınız ve araştırmalarınıza göre pek doğru görünmüyor. Hemen ‘doğru’ şekilde yapmaya çalışmayın. Bir bakın, biraz ilerletin, nereye gideceğini görün. Bir bakmışsınız, aslında oyununuzda sadece tek tür çarpışma ve geri bildirim sistemi gerekiyor ve yazdığınız kod bunu basit bir şekilde ve hızlıca yapıyor. ‘Yanlış yol’ işinize daha çok yaradı. Belki ileride gerçekten ‘doğru’ olan ile değiştirmeniz gerekecek, ama en azından o noktaya gelene kadar ilerlemeye devam edebileceksiniz demektir.

4) Kütüphaneler ve Eklentiler: Karşılaşacağınız hemen her problem için bu işi siizn yerinizde yapabilecek bir kütüphane veya eklenti vardır. Dikkatli olun! Sistemin bağımlılığı ve eklentilerin içindeki muhtemel hatalar başınızı ağrıtabilir. Eğer bir kütüphaneyi kullanmaya ihtiyacınız yoksa, kullanmayın. Eğer size zaman kazandıracağına emin değilseniz, kullanmayın. Tabi bu asla bir kütüphane, eklenti veya dışarıdan kod kullanmayın demek değildir. Sadece kullanacağınız zamanı iyi bilin.

5) Planınız Olsun: Basit ve değiştirilebilir bir tane. Elimde içinde bazı yapmam gereken şeyler olan küçük bir TXT dosyası tutuyorum. Hatta bazen içine Hatalar, Oyun, Mimari gibi kategoriler de eklerim. Yapmanız gereken her şeyin bir listesini tutun ve işleri tamamladıkça üstlerini çizin. Güzel bir alıştırma olmasının yanı sıra aynı zamanda sizi odaklanmış tutar. Ama suyunu çıkarmayın, devasa bir hata takip sistemine ihtiyacınız yok, ve hemen bazı şeyleri değiştirebilmeniz gerekir. Kod yazarken aklınıza bir şey geldi, bunu planın içinde bir yere hemen sokuşturup işinize devam edebilmeniz gerekir.

6) Müdahil Olun: Arkadaşlarınızla konuşmak, süreci ve yaptıklarınızı göstermek, geri bildirim almak motivasyonunuzu yüksek tutmanın ve sürecü devam ettirmenin anahtarıdır. Yeni geliştiricilere yardımcı olmak, bir şeyleri nasıl yapabildiğinizi anlatmak, ve sizin gibi geliştiricilerden oluşan bir network kurmak oldukça ödüllendirici olabilir. Kimlerle tanışıp iş yapabileceğinizi asla bilemezsiniz.


Bu sistematiği hemen her şeyde uygulayabilirsiniz. Bir sonraki yazı, arkadaşın isteği üzerine bir çeviri değil orjinal bir yazı olacak: Fikir Adamı Olmak.


1 Responses

Bir yorum yazın


  • Osman Ülke on

    Elinize sağlık. Açık yüreklilikle kaleme aldığınız yazılarınız çok hoşuma gidiyor.


Leave a Reply