Bir “Çocuk Oyunları” Nasıl Yazılım Geliştirme Yaklaşımı Değiştirdi Minecraft'ın 2009'da piyasaya sürüldüğünü hatırlıyorum. yeni bir New Media derecesi ile mezun oldum, oyun geliştiricilerinin hayallerini takip ettim. Tüm hayatım önümdeydi ve inanılmaz derecede heyecan vericiydi. Elimde bu yeni derecede Seattle'a atladım, iyi bir iş buldum ve gece ve hafta sonları ev işleri baskısı olmadan yeni keşfedilen özgürlüğün tadını çıkarıyordum. Steam'in Kaynak Motoru'nu kullandım ve Endorphin ve Euphoria gibi araçlar ve çerçeveler hakkında bulabileceğim her makaleyi okudum ve mevcut tüm büyük oyun bültenlerine abone oldum. Gerçek bir dünyayı inşa etmek için tüm bu araçlara ne zaman sahip olacaksınız?” ve tamamen reddetti. Virtual Legos Hakkında 16 yıl sonra: birkaç iş değişikliği, ülke çapında taşınmalar, evler satın alındı ve satıldı, güzel bir karı ve iki harika çocuk; hayat karışıktı, ama iyiydi. Sonra bir gün oğlum okuldan eve geldi ve hakkında konuşmaya başladı... sen tahmin ettin. Minecraft. Çocuklarımın içine düşen hobilerle ilgilenmek için her zaman çaba gösteriyorum. Çocuklar mevsim değişikliğinden daha hızlı ilgi değiştiriyorlar, ancak heyecanlanıyorlar ve yeni hobi hakkında konuşmaya başlarlarlarsa, ben de ilgilenmesini görmelerini istiyorum. Bu yüzden, Minecraft hakkında birkaç hafta dinledikten ve bu hala bir “şey” olduğumdan kurtulduktan sonra, oyunu ücretsiz olarak denemeye karar verdim. Xbox Game Pass'ta kaldığım birkaç hafta ile oyunu denedim, sonra oynamaya devam edebilmemiz için satın aldım. Web sitelerinden Bedrock sunucu barındırma dosyalarını indirdim ve birlikte oynamak için sunucumuzu kurdum. Herkes uyuduktan sonra ofisime gittim ve tabanımız hakkında geliştirmek istediğim çeşitli şeylerin bir listesini yapmaya başladım (geceleri binanın çoğunu yapmayı seviyorum, böylece çocuklar oturum açtığında birlikte maceraya girebiliriz). oyun bilgisayarım ofisimde, uzaktan çalışıyorum, böylece iş klavyemi ve trackpad'imi yola çıkarken, bilgisayarım açıldı, saatimi açmak için kullandı ve monitörü ele geçirdi. Kısacası, aktif olarak çalıştığım proje ekranda parladı ve önümdeki sorun, o günün erken saatlerinde hafızamda harekete geçtiği gibi bir anda oyun oynama isteğimden uzaklaştım. Çoğu mühendis gibi, günün sonunda tamamlanmamış bir iş bırakmak için çaba gösteriyorum. Ama bir sonraki sabah için kendim için hazırladığım kod ve görevler listesine baktığımda (günün sonunda beni bırakmaya yardımcı olmak için yıllar boyunca geliştirdiğim bir alışkanlık), bir şey fark ettim. Akşamın Minecraft inşaat ihtiyaçlarım için telefonuma yazdığım benzer bir listeye bakarak, o tanıdık şemayı gördüm. Minecraft, sadece mühendislikle kapalı bir cennet haline getirilmiştir. Minecraft, sadece mühendislikle kapalı bir cennet haline getirilmiştir. First Impressions Can Lie İlk izlenimler yalan söyleyebilir Hepimiz “yalnızca bir ilk izlenim elde edersiniz” sözcüğünü duymuşuzdur ve bununla sık sık hatalar bulmuşumdur.Dedikodu, ilk izlenimin sadece bir kez olabileceğinin basit nedeni için yeterince doğru olduğunu biliyorum. Birçok senaryoda bu doğru olabilirken, bir kişinin, biriyle ilgili görüşlerini açıklamak ve renklemek için ikinci bir izlenim yapmasına asla izin vermeyecek kadar dayanıklı olduğu, hayatınızda sahip olmak istemediğiniz bir kişidir. ilk izlenimler önemlidir, ancak bunlar sadece büyük bir şey planında geçici bir düşünce olmalıdır. Kariyerimin başında, ilk bakışta aşırı derecede görünen bir projeye teslim oldum. görev, çoklu para birimlerinde finansal verileri işlemeyi içeriyordu, hesaplamaların katmanları korkutucu ve aşırı karmaşık hissediyordu. gereksinimlere baktığımda ve bunun basit olabileceğini düşündüğümü hatırlıyorum. Ama bir kez kazandığımda, ağır kaldırmanın çoğunun veri alım aşamasında gerçekleştiğini fark ettim. Doğru sistemler yerleştirildikten sonra matematik kendisi basit hale geldi. Değişken verileri alıp düzenlemek için araçlar oluşturarak, nihai çözüm her şeyi bir araya getiren temiz bir hesap makineden biraz daha fazlasıydı. İlk başta imkansız göründüğü şey, üzerinde çalıştığım en basit, en zarif mühendislik çözümlerinden biri oldu. Şimdi, bu oyunu çocuk oyunları olarak reddettiğim bütün o yılları hatırlatıyor, ancak yıllar sonra, bu harika bir sanat parçası ve büyük bir eğlence olduğunu keşfettim. şimdi, bir dünyayı inşa etmek için yüzlerce saat harcadım ve harika bir hatırlatmadır: her zaman ilk izleniminize güvenemezsiniz. İşyerindeki projeler sıklıkla bu şekilde başlar: aşırı derecede gürültülü, belirsiz.Ama bir kez temelleri koyduğunuzda, tıpkı bir çamur sığınakında fenerler ve malzemeler koymak gibi, imkansız bir şeyin yönetilebilir, hatta güvenli bir şey haline dönüşür. Building Incrementally Minecraft'ı oynayan herkes, oyunun ilk birkaç anının hepimiz için aynı olduğunu bilir. You have to punch a tree. Bunun saçma olduğunu biliyorum, bu yüzden bu çizgiyi tek başıma koydum. Bir ağaç vurmak zorundasınız. Bir ağaç vurmak zorundasınız. Minecraft'ta, ilk kez oyunu başlattığınızda, çıplak ellerinizle toplayabileceğiniz çok sınırlı kaynaklar var: kum, kir ve ahşap bazı açık örneklerdir ve ahşap birçok şey için hayati önem taşımaktadır. Bir ağaç vurmak zorundasınız. You have to punch a tree. Bu ağaçtan bir kaç parça ağaç düşene kadar mümkün olduğunca uzun süre vurursun. Sonra bir kaç daha! Sonra bir kaç daha! Sonra bu ağaçla işleme bölümüne geçiyorsun ve tahtalar yapıyorsun. Sonra o tahtaları alırsın ve bir işleme masası yaparsın. Ender Dragon'u yenene kadar bu döngüyü daha karmaşık bir şekilde devam edersin, Elytra'yı topladın ve oyunu (en azından hikayeyi) tamamladın. Benzer şekilde, zombiler, skeletonlar, örümcekler ve cadıların gecelik bir ordusundan bir sığınak inşa etmek, bir kerede bir blok yerleştirmenizi gerektirir. tabii ki, bazı modlar geçmişte (yaklaşık) iki on yılda ortaya çıktı, ancak vanilya'da, bir kerede bir blok. İlginçtir ki, bu aynı süreç genellikle yazılım oluşturmanın en iyi yoludur. Başka bir projede, kesinlikle imkânsız bir süre verildi.Araştırdığımda, çalışma gerçekçi olarak iki ay sürerdi, ancak ekibin sadece iki hafta içinde bir şeyler yapması gerekiyordu.Ayrıca kendimi gerçekçi olmayan bir zaman çizgisini takip etmek yerine, meydan okumayı yeniden ifade ettim. Projeyi, her biri bir ya da iki günde teslim edilebilecek daha küçük, bağımsız işlevsel “küçük” parçalara ayırdım. Daha sonra ekibin, bağımlılıkları ve anlaşmazlıkları açıkça belirterek, istediği özellikleri seçmesine izin verdim. Bu, hemen ellerinde çalışan yazılımı ve geri kalanı için şeffaf bir yol haritası sağladı. “her şey ya da hiçbir şey” tesliminden artan ilerlemeye geçerek, imkânsız bir süreyi bir dizi elde edilebilir zafer haline getirdim. Minecraft'ta kimsenin elmas zırhı, sihirli araçlar veya geniş bir kale ile başlaması yoktur.Bir ağaç vurarak başlarsınız.Sonra tahtalar yaparsınız.Sonra çubuklar.Sonra araçlar.Block by block, you build your shelter, your base, your world. Yazılım farklı değildir. Mükemmel, tıraşlı ürünü ilk günde teslim edemezsiniz. Ama her şeyi parçalamak için disiplinliyseniz: bir özellik, bir fonksiyon, bir “blok” bir anda. Canavarları hayatta kalabilirsiniz, gerçek bir şey sunabilir ve sonunda olağanüstü bir şey inşa edebilirsiniz. Tek yapmanız gereken ilk ağaç dikmek. You just have to punch that first tree. Collaboration Without Demolition Yukarıda bahsettiğim gibi, herkesin uyuduğu gecelerde inşa etmeyi seviyorum. Çocuklar hafta sonları oturum açmayı ve önceki gece ne yaptığımı görmeyi ve daha sonra dünyaya eklemelerini tamamlamayı seviyorlar. küçük çocuğum, kasabamızın kenarlarındaki yoğun, çirkin, korkunç bir orman dikti. Tabii ki, bu alanlar için planlarım vardı, bu yüzden ayarlamalıyım. Geceleri oturum açamıyorum ve inşa ettikleri şeyleri yok edemiyorum. , bu yüzden onlarla çalışmanın yollarını bulmak zorundayım. ormanı hafifçe azaltabilirim, daha sonra en kötü canavarları uzak tutmak için bazı işaretler ve ışıklar ekleyebilirim. limanın etrafında dokları ve bir kırmızı taş köprüsü ekleyeceğim, böylece sadece küçük dingiyelerimizden daha fazlası için hazır görünüyor. Canavarı Biz mühendisler her gün aynı prensip üzerinde çalışıyoruz.Çoğumuz tek bir ürün üzerinde birlikte çalışıyoruz, bu da birbirimizin koduyla sürekli etkileşimde olduğumuz anlamına gelir.Takım arkadaşlarımızın çalışmalarına saygıyla davranmalıyız, böylece herkes dahil hissedebilir, özel izlerini bırakabilir ve birlikte büyüyebilir. Bir zamanlar her geliştiricinin farklı bir iş birimini desteklediği bir ortamda çalışıyordum. Genellikle benzer sorunları çözdük, ancak projeler arasındaki kodları kopyalamak yerine, karmaşık düzenlemelere ve kırılgan çözümlere yol açtıktan sonra, daha iyi bir yaklaşım kullandık. Herhangi birisi yararlı bir şey inşa ettiğinde, diğerleri de entegre edebilecek küçük bir hizmet haline getirdik. Bir geliştiricinin ihtiyacım olan bir özelliğe sahip olsaydı, onu kopyalamazdım; her ikimiz için de çalışabilecek bir hizmet oluştururdum. Bu şekilde, her birimiz birbirimizin koduna adım atmadan temiz, sürdürülebilir bir çözüm bulduk. Zamanla, bu zihniyet, yıkım olmadan işbirliği kültürünü oluşturdu: zaten çalıştığı şeyleri kırmadan çözümleri paylaşmak. Minecraft'ta, çocuklarımın inşaatlarını buldoz edebilir ve “maestro planımı” dünyaya zorlayabilirim, ancak onlar için çok eğlenceli olmayacak ve artık bizim dünyamız olmayacak. Yazılım aynı şekilde çalışır. Başkalarının yazdıklarını parçalayabilir veya onunla çalışabilir, geliştirebilir ve daha güçlü bir şey haline getirebilirsiniz.Bu şekilde takımlar büyür, kod tabanları sağlıklı kalır ve herkesin katkıları bir iz bırakır. Günün sonunda, bir liman, korkunç bir orman ya da paylaşılan bir kod tabanı olsun, hedef inşa etmek değildir. Dünya; inşa etmek için Dünya Benim Bizim Keep Building Bir video oyunu mühendislik için bir rehber olarak adlandırmak bir uzantı gibi gelebilir. Ama öyle değil. Hem Minecraft hem de mühendislikte, aynı şekilde ilerlemeye devam ediyoruz: bir kerede bir adım atarak kaosu anlamlı bir şeye dönüştürerek. Chaos bize gümüş bir Jira plaka üzerinde sunuluyor ve en azından bazı kullanıcılar için dünyayı değiştirebilecek bir şeye düzenlemeniz isteniyor. Chaos bize gümüş bir Jira plaka üzerinde sunuluyor ve en azından bazı kullanıcılar için dünyayı değiştirebilecek bir şeye düzenlemeniz isteniyor. Korkunç görünebilir, ancak hayatınızda ve hobilerinizde zaten bunu her gün yapıyorsunuz; sadece yazılım geliştirme için aynı zihniyeti getirmelisiniz. AI ile yaptığım deneylerim Minecraft'ta başlamak gibiydi.Bir dahaki sefere, AI dünyasında ağaçlara vurmanın nasıl bir şey olduğunu paylaşacağım. (Orijinal olarak Substack üzerinde yayınlandı: ) https://halexmorph.substack.com/p/the-incremental-mindset