Full Stack Developer nedir? konusuna giriş yapmadan önce frontend ve backend terimlerinin de açıklanmasının yerinde olacağını düşünüyorum..
Günümüzde web teknolojilerinin çok hızlı bir şekilde gelişiyor olması ve bu teknolojilere büyük oranda talebin artması sonucu sektörde yeni sınıflandırmalar ve tanımlamalar ortaya çıkmıştır. Aslında kavramlar yeni olsa da geçmişte tüm bir yazılım projesini tek başımıza sonuçlandırmaya alışıktık. Sadece günümüzde geçmişe oranla daha çok detaylı, büyük alt yapılara sahip ve kapsamlı web sitelerine ihtiyaç duyulmasından dolayı, iş yükü büyük oranda artmıştır.
Bu sebeple bu iş yükünü farklı kollara bölerek hem zamandan tasarruf sağlamak hem de her biri kendi alanında uzman kişiler ile daha sağlıklı projeler üretmek istenmiştir. Bu nedenle Frondend ve Backend kavramları ortaya atılmış ve hatta bunlarda alt kategorilere ayrışmıştır.
Teknolojiler geliştikçe bu iki kavram ortaya çıkmış ve zaman içerisinde kendi aralarında da dallanmaya başladılar.
Örneğin : front-end kısmında CSS Developer, (yada UI/UX Developer) ve JavaScript Developer gibi alt dallar çıkmaya başladı.
Back-end kısmında ise Database Developer, Java Developer yada Software/Application Developer gibi alt kırılımlar oluşmaya başladı. Her iki alanda bulunan alt kırılımlar aslında uzmanlaşmayı beraberinde getirmektedir.
Frontend ve Backend nedir?
Frontend: Frontend’in Türkçe karşılığı “Önyüz”dür. Yapılma aşamasındaki bir web sitesinin ön yüzünü (client-side) (kullanıcı tarafı) HTML, CSS ve JavaScript gibi teknolojileri kullanarak web sitesinin görsel tarafını oluşturan kişilere front-end developer ( Ön yüz geliştirici ) denir. Web sitesinde kullanılacak renkler, içeriklerin yerleşimi, yazı tipinin seçilmesi ve uygulanması gibi kullanıcının ekranda gördüğü tüm tasarımı ortaya koyan kişidir.
Backend: Backend’in Türkçe karşılığı “Arkayüz”dür. Kullanıcıların görmediği arka yüz (Server-side) geliştiren kişidir. Yani sistemin mimarisini oluşturan, veri tabanı yönetimini planlayan, sunucu ayarlamalarından sorumlu, sistemin maksimum seviyede verimli ve hızlı çalışmasını sağlayan kişidir. Back-end teknolojilerinide Python, PHP, Ruby, Java, C#, ASP.NET, MySQL, MS Sql, MongoDB vs…diye özetleyebiliriz.
Full Stack Developer
Full Stack Developer, (Tam Yığın Geliştirici) web uygulamaları veya yazılım geliştirirken bu yazılımın hem Front-End (Başlangıç aşaması / Önyüz) hem de Back-End (Arka yüz) kısmını geliştirecek donanıma sahip olan geliştirici profilidir. Full Stack, geliştirme aşamasında kişinin her iki tarafta da yer alabilecek kadar donanımlı ve kendini bu konular hakkında geliştirmiş olması anlamına gelmektedir.
Full Stack geliştiriciler yazılımların hem ön planı hem de arka planında çalışabilirler. Bu nedenle kendini bu unvan ile tanıtan geliştiriciler yalnızca yazılım değil, aynı zamanda yazılımla ilgili başlıca alanlarda da bilgi sahibidirler.
Örneğin bir Full Stack geliştirici PHP ve MySQL kullanarak web uygulamasını yazabilir, bu uygulamayı HTML, CSS ve JavaScript kullanarak görsel olarak şekillendirebilir son aşamada da bu yazılımın sunucu üzerinde sorunsuz çalışmasını ve güvenlik önlemlerinin alınmasını sağlayabilir.
Bir yazılımın geliştirilmesi aşamasında hem Front-End hem de Back-End kanadında görev alabilen geliştiricilerse Full Stack Developer oluyor. Full Stack Developer, bir yazılımı meydana getirirken bu yazılımın altyapısını kendisi tasarlayabildiği gibi kullanıcıların göreceği tasarım bölümünde de görev alarak yazılımları geliştirebilir.
Bilişim sektöründe her geçen gün şirketlerin beklentileri daha da yükseliyor. Artık işletme sahipleri Front-End ve Back-End bölümünde ayrı ayrı çalışacak iki farklı eleman yerine her ikisini de halledebilecek kadar kendini geliştirmiş çalışanlara yani Full Stack Developer’lara yöneliyor. Dolayısıyla Full Stack Developer’lar hem daha uygun iş fırsatları ele geçirebiliyor hem de tek alanda çalışan kullanıcılara göre kısmen dolgun maaş fırsatına sahip olabiliyor.
Elbette Full Stack Developer olmak dışarıdan görüldüğü gibi kolay değil. Bu tip geliştiricilerin kendini ciddi manada geliştirmesi ve alanına hakim olması, bolca yazılım dili ve Framework bilmesi gerekiyor. Full Stack Developer safında yer alan geliştiriciler küçük ölçekli projelerde kilit adamlar haline gelirken bir ekip çalışması veya büyük geliştirme ekiplerinde işlevsiz hale gelebiliyor. Büyük geliştirici ekiplerinde zaten yazılımların ön ve arka planını geliştirecek uzman kişiler yer alıyor. Böylesi durumlarda kişiler Full Stack olmasa dahi ekibin kendisi Full Stack olabiliyor. Daha küçük çaplı projelerdeyse Full Stack geliştiriciler birincil tercih sebebi haline geliyor.
Bu geliştiricilerin her iki alanda da tam olarak uzman olmasını beklemek pek olası bir iş değildir. Bir Full Stack Developer, Front End kısmı üzerindeki çalışmalarda oldukça başarılıyken veri tabanı üzerindeki çalışmalarda yetersiz kalabilir. Yine bunu da genel eleman olmanın dezavantajı olarak gösterebiliriz.