Merhaba arkadaşlar,
Son birkaç yılda yapay zekânın yazılım tarafında ne kadar büyük bir değişiklik yaptığını hepimiz görüyoruz. Özellikle 2023'ten sonra işler bayağı hızlandı.
Eskiden bir şey geliştirmek için belirli bir teknik altyapıya sahip olmak gerekiyordu. Şimdi ise çok ileri seviye kodlama bilgisi olmayan birisi bile yapay zekâ yardımıyla web sitesi, SaaS, otomasyon, küçük araçlar hatta ciddi sayılabilecek projeler ortaya çıkarabiliyor.
Ama burada bence gözden kaçan bir nokta var.
AI'ın bir şeyler üretebiliyor olması, ortaya çıkan şeyin otomatik olarak iyi olduğu anlamına gelmiyor.
Ben de son dönemde AI ile geliştirme yaparken bazı şeyleri daha net görmeye başladım. Bunları tamamen kendi deneyimim üzerinden paylaşmak istiyorum. Belki yeni başlayanların işine yarar, belki de sizlerin ekleyeceği farklı yöntemler vardır.
1. Projeyi başlatırken sadece "şunu yap" demeyin
Diyelim ki yeni bir web sitesi yapacaksınız.
AI'a direkt:
"Bir website istiyorum. X renk olsun, Y tarzında olsun, Z boyutlarında olsun."
- dediğinizde büyük ihtimalle size çalışan bir şey çıkaracaktır.
- Ama tasarım tarafında sonuç bazen fazlasıyla tanıdık oluyor.
- Neon renkler, bol gradient, yuvarlak kartlar, gereksiz animasyonlar...
- Kısacası biraz baktığınızda "bunu AI yapmış" hissini alabiliyorsunuz.
- Burada benim son dönemde işime yarayan şeylerden biri `.md` dosyaları ve tasarım kurallarını önceden belirlemek oldu.
- Örneğin styles.refero.design üzerinden tasarım kurallarını alıp bunları projeye göre düzenleyerek AI'a verebilirsiniz.
Renk sistemi, fontlar, spacing, border-radius, component kuralları ve kullanılmasını istemediğiniz tasarım kalıplarını bir `.md` dosyasında önceden tanımlayın. AI'a da projeye başlamadan önce bu dosyayı referans almasını söyleyin. Böyle yaptığınızda her seferinde tasarım kurallarını baştan anlatmanız gerekmez ve ortaya çıkan ekranlar daha tutarlı olur.
Ben özellikle son yaptığım projelerde bunu kullanmaya başladım ve açıkçası sonuçlar daha tutarlı olmaya başladı.
2. Her şeyi tek seferde yaptırmayın
- Bence vibe coding yapanların en sık yaptığı hatalardan biri bu.
- Mesela AI'a şöyle bir prompt veriyorsunuz:
- "Bana bir SaaS yap. Login olsun, dashboard olsun, ödeme sistemi olsun, admin paneli olsun, API olsun, database olsun, mobil uyumlu olsun, SEO'su da düzgün olsun."
- AI tabii ki bir şeyler çıkarıyor.
- Hatta ilk bakışta gayet güzel bile görünebiliyor.
- Fakat proje biraz büyümeye başladığında problemler çıkmaya başlıyor.
- Çünkü AI aynı anda çok fazla şeyi birbirine bağlamaya çalışıyor. Sonra bir yerde yaptığınız değişiklik başka bir yeri etkiliyor.
- Ben bu yüzden projeyi parçalara ayırmanın çok daha sağlıklı olduğunu düşünüyorum.
Projeyi tek seferde yaptırmak yerine aşamalara bölün.
Örneğin:
UI → Component yapısı → Sayfalar → Database → Authentication → API → İş mantığı → Ödeme → Admin paneli → Test → Deploy
Bir bölümü tamamlayıp test ettikten sonra diğerine geçmek, AI'ın daha önce yaptığı şeyleri bozma ihtimalini ciddi şekilde azaltabiliyor.
Bir aşamayı bitiriyorsunuz, test ediyorsunuz. Sonra diğerine geçiyorsunuz.
Bence vibe coding dediğimiz şey aslında:
"Tek prompt verip uygulamayı yaptırmak" değil, AI ile ürünü adım adım geliştirmek.
3. Önce tasarım, sonra kod
- Benim özellikle dikkat ettiğim konulardan biri de bu.
- Projeye başlar başlamaz:
- "Şunu kodla."
- demek yerine önce kafamdaki ürünü anlatmaya çalışıyorum.
- Mesela önce kendime şunları soruyorum:
- Bu ürün tam olarak ne işe yarıyor?
Kim kullanacak?
- Kullanıcı siteye girdiğinde ilk olarak ne görecek?
- Kullanıcının yapmasını istediğim ana aksiyon ne?
- Ana sayfanın amacı ne?
- Dashboard gerekiyorsa burada ne gösterilecek?
- Hangi sayfalar olacak?
- Renk sistemi nasıl olacak?
- Typography nasıl olacak?
- Kart ve buton yapıları nasıl olacak?
- Animasyon gerekiyor mu?
- Mobilde nasıl davranacak?
- Bunları biraz netleştirdikten sonra kod tarafına geçiyorum.
AI'a kod yazdırmadan önce mümkün olduğunca ürünün ekranlarını ve kullanıcı akışını netleştirin. "Ana sayfada ne olacak?" sorusundan önce "Kullanıcı bu sayfaya neden gelecek ve burada ne yapmasını istiyorum?" sorusunu cevaplamak, gereksiz ekran ve özelliklerin oluşmasını engelliyor.
Çünkü kötü bir tasarımı çok düzgün kodlayabilirsiniz.
Ama çok iyi bir fikri kötü bir arayüzle sunduğunuzda kullanıcı ürünü olduğundan daha kötü algılayabiliyor.
Özellikle AI ile geliştirilen projelerde kullanıcıların ilk gördüğü şey genellikle UI/UX oluyor.
4. AI'ın yazdığı kodu körü körüne kabul etmeyin
Burada:
"Ben zaten kod bilmiyorum, AI yazıyor."
mantığı bir yere kadar çalışıyor.
Bir noktadan sonra çalışmıyor.
Her şeyi uzman seviyesinde bilmeniz gerekmiyor ama en azından bazı temel kavramları anlamanız gerekiyor.
Örneğin:
- Frontend nedir?
- Backend nedir?
- API nedir?
- Database nedir?
- Authentication nedir?
- Environment variable ne işe yarar?
- Git nedir?
- Deploy nasıl çalışıyor?
- Log nasıl okunur?
- HTTP status kodları ne anlama geliyor?
- Bir hatanın kaynağı nasıl bulunur?
- Bunların hepsinde uzman olmanız gerekmiyor.
Ama AI size:
"Supabase RLS policy nedeniyle authentication middleware'de problem var."
dediğinde en azından ne anlattığını anlayabilecek durumda olmanız gerekiyor.
Çünkü AI her zaman doğru cevap vermiyor.
Bazen olmayan bir problemi çözmeye çalışıyor.
Bazen çalışan kodu bozuyor.
Bazen de gayet emin bir şekilde tamamen yanlış bir çözüm öneriyor.
Bir hata aldığınızda AI'a direkt "düzelt" demek yerine önce hatanın nedenini analiz ettirin.
Örneğin:
"Bu hatanın kök sebebini analiz et. Henüz hiçbir dosyayı değiştirme. Problemin neden oluştuğunu, hangi dosyaların etkilendiğini ve olası çözüm yollarını açıkla."
Önce problemi anlamasını sağlayıp sonra değişiklik yaptırmak, AI'ın gereksiz yerlere müdahale etmesini azaltabiliyor.
O yüzden bence AI ile kod yazarken asıl önemli şeylerden biri, AI'ın yazdığı kodu kontrol edebilecek kadar teknik bilgiye sahip olmak.
5. Cursor, Claude ve ChatGPT'yi farklı amaçlarla kullanın
Tek bir yapay zekâya bağlı kalmak zorunda değilsiniz.
Hatta benim deneyimimde farklı modelleri farklı işler için kullanmak daha mantıklı.
Örneğin bir modeli planlama ve mimari için, başka bir modeli kodlama için, bir başkasını da debug için kullanabilirsiniz.
AI'ın yazdığı kodu başka bir AI'a kontrol ettirmek oldukça işe yarayabiliyor.
Örneğin:
"Bu projeyi sen yazmadın. Aşağıdaki kodu bağımsız bir senior developer gibi incele. Potansiyel bug'ları, güvenlik problemlerini, performans sorunlarını ve yanlış mimari kararları bul."
şeklinde bir prompt kullanabilirsiniz.
Buradaki güzel taraf, ikinci modelin kodu yazan modelin verdiği kararlara bağlı kalmadan daha bağımsız bir gözle inceleme yapabilmesi.
Ben burada olaya biraz ekip mantığıyla bakıyorum.
AI'ı sadece "kod yazan kişi" olarak görmek yerine farklı görevler verilebilecek ekip arkadaşları gibi düşünebilirsiniz.
6. `.md` dosyalarını hafife almayın
Bence vibe coding tarafında gereğinden az konuşulan konulardan biri de bu.
Her seferinde AI'a 2000 kelimelik prompt yazmak yerine projenin kurallarını dosyalara koyabilirsiniz.
Örneğin:
- README.md
- PROJECT.md
- DESIGN.md
- ARCHITECTURE.md
- RULES.md
- gibi dosyalar oluşturabilirsiniz.
- Bunların içerisinde projenin:
- Tasarım kurallarını
- Kodlama standartlarını
- Kullanılacak teknolojileri
- Kullanılmayacak teknolojileri
- Component yapısını
- Renk sistemini
- Typography sistemini
- Dosya yapısını
- API kurallarını
- Database yapısını
- Güvenlik kurallarını
- tutabilirsiniz.
Özellikle proje büyümeye başladığında RULES.md veya PROJECT.md gibi bir dosya oluşturup AI'ın uyması gereken kuralları buraya yazabilirsiniz.
Örneğin:
"Bu projede X kütüphanesini kullanma."
"Mevcut componentleri yeniden yazma."
"Yeni component oluşturmadan önce mevcut componentleri kontrol et."
"Database şemasını değiştirmeden önce bana bildir."
gibi kurallar koyabilirsiniz.
Bu tarz kurallar, AI'ın proje ilerledikçe kafasına göre mimari değiştirmesini engellemek açısından oldukça işe yarıyor.
Böylece her seferinde:
"Butonlar böyle olsun."
"Şu fontu kullan."
"Bu kütüphaneyi kullanma."
"Componentleri şu şekilde oluştur."
diye tekrar tekrar anlatmak zorunda kalmazsınız.
Bir süre sonra bu dosyalar projenin kendi kuralları haline geliyor.
Ben bunu biraz projenin anayasası gibi görüyorum.
7. "Çalışıyor" ile "iyi yapılmış" aynı şey değil
Bence burası işin en önemli noktalarından biri.
- AI size çalışan bir proje verebilir.
- Login çalışır.
- Dashboard açılır.
- API cevap verir.
- Database kayıt yapar.
- Ama bunların çalışıyor olması projenin iyi olduğu anlamına gelmiyor.
- Kod içerisinde gereksiz tekrarlar olabilir.
- Güvenlik açıkları olabilir.
- Database yanlış tasarlanmış olabilir.
- API gereksiz yere yavaş olabilir.
- Mobil görünüm kötü olabilir.
- Accessibility tamamen gözden kaçmış olabilir.
- SEO tarafında problemler olabilir.
- Hatta bugün sorunsuz çalışan proje birkaç ay sonra geliştirmesi çok zor bir hale gelebilir.
Arada bir AI'a yeni özellik yaptırmak yerine mevcut projeyi inceletin.
Örneğin:
"Bu projeyi senior developer gibi incele. Teknik borçları, gereksiz tekrarları, güvenlik problemlerini, performans sorunlarını ve ileride problem çıkarabilecek noktaları listele. Kod değiştirme."
Önce raporu alın. Daha sonra gerçekten çözülmesi gereken sorunları seçip tek tek düzelttirin.
8. Her hatada projeyi baştan yaptırmayın
Vibe coding sırasında insanı en çok yoran şeylerden biri de bu olabilir.
Bir hata çıkıyor.
AI'a:
"Çalışmıyor, düzelt."
diyorsunuz.
AI bir şeyleri değiştiriyor.
Bu sefer başka bir yer bozuluyor.
Onu düzeltiyor.
Başka bir yer gidiyor.
Bir süre sonra projeyi ilk halinden tanıyamaz hale gelebiliyorsunuz.
Bunun yerine problemi mümkün olduğunca izole etmek gerekiyor.
Bir bug bulduğunuzda AI'a mümkün olduğunca dar bir görev verin.
Örneğin:
"Sadece authentication ile ilgili problemi incele. Authentication dışında hiçbir dosyayı değiştirme. Önce problemin nedenini açıkla, daha sonra çözüm öner."
Hatta daha da ileri gidip:
"Çözüm için değiştirilmesi gereken dosyaları önce listele. Onayım olmadan başka dosyalara dokunma."
şeklinde bir sınır da koyabilirsiniz.
Küçük bir detay gibi görünüyor ama proje büyüdükçe gerçekten ciddi fark yaratıyor.
9. Git kullanın
Vibe coding yapıyorsanız Git kullanmanızı gerçekten tavsiye ederim.
Çünkü AI bazen inanılmaz güzel bir şey yapıyor.
Sonra başka bir özellik istiyorsunuz ve bu sefer daha önce çalışan bir yeri bozuyor.
Git burada hayat kurtarıyor.
Büyük bir değişiklik yaptırmadan önce commit alın.
Benim kullandığım basit mantık:
Bir özellik → test → çalışıyorsa commit
Böylece AI bir sonraki adımda projeyi bozarsa geri dönebileceğiniz temiz bir noktanız olur.
Özellikle database veya authentication gibi kritik bölümlerde bunu atlamamak gerekiyor.
En azından çalışan bir sürüme geri dönebileceğiniz bir noktanız oluyor.
10. AI'a sadece ne istediğinizi değil, neden istediğinizi de anlatın
Prompt konusunda benim en çok faydasını gördüğüm şeylerden biri bu.
Örneğin:
"Dashboard'a grafik ekle."
demek yerine biraz daha fazla bağlam vermek çok şeyi değiştiriyor.
Mesela:
"Dashboard'ın amacı kullanıcının son 30 gündeki performansını tek bakışta anlamasını sağlamak. Bu yüzden grafik gereksiz detay göstermemeli, ana KPI'ı öne çıkarmalı ve kullanıcı grafiğe baktığında hangi aksiyonun önemli olduğunu anlayabilmeli."
dediğinizde AI'ın oluşturduğu şey de değişiyor.
[PHPR]
Prompt yazarken sadece "ne istiyorum?" kısmını yazmayın.
"Bu özelliği neden istiyorum?", "Kullanıcı bununla ne yapacak?", "Başarılı olduğunu nasıl anlayacağız?" gibi bilgileri de verin.
AI'a