Yazılım Geliştirme Yaşam Döngüsü (SDLC): Agile, DevOps ve Diğer Yaklaşımlar
Yazılım geliştirme, günümüzde teknolojik dönüşümün temel taşıdır. Projelerin başarıyla tamamlanabilmesi için doğru geliştirme metodolojisinin seçilmesi büyük önem taşır. Bu makalede, yazılım geliştirme süreçlerinin temel yaklaşımlarından olan Agile ve diğer popüler metodolojileri inceleyeceğiz.
SDLC, yazılım geliştirme yaşam döngüsünün (Software Development Life Cycle) kısaltmasıdır. Türkçe olarak bu terimin karşılığı “Yazılım Geliştirme Süreci” veya “Yazılım Geliştirme Yaşam Döngüsü” olabilir. Bu terim, yazılım projelerinin planlama, tasarım, geliştirme, test etme, dağıtma ve sürdürme gibi aşamalarının tümünü kapsayan yapılandırılmış bir yaklaşımı ifade eder. Bu sürecin doğru bir şekilde yönetilmesi, projenin başarılı bir şekilde tamamlanmasını sağlar.
Agile Metodolojisi
Agile, esnek ve sürekli geliştirme anlayışını temsil eder. Bu metodolojide, ekip üyeleri düzenli aralıklarla bir araya gelerek belirli bir zaman dilimindeki hedefleri belirlerler. Bu zaman dilimine “iterasyon” veya “sprint” denir ve genellikle 2-4 hafta sürer. Agile geliştirme süreci şu adımlardan oluşur:
- Planlama: Ekip, bir iterasyon boyunca tamamlanması gereken görevleri belirler. Bu görevler önceliklendirilir ve tahmini sürelerle değerlendirilir.
- Geliştirme: Ekip, belirlenen görevlere odaklanarak çalışmalarını sürdürür. İterasyon sonunda, bir ürün demosu yapılır.
- İnceleme ve Değerlendirme: Demo sonrası, ekip üyeleri ve paydaşlar, gerçekleşen ilerlemeyi değerlendirirler. Feedback alınır ve gerekirse değişiklikler yapılır.
- Geri Bildirim ve İterasyon: Alınan feedback doğrultusunda, bir sonraki iterasyonun planlaması yapılır. Bu süreç tekrarlanarak geliştirme devam eder.
Diğer Popüler Metodolojiler
Waterfall (Şelale) Metodolojisi
Waterfall, geleneksel ve sıralı bir yaklaşımdır. Projeler belirli aşamalardan geçer: gereksinimler belirlenir, tasarım yapılır, geliştirme gerçekleştirilir, test edilir ve sonunda dağıtılır. Bu metodoloji genellikle küçük projelerde etkilidir.
Scrum
Scrum, Agile’in bir türüdür ve ekiplerin sürekli iletişim halinde olmasını vurgular. İterasyonlar belirli sürelerle tekrarlanır. Scrum, belirli roller (Product Owner, Scrum Master, Development Team) ve toplantılar (Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective) içerir.
Kanban
Kanban, görsel bir panoda görev kartları kullanarak iş akışını görselleştiren bir metodolojidir. Bu kartlar, işin akışını gösterir: planlama, geliştirme, test etme, vb. Kanban, işin akışını optimize etmek için kullanılır. Agile ve scrum metodları içinde de Kanban yöntemi ile iş takibi yapılabilir. Kanban, iş akışını daha görünür ve yönetilebilir hale getirerek takımların daha etkili çalışmasına olanak tanır. Bu özellikleri sayesinde, Agile metodolojilerin bir parçası olarak çok tercih edilmektedir.
Agile ve DevOps İlişkisi
DevOps, yazılım geliştirme ve işletme süreçlerini entegre eden bir kültür ve pratiktir. Agile, geliştirme aşamasına odaklanırken, DevOps, yazılımın hızlı bir şekilde teslim edilmesini ve işletilmesini sağlar. Agile ile DevOps, sürekli entegrasyon ve teslimatı (CI/CD) vurgular.
DevOps, Agile metodolojilerle birlikte çalışarak yazılım geliştirme ve dağıtım süreçlerini daha etkili hale getiren bir kültür ve uygulamadır. İşte DevOps’un Agile ile birleşmesinin önemli nedenleri:
- Sürekli Entegrasyon ve Dağıtım (CI/CD):
- DevOps, sürekli entegrasyon (CI) ve sürekli dağıtım (CD) prensiplerini vurgular. Bu, yazılımın sürekli olarak test edilip, otomatik olarak dağıtılmasını sağlar. Agile projelerin hızlı ve sık teslimat yapmasına yardımcı olur.
- Hızlı Geri Bildirim:
- DevOps, yazılımın hızlı bir şekilde kullanılabilir hale getirilmesini ve işletilmesini sağlar. Bu, geri bildirimin daha hızlı alınmasını ve hataların daha hızlı düzeltilmesini mümkün kılar.
- İşbirliği ve İletişim:
- DevOps, geliştirme ve işletme ekipleri arasındaki işbirliğini artırır. Bu, Agile ekiplerin daha iyi bir şekilde iletişim kurmasını ve birlikte çalışmasını sağlar.
- Hızlı Hata Düzeltme:
- DevOps, hataların hızlı bir şekilde tespit edilip düzeltilmesine olanak tanır. Bu, kullanıcı geri bildirimlerine daha hızlı bir şekilde yanıt verilmesini sağlar.
- Otomasyon ve Verimlilik:
- DevOps, tekrarlayan işleri otomasyon ile gerçekleştirerek verimliliği artırır. Bu, ekiplerin daha fazla zamanlarını inovasyona ve değer yaratıcı işlere odaklamalarını sağlar.
- İzleme ve Performans Değerlendirmesi:
- DevOps, yazılımın performansını sürekli olarak izler ve değerlendirir. Bu, Agile ekiplerin performans sorunlarını hızla tespit edip çözmelerini sağlar.
- Daha İyi Güvenlik:
- DevOps, güvenlik uygulamalarını süreçlerin bir parçası haline getirir. Bu, Agile projelerin daha güvenli yazılım geliştirmelerini teşvik eder.
- Kültürel Uyum:
- DevOps, bir kültür ve çalışma şekli olarak kabul edilir. Bu kültür, hızlı değişimlere uyum sağlamayı, işbirliğini ve sürekli iyileştirmeyi teşvik eder.
Sonuç olarak, DevOps ve Agile bir araya geldiğinde, yazılım geliştirme süreçleri daha hızlı, güvenilir ve verimli hale gelir. Bu, ekiplerin müşteri ihtiyaçlarına hızla yanıt vermesini ve rekabetçi kalmasını sağlar.
Agile neden daha çok tercih ediliyor?
Agile, yazılım geliştirme süreçlerinde tercih edilen bir metodoloji olmasının birkaç önemli nedeni bulunmaktadır:
- Esneklik ve Uyum Kabiliyeti: Agile, değişen gereksinimlere hızlı yanıt verebilme kabiliyeti sunar. Proje süresince ortaya çıkan yeni bilgiler veya müşteri geri bildirimleri doğrultusunda, geliştirme ekibi kolayca adapte olabilir.
- Müşteri Memnuniyeti: Agile, müşteri merkezli bir yaklaşım benimser. Her iterasyon sonunda çalışan bir ürün veya prototip sunulduğu için, müşteriler gerçek ilerlemeyi görebilirler. Bu, müşteri memnuniyetini artırır.
- Sürekli İyileştirme ve Feedback: Agile süreçler, düzenli geri bildirim döngüleriyle çalışır. Her iterasyon sonunda müşteri veya paydaşlardan gelen geri bildirimler, ürünün geliştirilmesi için değerli bilgiler sağlar.
- Risk Azaltma: Agile, projenin küçük, yönetilebilir parçalara bölünmesini teşvik eder. Bu, risklerin erken aşamalarda tespit edilip düzeltilmesine olanak tanır.
- Hızlı Teslimat: Agile, kısa iterasyonlarla çalışır ve her birinde bir işlevsel ürün parçası sunar. Bu, işlevselliğin hızla teslim edilmesini sağlar.
- Motivasyon ve Takım Katılımı: Agile, ekiplerin kendi işlerini planlamasına, sorumluluk almasına ve sonuçları görmesine olanak tanır. Bu, takım motivasyonunu artırır.
- Uyum ve İşbirliği: Agile, ekip üyeleri ve paydaşlar arasında düzenli iletişimi teşvik eder. Bu, proje paydaşları arasında daha iyi bir anlayış ve işbirliği sağlar.
- İteratif Geliştirme: Agile, bir ürünün birkaç küçük adımda geliştirilmesini önerir. Her adımda gelen geri bildirimlerle ürün sürekli olarak iyileştirilir.
Bu nedenlerle, özellikle hızla değişen, belirsiz veya müşteri ihtiyaçlarına duyarlı projelerde Agile tercih edilmektedir. Agile, esneklik, müşteri memnuniyeti ve sürekli gelişme gibi temel prensiplere dayanarak yazılım geliştirme süreçlerini daha etkili ve verimli hale getirir.
Agile yöntemde takımlar nasıl olur?
Agile geliştirme metodolojisi, çeşitli roller ve takım yapıları içerir. Bu yapılar, projenin özelliklerine, büyüklüğüne ve gereksinimlerine göre değişebilir. İşte Agile’da sıkça kullanılan takım yapıları ve roller:
- Geliştirme Takımı (Development Team):
- Geliştirme takımı, gerçek yazılım geliştiren ekip üyelerini ifade eder. Yazılım geliştirmek, test etmek ve ürünün kod tabanını oluşturmak gibi görevleri üstlenirler.
- Geliştirme takımı, genellikle 5 ila 9 üye arasında değişebilir ve işlevsel olarak çeşitli olmalıdır (örneğin, yazılım geliştirme, test, tasarım, vb.).
- Ürün Sahibi (Product Owner):
- Ürün sahibi, müşteri veya paydaşların ihtiyaçlarını temsil eden kişidir. Proje gereksinimlerini belirler, önceliklendirir ve geliştirme takımına ileterek ürünün yönlendirmesini sağlar.
- Ürün sahibi, sürekli olarak işlevsel gereksinimleri güncelleyebilir ve geliştirme takımının sorularını yanıtlar.
- Scrum Master:
- Scrum metodolojisini kullanıyorsanız, Scrum Master rolü devreye girer. Diğer Agile yaklaşımlarda, bu rolün bazı görevleri ürün sahibi veya geliştirme takımı üyeleri tarafından da yürütülebilir.
- Scrum Master, Agile prensiplerin ve uygulamaların takip edilmesini sağlar. Engelleri kaldırır, takımın verimliliğini artırır ve Scrum toplantılarını yönetir.
- Paydaşlar (Stakeholders):
- Paydaşlar, ürün veya projenin başarısını etkileyebilecek herkesi ifade eder. Bu kişiler, ürün sahibi ile işbirliği yaparlar, gereksinimleri belirlerler ve sonuçları değerlendirirler.
Takım yapısı, projenin karmaşıklığına ve büyüklüğüne bağlı olarak değişebilir. Büyük projelerde, birden fazla geliştirme takımı olabilir ve bu takımların koordinasyonunu sağlamak için büyük ölçüde ürün sahibi ve Scrum Master’ın işbirliği yapması gerekebilir. Ayrıca, çok büyük projelerde birden fazla ürün sahibi ve Scrum Master da bulunabilir.
Agile, esnek bir yaklaşım olduğu için, takım yapıları ve roller projeye özgü olarak uyarlanabilir. Önemli olan, tüm takım üyelerinin işbirliği yaparak müşteri ihtiyaçlarına hızlı ve etkili bir şekilde yanıt verebilmesidir.
Agile yöntemde hangi yazılım araçları tercih edilir?
Agile metodolojilerle çalışan ekipler, iş akışını, görevleri, geri bildirimleri ve diğer süreçleri yönetmek için çeşitli yazılım araçları kullanırlar. İşte Agile projelerde yaygın olarak kullanılan bazı popüler yazılım araçları:
- Jira:
- Jira, Atlassian tarafından geliştirilen ve Agile projelerin yönetimini sağlayan popüler bir proje yönetim aracıdır. Scrum, Kanban, ve diğer Agile metodolojileri destekler. Görev izleme, sprint planlaması, geri bildirim toplama gibi birçok özelliği bulunur.
- Trello:
- Trello, bir diğer Atlassian ürünüdür. Kart tabanlı bir iş akışı sağlar ve kolayca özelleştirilebilir. Bu, ekiplerin işleri yönetmeleri, işbirliği yapmaları ve projeleri organize etmeleri için kullanılır.
- Asana:
- Asana, takım üyelerinin işlerini planlamasına, takip etmesine ve işbirliği yapmasına olanak tanır. Proje ve görev yönetimi için kullanılır ve Agile metodolojilere uygundur.
- Monday.com:
- Monday.com, iş süreçlerini planlama, izleme ve optimize etme konusunda yardımcı olur. Görsel iş akışları ve panolar ile ekiplerin işlerini organize etmelerini sağlar.
- VersionOne:
- VersionOne, Agile projeleri yönetmek için özel olarak tasarlanmış bir platformdur. Scrum ve Kanban metodolojilerini destekler ve tüm süreci izleme ve yönetme imkanı sunar.
- Targetprocess:
- Targetprocess, geniş bir yelpazede projeleri ve süreçleri yönetmek için kullanılır. Scrum, Kanban, SAFe ve diğer Agile metodolojilerini destekler.
- ZenHub:
- ZenHub, GitHub üzerinde entegre bir proje yönetim aracıdır. Scrum ve Kanban tabanlı iş akışlarıyla GitHub projelerini yönetmeyi sağlar.
- Pivotal Tracker:
- Pivotal Tracker, Scrum tabanlı bir proje yönetim aracıdır. Hızlı ve kolay bir şekilde işlerinizi izlemenizi ve sürdürmenizi sağlar.
Bu araçlar, ekiplerin işbirliği yapmalarını, işleri planlamalarını, görevleri takip etmelerini ve projeleri yönetmelerini sağlamak için kullanılır. Her aracın kendi avantajları ve özellikleri vardır, bu nedenle bir ekip, ihtiyaçlarına en uygun olanı seçer.
DevOps da hangi yazılım araçları tercih edilir?
DevOps süreçlerini desteklemek ve otomasyonu sağlamak için bir dizi araç bulunmaktadır. İşte DevOps süreçlerinde en çok tercih edilen araçlardan bazıları:
- Jenkins:
- Jenkins, sürekli entegrasyon ve sürekli dağıtım (CI/CD) işlemlerini otomatikleştirmek için kullanılan açık kaynaklı bir araçtır. Jenkins, farklı platformlarda, dillerde ve teknolojilerde çalışabilen geniş bir eklenti ekosistemine sahiptir.
- Docker:
- Docker, konteyner teknolojisi kullanarak uygulamaların hızlı ve taşınabilir bir şekilde dağıtılmasını sağlar. Docker, uygulama ve bağımlılıklarını bir konteyner içinde paketler, bu da uygulamanın herhangi bir ortamda çalışmasını sağlar.
- Kubernetes:
- Kubernetes, konteyner orkestrasyon platformudur. Docker gibi konteyner teknolojisini yönetir ve uygulamaların dağıtımını, ölçeklendirmesini ve yönetimini kolaylaştırır.
- Ansible:
- Ansible, otomasyon ve konfigürasyon yönetimi için kullanılan açık kaynaklı bir araçtır. Ansible, sunucu konfigürasyonunu, uygulama dağıtımını ve diğer otomasyon görevlerini gerçekleştirmek için kullanılır.
- Git:
- Git, sürüm kontrol sistemi olarak kullanılır. Kodun sürüm geçmişini yönetir, paralel çalışma imkanı sağlar ve işbirliği yapmayı kolaylaştırır.
- Puppet:
- Puppet, konfigürasyon yönetimi ve otomasyon platformudur. Sunucuların ve ağ cihazlarının konfigürasyonlarını yönetmek için kullanılır.
- Chef:
- Chef, otomasyon ve konfigürasyon yönetimi için kullanılan bir araçtır. Sunucuların konfigürasyonunu tanımlayan kod parçalarıyla çalışır.
- Prometheus:
- Prometheus, açık kaynaklı bir izleme ve uyarı sistemi olarak kullanılır. Sistem performansını ve uygulama metriklerini izlemek için kullanılır.
- ELK Stack (Elasticsearch, Logstash, Kibana):
- ELK Stack, logları toplama, işleme ve görselleştirme konusunda kullanılır. Elasticsearch, verileri depolar ve arar; Logstash, verileri işler; Kibana ise verileri görselleştirir.
Bu araçlar, birçok farklı DevOps sürecini destekler ve ekiplerin hızla geliştirme, dağıtım ve işletme yapmasını sağlar. Bununla birlikte, her projenin ihtiyaçları farklı olduğu için, doğru araçları seçmek önemlidir.
Özetle; Agile yöntem ile yazılım geliştirme süreçlerinde çok verimlilik yaşandı ve bu yüzden çok tercih ediliyor. DevOps ile birleştiğinde ise hız, verimlilik ve kalite konusunda işimizi çok daha iyi seviyelere çıkarmış oluyoruz. Eğer sizde yazılım süreçlerini iyileştirmek istiyorsanız bu yöntemlerin şirketinizde/projenizde oturması ve kültürün değişmesi için benimle irtibata geçebilirsiniz.
Metaverse geliyor…
Metaverse, sanal gerçeklik ve blockchain teknolojileri kullanılarak oluşturulmuş, etkileşimli ve merkezi olmayan bir dijital evrendir. Bu evren, kullanıcıların birbirleriyle etkileşime geçebilecekleri, ticaret yapabilecekleri ve farklı dijital varlıklara sahip olabilecekleri bir platform sunar.
Metaverse, çeşitli alanlarda kullanılabilir, örneğin sanal dünyalarda, e-ticarette, eğitimde, oyunlarda, sanatta ve daha birçok alanda. Bu dijital evrende kullanılan blockchain teknolojisi, dijital varlıkların ve işlemlerin merkezi olmayan bir şekilde yönetilmesini ve güvenli bir şekilde gerçekleştirilmesini sağlar.
Metaverse’un temel özellikleri arasında, merkezi olmayan yapı, gerçek zamanlı etkileşim, özelleştirilebilir avatarlar, dijital varlık sahipliği, akıllı sözleşmeler ve sanal dünyaların yaratılması gibi özellikler yer alır.
Metaverse, gelecekte giderek daha fazla insanın kullanacağı bir teknoloji olarak kabul ediliyor ve bu nedenle birçok girişimci ve şirket bu alana yatırım yapmaya başladı.
Sende metaverse de yerini almak istiyorsan birkaç seçenek mevcut.
1 – Mevcut metaverse projelerinden birinden NFT olarak avatar, land(arsa) ve benzeri şeyleri alıp gelecekte değerlenmesini bekleyebilirsin.
2 – Kendi metaverse projeni geliştirebilir veya gelişmekte olan bir metaverse projesine katılabilirsin.
Metaverse kavramı giderek daha popüler hale geldikçe, birçok şirket ve proje bu alanda çalışmalar yapmaya başladı. İşte dünyada en popüler metaverse projeleri:
- Decentraland: Sanal bir dünya olan Decentraland, blockchain teknolojisi ile merkezi olmayan bir yapıya sahip. Kullanıcılar, bu dünyada arazi satın alabilir, evler ve ticaret merkezleri inşa edebilir ve diğer kullanıcılarla etkileşime geçebilir.
- The Sandbox: Sandbox, kullanıcıların 3D dünyaları tasarlamalarına ve bu dünyaları diğer kullanıcılarla paylaşmalarına olanak tanıyan bir platformdur. Sandbox, ayrıca kullanıcıların kendi dijital varlıklarını yaratmalarına, bunları satabilmelerine ve ticaret yapmalarına da izin verir.
- Somnium Space: Somnium Space, kullanıcıların sanal bir dünya içinde dolaşmalarına, ticaret yapmalarına ve diğer kullanıcılarla etkileşime geçmelerine olanak tanıyan bir platformdur. Somnium Space ayrıca, kullanıcıların kendi dijital varlıklarını yaratmalarına ve bu varlıkları satabilmelerine de izin verir.
- CryptoVoxels: CryptoVoxels, merkezi olmayan bir sanal dünya platformudur. Kullanıcılar bu dünyada arazi satın alabilir, evler inşa edebilir ve diğer kullanıcılarla etkileşime geçebilir. CryptoVoxels, kullanıcıların kendi dijital varlıklarını yaratmalarına ve satabilmelerine de izin verir.
- Axie Infinity: Axie Infinity, blockchain teknolojisiyle desteklenen bir oyun ve metaverse projesidir. Kullanıcılar, dijital varlıklar olan Axies’leri yetiştirip, eğitip ve satabilirler. Ayrıca Axie Infinity, kullanıcıların diğer oyuncularla etkileşime geçmelerine ve ticaret yapmalarına da izin verir.
Son zamanlarda Türkiye’de de birçok metaverse projesi geliştiriliyor. İşte bazı Türk metaverse projeleri:
- Virtualis: Virtualis, Türkiye’nin ilk sanal gerçeklik platformudur. Kullanıcılar, gerçek hayattaki etkinlikleri, konserleri ve müzeleri sanal gerçeklik ortamında deneyimleyebilirler.
- Paribu Arena: Kripto para borsası Paribu tarafından geliştirilen Paribu Arena, kullanıcıların dijital varlıklarını kullanarak birbirleriyle yarışabilecekleri bir platformdur. Paribu Arena’da yarışmalar düzenlenir ve kazananlara ödüller verilir.
- Turgutreis Sanal Liman: Bodrum Turgutreis Limanı’nın sanal bir kopyası olan Turgutreis Sanal Liman, kullanıcıların sanal olarak limanda gezmelerine ve deneyimlemelerine olanak tanır.
- Reborn City: Reborn City, Türkiye’nin ilk merkezi olmayan sanal dünya platformudur. Kullanıcılar, Reborn City’de dijital varlıklarını yaratıp, satabilir ve diğer kullanıcılarla etkileşime geçebilirler.
- Wannart: Wannart, kullanıcıların dijital sanat eserlerini sergileyebilecekleri bir platformdur. Kullanıcılar, sanal galerilerinde eserlerini sergileyebilir, satışa çıkarabilir veya diğer kullanıcılardan dijital sanat eserleri satın alabilirler.
- GhoVerse: Bir oyun olaran başlayan ancak sonradan metaverse özellikleri geliştirerek devam etmiş ve Türkiye’deki yazılımcılar ile başlatılmış bir metaverse projesidir. Gezegenler, kasabalar, hayaletler ve avcıların olduğu mistik bir evren sunar. Kullanıcılar bu gezegenlerde dolaşıp istediklerini yapabilirler.
Bu Türk metaverse projeleri, ülkemizde bu alanda farkındalığın artması ve Türk girişimcilerinin metaverse teknolojilerine ilgi göstermesi ile birlikte ortaya çıkmaktadır.
Web3 Hakkında
Web3, blockchain ve kripto para birimi teknolojileri üzerine inşa edilen bir internet vizyonudur ve günümüzün hızla gelişen teknolojileri arasında önemli bir yer tutmaktadır. Web3 teknolojileri, merkezi otoriteler yerine dağıtık ağlar ve kriptografi kullanarak veri güvenliğini ve gizliliğini artırarak internet kullanıcılarının güvenliğini ve kontrolünü artırmayı hedeflemektedir.
Web3 teknolojileri, merkezi olmayan uygulamaların (dApps) ve merkezi olmayan finans (DeFi) gibi yeni nesil uygulamaların geliştirilmesine ve kullanılmasına olanak tanımaktadır. Bu uygulamalar, daha adil, şeffaf ve güvenli bir internet sağlayarak gelecekteki teknolojik gelişmelerde büyük bir rol oynayacaktır.
Bu nedenle, Web3 teknolojileri geleceğin önemli teknolojilerinden biri olarak kabul edilebilir. Ancak, bu teknolojilerin tam potansiyeline ulaşması için hala birçok zorluk ve engel vardır ve bu nedenle, Web3’nin geleceği tam olarak belirlenememektedir.
Web3 teknolojileriyle geliştirilen bazı dApps örnekleri:
- Merkezi Olmayan Finans (DeFi) Uygulamaları: Web3 teknolojileri, merkezi olmayan finans uygulamalarının (DeFi) geliştirilmesine olanak tanımaktadır. Bu uygulamalar, kripto para birimleri üzerinden kredi verme, borç alma, sigorta ve diğer finansal işlemleri gerçekleştirmek için blockchain teknolojisi kullanır.
- Dağıtık Depolama Uygulamaları: Web3 teknolojileri, dağıtık depolama uygulamalarının geliştirilmesine olanak tanır. Bu uygulamalar, verileri merkezi bir sunucuda değil, dünya genelinde dağıtılmış bir ağda depolar ve böylece verilerin güvenliği ve gizliliği artar.
- Merkezi Olmayan Sosyal Medya Uygulamaları: Web3 teknolojileri, merkezi olmayan sosyal medya uygulamalarının geliştirilmesine olanak tanır. Bu uygulamalar, kullanıcıların verilerini merkezi bir sunucuda değil, blockchain teknolojisi kullanarak dünya genelinde dağıtılmış bir ağda saklar.
- Akıllı Sözleşme Uygulamaları: Web3 teknolojileri, akıllı sözleşmelerin geliştirilmesine olanak tanır. Bu uygulamalar, belirli şartlar sağlandığında otomatik olarak çalışan ve veri manipülasyonu veya yanıltıcı işlemlerin önlenmesine olanak tanıyan programlardır.
- NFT Piyasaları: Web3 teknolojileri, NFT’ler (non-fungible tokens) gibi kripto varlıkların alım satımını mümkün kılan merkezi olmayan pazar yerlerinin geliştirilmesine olanak tanır. Bu uygulamalar, sanat eserleri, koleksiyon ürünleri ve diğer benzersiz varlıkların alım satımını gerçekleştirmek için kullanılır.
Bu sadece birkaç örnek olup, Web3 teknolojileriyle geliştirilebilecek dApps’lerin sayısı ve çeşitliliği giderek artmaktadır.
Örneğin Metaverse kavramı, genellikle Web3 teknolojileri ile ilişkilendirilir ve Web3 teknolojileri olmadan Metaverse uygulamalarının geliştirilmesi zordur. Metaverse, genellikle sanal bir dünya olarak tanımlanır ve kullanıcıların dijital varlıklarını (avatarlar, objeler, sanat eserleri vb.) oluşturmasına, paylaşmasına ve etkileşim kurmasına olanak tanıyan bir platformdur.
Web3 teknolojileri, Metaverse platformlarının merkezi olmayan ve açık kaynak kodlu olarak geliştirilmesine olanak tanır. Bu, kullanıcıların dijital varlıklarının sahipliği ve kontrolü üzerinde tam bir hakimiyet sahibi olmalarını sağlar. Blockchain teknolojisi, bu dijital varlıkların sahipliği, telif hakları ve diğer önemli özellikleri için güvenli bir kayıt tutar.
Web3 teknolojileri, Metaverse uygulamalarının güvenliği, şeffaflığı ve gizliliğinin korunması açısından da önemlidir. Kullanıcılar, Web3 teknolojileri aracılığıyla kimliklerini ve diğer kişisel verilerini koruyabilir ve Metaverse platformlarında yapılan tüm işlemler şeffaf bir şekilde kaydedilebilir.
Bu nedenle, Metaverse ve Web3 teknolojileri arasında yakın bir ilişki vardır ve Web3 teknolojileri, Metaverse platformlarının geliştirilmesi ve işletilmesi için önemli bir rol oynamaktadır.
Web3 de kullanılan blockchain ağları:
Web3 teknolojisi, merkezi olmayan uygulamaların geliştirilmesine olanak tanıyan birçok farklı blockchain ağına bağlanabilir. Bu nedenle, Web3 ağlarının sayısı sürekli olarak artıyor. Ancak, en popüler Web3 ağlarından bazıları şunlardır:
- Ethereum: Web3 uygulamalarının geliştirilmesinde en yaygın kullanılan blockchain ağı Ethereum’dur. Ethereum, akıllı sözleşmeler oluşturmak ve Web3 uygulamaları için altyapı sağlamak için kullanılır.
- Binance Smart Chain: Binance Smart Chain, Binance borsası tarafından geliştirilen bir blockchain ağıdır. Binance Smart Chain, düşük işlem ücretleri ve hızlı işlem onay süreleri sunar.
- Polygon: Polygon (eski adıyla Matic Network), Ethereum blockchain ağına köprü oluşturan bir Layer 2 çözümüdür. Polygon, Ethereum’a göre daha hızlı işlem onay süreleri ve düşük ücretler sunar.
- Solana: Solana, yüksek performanslı bir blockchain ağıdır ve Web3 uygulamalarının geliştirilmesinde kullanılır. Solana, düşük ücretler ve yüksek işlem hızları sunar.
- Avalanche: Avalanche, yüksek performanslı ve ölçeklenebilir bir blockchain ağıdır. Avalanche, Ethereum sanal makinesini destekler ve Ethereum’a benzer şekilde akıllı sözleşmeler oluşturmak için kullanılabilir.
Bu sadece birkaç örnek olup, Web3 teknolojisiyle bağlantılı farklı blockchain ağlarının sayısı sürekli olarak artmaktadır.
Ethereum, BSC, Polygon,Avalanche gibi ağlar EVM tabanlı blockchain ağlarıdır ve Solidity ile geliştirilir. Solana ise Rust dilini kullanarak akıllı sözleşmelerin oluşturulması için özel olarak tasarlanmış bir kütüphane olan Solana Programlama Arabirim Kitaplığı’nı (Solana Programming Interface Library – Solana SPL) kullanır.
Solidity:
Solidity, Ethereum sanal makinesinde (EVM) çalışan akıllı sözleşmelerin yazılması için özel olarak tasarlanmış bir yazılım dilidir. Bu nedenle, Solidity kullanarak akıllı sözleşmeler oluşturmak için Ethereum gibi EVM tabanlı ağlara ihtiyaç duyulmaktadır.
Solidity ile uyumlu bazı EVM tabanlı ağlar şunlardır:
- Ethereum: Solidity, Ethereum sanal makinesinde çalışan akıllı sözleşmelerin oluşturulması için kullanılır. Ethereum, dünyanın en büyük kripto para birimlerinden biridir ve birçok Web3 uygulamasının temelini oluşturur.
- Binance Smart Chain: Binance Smart Chain (BSC), Ethereum ile uyumlu bir blockchain ağıdır ve Solidity dilini kullanarak akıllı sözleşmelerin oluşturulmasına izin verir. BSC, hızlı işlem onay süreleri ve düşük ücretler sunar.
- Polygon (eski adıyla Matic Network): Polygon, Ethereum tabanlı bir Layer 2 çözümüdür ve Solidity dilini kullanarak akıllı sözleşmeler oluşturulmasına izin verir. Polygon, düşük ücretler ve hızlı işlem onay süreleri sunar.
- Optimism: Optimism, Ethereum tabanlı bir Layer 2 çözümüdür ve Solidity dilini kullanarak akıllı sözleşmeler oluşturulmasına izin verir. Optimism, hızlı işlem onay süreleri ve düşük ücretler sunar.
- Arbitrum: Arbitrum, Ethereum tabanlı bir Layer 2 çözümüdür ve Solidity dilini kullanarak akıllı sözleşmeler oluşturulmasına izin verir. Arbitrum, hızlı işlem onay süreleri ve düşük ücretler sunar.
Bu, Solidity dilini kullanan EVM tabanlı ağların sadece birkaç örneğidir. Solidity dilini kullanan diğer ağlar da mevcuttur ve sayıları her geçen gün artmaktadır.
Gas Fiyatı:
Gas fiyatı, Ethereum gibi blockchain ağlarında işlem gönderirken ödenen bir ücrettir. Bu nedenle, gas fiyatı en düşük olan blockchain ağları, Ethereum dışında, genellikle işlem ücretlerinde avantaj sağlarlar.
Bununla birlikte, gas fiyatı ve işlem ücretleri sürekli olarak değişkenlik gösterir ve belirli bir zaman dilimi içinde farklılıklar gösterebilir.
Ancak, şu anda gas fiyatı en düşük olan blockchain ağlarından biri Nano (NANO) olarak bilinen bir kripto para birimi ağıdır. Nano, blok zinciri teknolojisi kullanır, ancak işlem onaylamak için gas ücreti talep etmez. Bu nedenle, Nano ağında işlem yapmak ücretsizdir ve gas fiyatı en düşük olan blockchain ağlarından biridir.
Bunun yanı sıra, IOTA da (MIOTA) işlem ücreti olmadan çalışan bir blok zinciri teknolojisine sahip bir diğer kripto para birimidir. Ancak, IOTA’nın işlem ücreti olmaması, Tangle adlı özel bir protokol kullanmasından kaynaklanmaktadır.
Gwei (Giga-Wei), Ethereum ve diğer Ethereum tabanlı blockchain ağlarında kullanılan bir gas birimi olarak kullanılır. Gas, ağdaki işlemlerin işlemci gücüne ihtiyaç duyan birimdir ve her işlem için belirli bir gas ücreti ödenir.
Gwei, bir ether (ETH) değerinin 10 milyar parçasına eşittir. Yani, 1 ETH = 1,000,000,000 Gwei’dir. Gwei, Ethereum ağındaki gas ücretleri ölçmek için kullanılır ve genellikle işlem ücretleri olarak ödenir.
Örneğin, bir Ethereum işlemi için ortalama gas ücreti 100 Gwei olsaydı, bir kullanıcının o işlemi gerçekleştirmek için 0.0000001 ETH (100 Gwei = 0.0000001 ETH) gas ücreti ödemesi gerekebilir. Bu nedenle, gas fiyatları ve gwei değerleri, Ethereum ve diğer Ethereum tabanlı blockchain ağlarında işlem yaparken önemlidir.
Popüler blockchain ağları arasında gas ücretleri sürekli olarak değişebilir, ancak genellikle Ethereum, Binance Smart Chain ve Polygon (eski adıyla Matic) gibi ağlar daha popülerdir. Bu ağlar arasındaki gas ücretleri genellikle Ethereum’da en yüksek ve Polygon’da en düşük olacak şekilde farklılık gösterir.
Örneğin, 28 Şubat 2023 tarihinde yapılan bir araştırmada, Ethereum’daki ortalama gas ücreti 200 gwei (Gigawei) civarındayken, Binance Smart Chain’de 30 gwei ve Polygon’da 7 gwei civarındaydı. Bu, Polygon’un diğer blockchain ağlarına göre daha düşük gas ücretleri sunduğu anlamına gelir.
Diğer popüler blockchain ağlarının gas ücretleri şunlardır:
- Solana: Yaklaşık 0,0001 SOL (Solana’nın yerel kripto para birimi) kadar düşük gas ücretleri sunar.
- Cardano: Henüz tamamen geliştirilmediği için gas ücretleri hakkında kesin bir bilgi yoktur.
- Avalanche: Ortalama gas ücretleri yaklaşık 30 gwei civarındadır.
- Polkadot: Ortalama gas ücretleri yaklaşık 100-200 gwei civarındadır.
Bu rakamlar, blockchain ağları arasındaki gas ücretlerinin sürekli olarak değişebileceğini ve değişken olabileceğini unutmamak önemlidir.
Web3 de kullanılan yazılım dilleri nelerdir?
Web3 uygulamaları geliştirmek için birçok farklı yazılım dili kullanılabilir. Bunlardan bazıları:
- Solidity: Ethereum platformunda akıllı sözleşmeler oluşturmak için kullanılan bir yazılım dili olan Solidity, Web3 uygulamalarının en yaygın kullanılan yazılım dillerinden biridir. Solidity, Nesne Yönelimli Programlama (OOP) özelliklerini içerir ve Ethereum Virtual Machine (EVM) tarafından çalıştırılacak kodların oluşturulmasını sağlar.
- Rust: Rust, Web3 uygulamalarının geliştirilmesi için popüler olan bir diğer yazılım dilidir. Rust, performansı ve güvenliği ön planda tutan bir dildir ve Web3 uygulamaları için merkezi olmayan hizmetler geliştirmek için kullanılabilir.
- JavaScript: JavaScript, Web3 uygulamalarının geliştirilmesi için en yaygın kullanılan dillerden biridir. JavaScript, Ethereum platformu için web arayüzleri oluşturmak, akıllı sözleşmeler oluşturmak ve Web3 API’leriyle etkileşim kurmak için kullanılabilir.
- Go: Go, Ethereum platformu için akıllı sözleşmeler oluşturmak için kullanılabilir. Go, hızlı, verimli ve güvenli bir dil olarak bilinir ve özellikle merkezi olmayan uygulamalar için uygundur.
- Python: Python, Web3 uygulamalarının geliştirilmesinde kullanılan bir diğer dildir. Python, Ethereum platformu için akıllı sözleşmeler oluşturmak ve Web3 API’leriyle etkileşim kurmak için kullanılabilir.
Web3 hakkında kendimizi geliştirmek için bir akademi kurduk. Sende bu akademiye ücretsiz katılabilirsiniz. Detaylar için https://ghostakademi.xyz yi inceleyebilir ve orada bulunan discord linki üzerinden discord a giriş yapıp başvuru yapabilirsin.
İyi bir yazılımcı olmak için 11 altın kural
İyi bir mobil uygulama yazılımcısı , web yazılımcısı yada backend yazılımcısı olmak bazı ortak temel özellikleri barındırıyor.
Bu ortak özellikler şu şekilde sıralanabilir. Elbette daha vardır ama bunlar ilk etapta aklıma gelenler ve önemli olanlar. Bunları hem yazılımcıların hem müşterilerin düşünmesi için yazıyorum. Umarım herkese faydalı olur.
- Her alanda çalışabilmeli (Mobil uygulama, web uygulaması, backend). Sadece hangisine yoğunlaşır ise onda daha hızlı sonuç elde eder.
- Konsantrasyonu iyi olmalı. Odaklandığı zaman işi (yada hedeflediği kısmı) bitirebilmeli.
- Pes etmemeli. Bazen geceler boyu sabahlamak gereksede pes etmeden devam etmeli.
- Çok iyi araştırmalı. Çözemediği konuları yada daha iyi ne yapabilirim gibi düşünerek araştırma yapmalı. Kendi kendine araştıran ve çözüm üretebilen biri olması çok önemli çünkü her zaman size yardımcı olacak birini bulamazsınız.
- Temel algoritmaları bilmeli. Günümüzde yazılıma yeni başlayan çoğu kişi algoritma çalışmadan yazılım öğrenmeye kalkıyor. Yazılım dilini öğrensede, zor problemeri algoritmalar kurarak çözemiyor. Önce bir programlama dili seçip (javascript, dart, php, c# gibi) burada algoritma çalışmak çok önemli.
- Dokümantasyon yapmalı. Hem kendi için hem kendisinden sonra kodlara girecek kişi için bunu yapmalı. Kodun için gelişigüzel yorumlar yazmak yerine düzgün yorumlar yazıp, bir readme dosyası hazırlayarak içine önemli konuları not etmeli (ör: nasıl build alınır , dev ve prod ortamına nasıl deploy edilir vs…)
- Versiyon kontrolü kullanmalı. Ekip halinde çalışmıyor bile olsa, yedek almak, ileride ben ne yapmıştım diye bakmak ve kodu düzgün teslim etmek için git sistemini biliyor olmalı.
- Etik olmalı. İşi eksiksiz ve gereken kişiye anlatarak ve dokümantasyonlar ile teslim etmeye özen göstermeli. Açılan bazı hesapları müşteri adına açmalı ve bunlara ait dokümantasyonları işe başlarken tutmaya başlayıp anında müşterisi ile veya işi yaptığı kişi ile paylaşmalı. Kendisine birşey olsa işe ne olacak düşünmeli. Para kazandığı yere ihanet etmemeli, dürüst ve ahlaklı olmalı.
- Devir alabilmeli. Başkasının yazdığı kodu incelemeyi çoğu yazılımcı sevmez. Kodu inceleyip sonra sorumluluğu üstlenerek yazan kişiden devir alabilmeli. Çoğu kişi maalesef anlamaya çalışmak yerine bu olmamış ben bunu baştan yazayım diyerek hem daha çok kendine iş çıkarma derdinde hem de öncesinde kodu yazan kişiye çamur atarak prim yapma derdinde oluyor. Düzgün devir almayı öğrenmek zorundayız. Bir kere karşınızdaki kişi işten anlamıyor diye bu olmamış demek bence dolandırıcılıktan başka birşey değildir.
- İyi debug yapabilmeli. Maalesef karşılaştığım çoğu yazılımcı debug yapmayı , kodu takip etmeyi bilmiyor. Yazdığınız kodu her durumu düşünerek debug yapmanız ve nasıl davrandığını incelemeniz gerekiyor.
- Tasarım gözü iyi olmalı. Tasarımcı olması gerekmiyor ama biraz da zevk olması lazım. Bunun içinde yapılan tasarımları incelemeli , trendleri takip etmeli. Bir iş yaparken ui (arayüz) tarafına özenmeli.
Sizde iyi bir yazılımcı olmak ve bu özelliklerin üstünde durup kendinizi geliştirmek istiyorsanız benimle irtibata geçebilirsiniz.
Flutter ile Mobil Uygulama Eğitimi
Herkese merhaba,
Yazılarımı takip edenler bilirler. Çok uzun yıllardır yazılım konusunda geniş bir bilgi ve tecrübeye sahibim. Yoğun talep üzerine az sayıda kişiye ve küçük gruplara Flutter eğitimi veriyorum. Bu eğitimin amacı klasik eğitim kurumları gibi değil yakın çalışarak kişiyi gerçekten tek başına kapsamlı uygulamalar yapabilecek seviyeye getirmek. Tamamen geleceğe hazırlamak. Teoriden çok pratiğe dayalı eğitim vermek.
Eğitimin ne kadar süreceği biraz kişiye de bağlı. Temel programlama bilgisi iyi seviyede ise ve mobil uygulama geliştirme bilgisine sahip ise (java, kotlin, swift gibi), bu durumda süre kısalacaktır. Minumum ders paketi 10 dersliktir.
Eğitim tamamlandığında aşağıdaki artı değerlere sahip olacak kişi düzenli iş bularak kendini geliştirmeye devam edecektir.
- Flutter ve dart programlama diline tam hakimiyet,
- Kullanılacak kütüphaneleri tespit etme,
- Flutter UI hazırlama ve temel widget ları öğrenme,
- Firebase ile uygulama geliştirme,
- Backend json servisler ile uygulama geliştirme
- Servisten dönen datayı cache leyerek uygulamayı hızlandırma
- Login, logout kurguları
- Flutter state management
- Git üzerinden versiyon yönetimi
Bu bilgiler dışında bu eğitimden sonra elde edilebilecek avantajlar şu şekildedir.
- Eğitim tamamlandığında iyi seviyeye gelen kişileri bizzat kendim projelerin içine katarak gelişimlerinin devamını sağlayacağım. Üstelik projelerde yaptıklarının karşılığında para kazanmaya başlayarak kendilerine duydukları güven giderek artacak.
- İyi seviyeye gelen kişilere sürekli referans olacağım. İyi şekilde tanıyacağım için bundan sonraki her aşamada beni referans gösterebilecekler.
- Sürekli paylaşımda kalmaya ve gelişimlerini takip etmeye devam edeceğim.
- Kişi kendini geliştirdi ise, işsiz kalmaması için elimden gelen çabayı göstereceğim.
- Özetle, tam bir koçluk, mentörlük yapacağım.
1-1 Eğitim Paketleri
10 ders (15 saat) – 12000 TL.
20 ders (30 saat) – 22.000 TL.
30 ders (45 saat) – 30.000 TL.
Grup Eğitim Paketleri (Maks 4 kişi)
10 ders (15 saat) – 6000 TL. (kişi başı)
20 ders (30 saat) – 11000 TL. (kişi başı)
30 ders (45 saat) – 15.000 TL. (kişi başı)
NOT: Öğrencilere ve daha yüksek sayıda grup eğitimlerine farklı indirimler uygulanmaktadır.
Eğitim hakkında daha detaylı bilgi almak için iletişim formundan bana ulaşabilir veya 542 – 350 50 95 numaralı telefondan arayabilirsiniz.
Birçok proje neden başarısız oluyor?
Herkesin aklında güzel bir fikir veya yapılmasını istediği bir proje var biliyorum. Bu işi yaptırabilmek içinde güvenilir bir yazılımcı aranıyor. Yazılımın hangi tür olduğu çok önemli değil. Yaşanan sorunlar hepsinde benzer. Bu yazımda biraz bunlardan bahsedeceğim ve örnek olarak ise yine mobil uygulama üzerinden gideceğim.
Mobil uygulama yaptırmak için 2 yöntem var diyelim. Yani siz öyle sanıyor olabilirsiniz 🙂 3. yöntemi yazının devamında sabredip okuyanlar için anlatacağım.
- Freelance mobil yazılım uzmanı (mobil uygulama yazılımcısı)
- Mobil uygulama geliştiren şirket (yazılım firması)
Bana hergün o kadar çok mesaj yada telefon geliyorki inanamazsınız.
Şu freelance ile çalıştım işimi yarım bıraktı ve ödememi geri iade etmiyor ne yapmalıyım?
Şu şirket ile anlaştık başta iyi gidiyordu sonunda istediğimiz sonuca ulaşamadık şimdi ne yapacağız?
Aslında freelance mobil yazılımcı yada mobil yazılım firması baktığımızda çok farklı değil. Diyeceksiniz ki firma ile çalışmak daha garanti değil mi? Şöyle söyleyeyim hiç garanti değil. Hergün binlerce firma açılıp kapanıyor. Adresi ve telefonu var diye güvenilir olmuyor maalesef. Evet web sitesi olabilir ve birçok referans koymuşda olabilir sitesine. Ancak bunu teyit etmeniz çok zor. Freelance içinde aynı şey geçerli.
Sonuçta ne yapacağınızı bilemeyip birseçim yapıyorsunuz ve şansınız var ise istediğinize yakın bir sonuç alabiliyorsunuz. Peki, ya şansınız yok ise? O zaman paranızı ve en kötüsü zamanınızı boşa harcamış oluyorsunuz. Zaman ise bugünlerde paradan daha değerli biliyorsunuz.
Ben bu sebepten freelance yada şirket olarak iş yapmıyorum. Peki ne mi yapıyorum?
Projenize teknik liderlik yaparak sizin tarafınızda çalışıyorum. Aşağıda örnek bir mobil projede yaptığım bazı işler ve sorumluluklarım yer alıyor.
1 – Projeye ait kurgunun kontrolü/şekillendirilmesi ve apple/google politikalarına uygunluğu,
2 – Teknik ekibin kurulması ve sonrasında takibi3 – Teknik iş planının belirlenmesi,
4 – İşi yapacak teknik ekip ile ve yönetim ile haftallık düzenli toplantılar,
5 – İşin (yazılan kodun) düzgün olmasının sağlanması,
6 – Kodun ve tüm dökümanların yedeğinin alınması, git ( versiyon kontrol) sisteminin kurulması,
7 – Kalite kontrol için iyi bir test sürecinin yürütülmesi,
8 – Kodun teslim alınması ve sonrasında işin yürütülmesi için plan yapılması,
9 – Altyapının (server , backend, mimari, veritabanı) kurulması/şekillendirilmesi/işletilmesi konusunda destek,
10 – frontend uygulamalarının nasıl olacağının belirlenmesi ve yürütülmesi sırasında teknik destek.
11- Yazılımcı arkadaşların takıldığı yerde yardımcı olmak,
12 – İşveren haklarını korumak, işi hızlandırmak ve maaliyetleri düşük tutmak.
Çalışacağınız ekibi, kaç kişiye ihtiyaç olduğunu beraber belirliyoruz. Çalışacağınız taraf şirket de olabilir. Kim olursa olsun işi şansa bırakmamak için denetlenmeye ihtiyacı vardır.
Bu sektörde 20 yıldan fazladır çalışıyorum. Hala projelerin zorlu yerlerinde yazılım yapıyorum. İnanın neler gördüğümü anlatsam şaşırırsınız. Mesela başta işi kapmak için ucuz fiyat verip yok olanlar. Yada alınan ödeme ile gelişigüzel iş yapıp sonra daha çok para koparmaya çalışanlar. Her sektörün iyileri ve kötüleri vardır. Sektörü kötülemek yerine aslında amacımız doğruyu nasıl yaparızı bulmak olmalı diye düşünüyorum.
Bu belirlediğim yöntem ile örneğin flutter ile mobil uygulama yapacağız diyelim. Bize 1 flutter yazılımcısı 1 de backend yazılımcısı gerekiyor. Her ikisinide yapanlar var ama çok azdır ya da birinden birini çok iyi yapamayabilir. İki tarafda birbirinden bağımsız yazılan ama birbiri ile haberleşen önemli parçalardır. Mevcut çevrimizdeki güvendiğimiz arkadaşlar var ise onları önce tercih ederek arayışımıza başlıyoruz. Eğer onlar dolu ise bu sefer arayış ve detaylı görüşmeler devam ediyor. 2 hafta içinde istediğimiz ekibi kurduk diyelim. Burada proje sahibine şunu öneriyorum. Aylık anlaşmalar yapın! Sigortalı çalıştırırsanız ödemenizi maaş gibi ay sonunda gerçekleştirin. Sigortalı değil ise yarısı ay başında yarısı ay sonunda olabilir. Aylık değilde proje bazlı anlaşmanın birçok riskleri var. En büyük sorun çalışanların işe geçici bakmaları. Sizin açınızdan ise proje bitince projenizi teslim aldığınızı düşünelim, sonrasında işi yapan ekibin dağılması ile beraber bakım ve desteğin yapılamadığı bir durum oluşuyor. Başka yazılımcılar bulmaya çalışıyorsunuz ve herkes ben bunu baştan yapayım demeye başlıyor. Çünkü başkasının yazdığı kodu anlamak ve uğraşmak istemiyor.
Proje bazlı çalışma ve aylık çalışmayı kıyaslayalım. Bir iş var ve 3 ayda biteceğini düşünelim. İşi de profesyonel bir yazılım firmasına vereceksiniz. 3 kişilik ekibi size tahsis edecek ve 3 ay sürecek bir iş ise nerden baksanız 90-100 bin TL para istemesi lazım 3 yazılımcının 3+1(uzama riski) yani 4 aylık maliyetini çıkarıp kar etmesi için. Zaten 3 aylık frontend ve backend i olan bir iş yapıyor ve tek bir freelance ile 20-30 bin e anlaşıyorsanız iyice riske giriyorsunuz demektir. Neyse bu şirkete dönecek olursak. Buna alternatif 3 kişilik ekibi kurduğumuzu ve aylık anlaştıığımızı düşünelim. Dışarıdan çalışacakları içinde her birine 5000 veriyor olalım. Yani aylık 15000 gibi bir maaliet ortaya çıkıyor. 1 teknik lider + 2 yazılımcı ile projenizi yedeklemiş oluyorsunuz. Ben burada yapılan tüm işi tüm detayları ile bildiğimden biri ayrıldığında yerine yenisini buluyoruz ve iş o sırada aksamıyor. Bana birşey olsa (allah korusun 🙂 ) Bu durumda da diğer arkadaşlar işi biliyor oluyor. Proje birazda uzadı 4 ayda çıktı diyelim ortaya. Bu durumda 60.000 e iş yapılmış oluyor. Ancak işiniz tutacak ve daha büyüyecek ise bu ekibi kaybetmek istemezsiniz. Devam eden aylarda düzeltmeler, iyileştirmeler yada ek özellikler yaptırmaya devam ediyorsunuz. Proje bazlı işlerde bunu yaptıramazsınız. Ek sözleşme ile tekrar anlaşmanız gerekir. Sonuçta iş bitiminden 1-2 ay sonra işin ne noktada olduğunu anlamış ve proje bazlı işe göre daha az harcamış ve daha az riske girmiş olacaksınız.
Daha anlatacak çok şey var ama çok da uzatmadan konuyu toparlamak gerekirse, ben projenin büyüklüğüne ve ayıracağım zamana göre aylık bir teknik liderlik fiyatı belirliyorum. Ekibin kurulması , proje planı, tasarım süreci ve teknik herhangi birşeye başlamadan önce benimle anlaşmanız gerekiyor bu yöntemi tercih ettiğinizde. Çalışmalara hemen başlıyoruz.
İşin büyüklüğüne ve harcanacak zamana göre aşağıdaki örnek olarak sunduğum çalışma yöntemlerinden birini seçebilirsiniz.
Projeniz önemli ve sizde bu konuda yatırım yapmaya niyetli iseniz benimle irtibata geçebilirsiniz. Hem süre tasarrufu, hem maaliyetlerin düşürülmesi hem de kaliteli ve riske girmeden iş yapmak için benim önerim bu şekilde. Bu alacağım ücretin karşılığını size zaman, kaliteli çıktı ve uygun kaynak kullanımı sunarak fazlası ile çıkaracağımdan şüpheniz olmasın.
Sevgi ve saygılarımla.