Front-end Developer Yeterlilikleri

Ülkemizde ayrımı hala net yapılamayan, daimi olarak back-end teknolojileri ile harmanlanmaya çalışılan bir alandır front-end. Bilhassa iş verenler ve proje idarenindeki insanların çok fazla karıştırdıkları, fakat çok iyi bildiklerini sandıklarını bir alandır front-end development. Günümüzde iş müzakerelerinde çok ilgi çekici diyaloglar yaşayınca bu konu ile ilgili toparlayıcı ve bilgi verici bir yazı yazma ihtiyacı hissettim. Emelim ahkam kesmek değil, deneyim ve araştırma neticesi oluşan bilgilerimi paylaşmak. Umarım faydalı bir çalışma olur.

Front-end nedir? Back-end nedir?

Front-end developer tecrübe et kişinin, tam tanımını yapacak olursak, kullanıcının etkileşime girdiği önyüzün (client-side), HTML, CSS ve JS teknolojilerini kullanarak geliştiren kişiye front-end developer (önyüz geliştirici) denir. Back-end developer ise kullanıcının görmediği arka bölümü (server-side), geliştiren kişidir. Back-end teknolojilerinide Python, PHP, Ruby, Java, C#, ASP.NET, MySQL, MS Sql, MongoDB diye özetleyebiliriz. Aslına bakarsanız isimleri üstündedir, front-end başka bir deyişle önyüz, back-end başka bir deyişle arkayüz. Teknolojiler geliştikçe bu iki kavram ortaya çıktı ve giderek kendi aralarında dahi dallanmaya başladılar. Sözgelişi front-end bölümünde CSS Developer, (yada UI/UX Developer) ve JavaScript Developer gibi alt dallar çıkmaya başladı. Back-end bölümünde 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 getiriyor. Böylelikle daha profesyonel projeler geliştirilebiliyor. Zira siz on işi bir kişiye yaptırmak yerine uzmanlığına göre bir yazılımcıya veriyorsunuz böylelikle hem vakitten kazanıyorsunuz hemde çok daha iyi bir iş çıkarmış oluyorsunuz.

Front-end alt kırılımları nelerdir?

Aslında ülkemizde böyle bir kavram daha yok. Tam tersine front-end developer tecrübe et kişiden bunların toplamından daha fazlası hem de çoğu kez kendi işinden çok daha fazlası isteniyor. Mesela bir göüşmede C# yada C++ sorulabiliyor yada Adobe InDesign, CorelDraw gibi tasarım uygulamaları sualliyor. Bunlara verdiğiniz cevap verir bilgilendirme emelli olsa dahi ukala olarak nitelendirilebilirsiniz. Bilmiyorum diyip geçtiğinizde ise yetersiz sayılabilirsiniz. Değneğin her iki ucununda pis koktuğu bu vaziyetten sıyrılmak için kısa ve sathi cevap verir vererek oradan uzaklaşabilirsiniz.

Front-end alt kırılımlarına gelecek olursak;
Front-end Web Developer – Client-side Developer başka bir deyişle kullanıcı tarafının geliştiricisi.
CSS Developer – CSS/HTML Developer olarakda görülebilir.
Front-end JavaScript Developer – Server-side harici tüm JSlerin yazılması işlerine bakan geliştirici
Front-end Software Developer – Software Developmentta front-end bölümü ile ilgilenen geliştirici.
Front-end JavaScript Application Developer – JS uygulamaları geliştiren geliştirici
Web/Front-end user Interface Developer – UI/UX Developer olarak da karşılaşılabilir.
Mobile/Tablet Front-end Developer – Bizde ayrımı olmaya başlayan alan. Mobil alandaki geliştirmeleri yapan geliştirici.
Front-end SEO Expert – SEO alanında uzmanlaşmış geliştirici.
Front-end Accessibility Expert – Erişilebilirlik, kullanılabilirlik ve kolay/hızlı kullanım alanlarında uzmanlaşmış kişi.
Front-end Testing/QA – Front-end testleri, browser kullanılabilirlikleri gibi konularda uzmanlaşmış geliştirici.

Ülkemizde Vaziyet

Tabi bu alt kırılımları ülkemizde daha göremiyoruz ve ne yazık ki uzun vakitte görebileceğimizi sanmıyorum. Zira bizdeki mantık uzmanlaşma değil, bir kişiden olabildiğince çok iş yapabilmesini beklemek üzerine heyetidir. Yapılamadığında yada projede aksama olduğunda ise suallen sualler geliştiriciye yöneltilir; “engelimiz neydi?”, “neden yapamadık?” Aslında meselenin çözümü çok kolay olmasına karşın ya görülmez yada görülmesi istenmez. Standart meseleleri anlatmakla bitiremeyiz bunu çok iyi biliyorum. Ne kadar yazarsak yazalım bunu değiştirmek kolay değildir. Belki bizden sonraki nesiller çok daha değişik bir çalışma ortamına kavuşurlar belki bu tenkit ettiğimiz düzende değil daha doğru koşullarda daha doğru işleri olması gerektiği şekli ile çıkartırlar. Kimbilir göreceğiz belkide göremeyeceğiz bilemiyorum.

front-end-developer-yeterlilikleri-3

Peki istenen teknolojiler ve yeterlilikler nelerdir?

Bu bölümde da yeniden olması şart olan ve ülkemizde olan şeklinde iki kırılım yapmak istiyorum. Zira front-end alt kırılımlarının olmayışındna dolayı, istenen yeterliliklerde değişik bir hal alıyor ve çoğu kez emeli dışına çıkıyor. Düşünülen arayışımızın normal bir front-end developer olduğunu başka bir deyişle midline denilen başka bir deyişle junior bölümünü geçmiş fakat daha senior olmamış, daha deneyime ihtiyacı olan bir developer üzerinden gidelim.

Ülkemizde bir front-end developerdan aranan nitelikler aslında olması şart olan alt kırılımların hepsi diyebiliriz. Bir hayli İK ve şirket sanırım bunları yurtdışı kaynaklı sitelerden yada bloglardan kopyalayıp duyurularına yapıştırıyor. Bir takım müzakerelerde sordukları teknolojiyi yalnızca orda yazıyor diye sorduklarına ve bu teknoloji konusunda en ufak bir fikirlerinin olmadığını gördüm. Ukalalık olarak idrak etmemesi için çoğunlukla anlatmaya çalıştım. Zira yanlışlıkların yada hataların, konuşarak, karşılıklı bilgi vererek çözüleceğini düşünüyorum. Çoğu sefer faydalı olduğuma inanarak müzakereyi bitirdiğimi düşünüyorum, yanılıyorda olabilirim tabiki.

Front-end Developer Yeterlilikleri

Yazılım Dilleri

HTML (XHTML, HTML4, HTML5)
CSS (2.1, CSS3)
CSS Pre-Processors (LESS-SASS-Stylus)
JavaScript
Ajax
Haml
CoffeeScript

Frameworks

Boilerplate
Twitter Bootstrap
PrimeFaces
Foundation
960 Grid
Modernizr
AngularJS
Ember JS
Knockout.js
Meteor
Ext.Js
jQuery
Laravel
Node.js
Django

Kütüphaneler

YUI Library
Dojo / MooTools / Prototype
Backbone JS

Task Runner tools

Grunt
Gulp.js
Yeoman
Bower

Version Control

Git / GitHub
CVS
Subversion
SVN
BitBucket
TFS

Proje görev kontrol uygulamaları

Jira
Trello vb.

Veri

JSON
XML
MySQL
MS SQL

Editör ve IDE

Sublime Text
Notepad++
Brackets
Eclipse
Komoda
TextMate
Atom
WebStorm
PHPStorm
Visual Studio
Netbeans
Dreamweaver
XCode

Tasarım Araçları

Adobe Photoshop, Adobe Fireworks, Adobe Illustrator, Sketch
Web Font Embedding / Licensing
Typography / Font-Services
Icon Font / Sprite Icon
SVG

Server Araçları

FileZilla
FTP
DNS/MX/NS
TCP/IP

Metodlar

OOCSS / BEM / SMACSS (Modüler kodlama)
CSS Grids
CSS Resets
Progressive Enhancement / Graceful Degradation
W3C / WHATWG uyumlu kod yazmak
UX ve UI gereksinimlerinde ihtisas
Website hızı ve performansına uygun kod yazmak
Responsive Web Design
Mobile Web Development
Mobile Web Performance
HTML5 APIs (Canvas, Geolocation, Video, etc.)
Object-oriented Programming (OOP)
Accessibility / WAI-ARIA
Microdata / Microformats
HTML5/CSS3 Polyfills
Scaffolding Programlama
Internationalization / Localization
Content Strategy
Offline Web Apps
Regular Expressions
Fonksiyonel programlama
Regular Expressions
Semantic HTML
Unobtrusive JavaScript
Understanding of Mark-up and CSS validation errors

Debug ve Test2

Developer/Debugging Tools (Chrome Dev Tools, Firebug)
Cross-Browser Bugs and Inconsistencies (primarily IE6-8)
Cross-Browser / Cross-Platform Development
Document Object Model (DOM)
Unit testing
YSlow or PageSpeed

CMS (Muhteva İdare Sistemleri)

WordPress
Drupal
Joomla

Back-end Teknolojilerine tanıdık olmak, projede front-end olarak görev almış olmak

PHP
Python
Ruby
Ruby on Rails
Java
Laravel
ASP.NET
C#

Sosyal Araçlar

Sosyal Medya
RSS Reader (Feedly, Reeder)

SEO ve Google Araçları

SEO
On Page SEO
SEO Arkadaşı Yazılım
Google Analytics
Google Webmaster Tools
Google Places
Google Adwords
Google Adsense
Google Apps

Mobil Development

Sencha Touch
Ionic + Angular JS
jQuery Mobile + Backbone
Kendo UI
React
Zepto.js
Objective-C
Swift
(Her ne kadar front-end alanına girmesede, ülkemizde bir front-end developerdan beklenen kriterler arasına girmeye başladı.)

Ek Özellikler

Bu listeyi dahada uzatmak olası. Hemen hemen her ay yeni bir teknoloji yeni bir kütüphane yada yeni bir framework gelebiliyor. Şayet sizinde ilave etmek istedikleriniz olursa lütfen yazın, güzel bir liste hazırlamış oluruz beraber.
Tabi sadece bu teknolojileri bilmek yeterli olmuyor bu arada kimi özelliklerinizin daha olması gerekiyor. Günümüzde sıklıkla duyduğunuz prezantablmısınız da buna dahil. Buradaki isteklerin birçoğu bencede ihtiyaç duyulan, olmalı lakin alanın dışında istekler biraz enteresan hal alıyor. En belirgin olanlarına ayraç açtım.

HTML5, CSS3 bilgisi olan,

Native JavaScript yazabilen,

jQuery ile ilgili uzman,

Çok iyi derecede kodlama bilgisi,

Çok iyi derecede web tasarım bilgisi,
front-end developerın tasarım konusunda mükemmel olması , o bir yazılımcı tasarımcı değil)


Yeni teknolojileri izlemesi,

Sürüm kontrol sistemlerinden en az birini bilmesi,

Responsive tasarım konusunda tecrübeli,

En fazla duyulan kelimedir responsive peki nalamını tam bilen varmıdır? Genellikle mobil işte denir yada “sayfayı çeviriyon değişiyo, ipadden bakınca da farklı görünüyo ya” denir.

AngularJS, Knockout.js Bootstrap gibi frameworklerde uzmanlaşmış olması,

Birkaç open source projesinin olması,
O kadar geniş zamanımız varki tabiki geliştiririz. Geçim sıkıntısı yada gelecek kaygısı veya hayat kurma vs. gibi dertlerden zati arındık, sürekli olarak boş vakitlerde open source ne geliştirsek de faydalı olsak modundayız.

Git hesabının olması ve projelerini yayınlamış olması,
Her proje Gitte yayınlanamaz ne yazık ki bu istek bana göre doğru değil. Şahsi geliştirdikleri olabilir ancak

Kuvvetli iletişim becerisi ve sunum becerisi olması,
iletişim tabi ki ehemmiyetli fakat sunum becerisi?

Bildiklerini karşı tarafa aktarma becerinine sahip olması,
eğitmen olarak mı kullanacaksınız?

Ekip çalışmasına yatkın olması,

Esnek mesai koşullarına uyum sağlayabilmesi
Bunun manası hiçbir zaman 17:00 yada 18:00 da çıkamayacaksınız! Hususi hayatta neymiş? Şirkette yatın kalkın. Mesai olur tamam ama kronik hale gelmiş mesai çok tehlikeli ve perişandır. Hergün mesaiye kalınmaz, kalınmamalıdır bu insanın kendisine olan saygısını ve yaşamını yitirmesine yol açar. Ülkemizde ki belkide en büyük mesele budur.

Agile tecrübesi olması
Bu konunun ucu çok açık beklenen nedir tam olarak bilmiyorum ve sormaya korkuyorum işin açıkcası.

Test2 süreçlerini bilmesi ve testleri yapabiliyor olması
test2 uzmanı yok sen yapacaksın demektir…

Debug konusunda uzman olması,

Sayfa performansı optimizasyonunu çok iyi bilmesi

SEO konusunda uzman olması
Ülkemizde çok istenir ama tam uzmanlık aslında . En azından kod düzenini ona göre yazabilir dense daha doğru.

Ek özellikler daha bitmedi…

OOP nedir bilmesi ve uygulaması

WordPress, Drupal, Joomla! gibi CMS sistemlerini bilmesi
Wordpress hadi neyse ama diğerleri back-end bölümüne daha yakındır bütünüyle bilmekde .

Çok iyi derecede ingilizcesinin olması,
ingilizce koşul evet ama araştırma için mi? toplantılarda şirketi temsil etmesi için mi? İşin daha acayibi front-end develoepr müracaatlarında ingilizce mülakatlara girebiliyorsunuz. On yıldan fazladır çalışıyorum bu alanda ve yurtdışına şahsi olarak yaptığım işler, birkaç eğitimimde ve yurtdışı yolcularım dışında ingilizce konuşmadım yada yazışmadım. Tabiki çok ehemmiyetli ona birşey demiyorum ama x bir şirkette front-end olarak çalışırken araştırma dışında gerekli olacağını yada bir kriter, olmazsa olmaz bir gereklilik olarak sunulmasını yanlış buluyorum.

Araştırma yapan bir karaktere sahip olması,
Her insandan işini sevmesini bekleyemessiniz şayet insan işini severek yapıyorsa zaten araştırır. Ama sen o kişiye sürekli mesai yaptırırsan o kişi hem işten hem şirketten hemde hayattan çok hızlı bir şekilde soğumaya başlar…

Çok iyi derecede Photoshop bilgisi
Çok iyi Photoshop bilen kaç kişi tanıyorlar merak ediyorum. Yada Photoshop nasıl bir programdır? kimlerin işine fayda? neler yapar? Front-end bir kimse tasarımcıdan gelen PSD yi parçalayıp istediği alanları kullanabiliyorsa yeterlidir, çok iyi derecede olması gerekmiyor. Ayrı olarak bu Photoshop bilgisi bir müddet sonra, “Sende Photoshop heyetiydi değil mi? Şu arayüze şunu şunu ilave etmemiz gerekiyor, birde şu tasarımıda yaparmısın? Şuraya bi buton koymamız gerekli” vs. devam eden istekleride beraberinde getiriyor.

Web arayüz geliştirmesinde etkin rol almış

Bu ne demek tam çözebilmiş değilim inanın 🙂

Crossbrowser çalışmalarında problem yaşamayan
Problem kesinlikle olur, neticede geliştirme yapıyoruz. Tarayıcı sorunlarını çözebilen desek daha doğru sanki. Tabi burda birde tarayıcı sapıkları var yok “chrome kullanıyormusun? chrome kraldır, çok iyidir en büyük chromedur” yada “ie kullanmalısın heres onu kullanıyor, tüm testleri ie de yapacaksın” gibi enteresan diyaloglarda çıkıyor. Testler her tarayıcıda yapılmalı tamam hatta ie8 e kadarda inilebilir o nda tamam ama gerçek bir tarayıcı kullanacaksam o Firefox olur, diğerleri yalnızca teferruat olarak kalır… Alın bir tarayıcı sapığı daha 🙂

Yaratıcı, hızlı iş üreten, tasarım gözü olan
Hem yaratıcı hem hızlı iş üreten olması o kişinin mükemmel olduğu mananına gelmez, yaratıcılık ile hızlı iş üretme vakte bağlı olup, ters grafiğe sahiptir. Ayrı olarak neden yaratıcı? Art director mü alıyoruz? Front-end tabiki kendinden birşeyler ilave eder ona birşey demiyoruz fakat yaratıcı ve hızlı iş üretmesi ne demektir? Tasarım gözü konusuna hiç girmiyorum… Sauronun gözü gibi birşey herhalde.

C#, C++, ASP.NET konusularında tecrübeli, bilgi sahibi ve proje geliştirmiş
Fatal error dediğimiz bölüm bu sanırım… Söylenecek birşey yok, bizzat yaşadım mübalağa filan değil isteniyor bir takım vakit.

MS SQL, MySQL, Mongo DB konularında uzmanlaşmış
Bir gün gelecek Oracle da göreceğiz buna inanıyorum! Peki şaşırırmıyım? Tabiki hayır…

MVC ile ilgili uzmanlaşmış
Tabi ben zati safkan bir kırmayım, bir yanım back bir yanım front neticede Modülüde alırım, View zati bende, Controllerıda yazarım artık nedir ki neticede?

SVG ile ilgili uzman
Scalable Vector Graphics’in açılımı olan SVG bir dosya uzantısıdır ve JPG, PNG vb uzantılı dosyalar gibi kullanılabilir başka bir deyişle bir yazılım dili değildir. Ha SVG tertip etsin diyorsanız bir vektörel dosya açma kabiliyetine sahip programla açılır tertip edir.

Daha bir hayli istek var buraya yazmakla bitirmem olanaksız. En göze çarpanları yazmaya çalıştım.

front-end-developer-yeterlilikleri-2

Ülke dışı duyurularda arananlar

Bizden en büyük farkları uzmanlaşmaya verdikleri ehemmiyet olduğundan, ülke dışında duyuru veren firmalar İsveç çakısı değil, alanında uzmanlaşmış, işini seven ve severek yapan, mesuliyet nedir? iş ahlakı nedir bilen kimseler arıyorlar. Genelde karşılaştığım istekler şu şekilde;

HTML5, CSS3, Ajax, JSON/XML
Bu teknolojiler zaten front-end development için olmazsa olmaz bunları aradıkları kişideki tecrübeye göre çok iyi yada iyi olarak değiştiriyorlar.

Object Oriented JavaScript

AngularJS – Backbone.js – jQuery – Knockout.js – ember.js
Hepsini değil sadece birinde uzmanlaşmış olması yeterli. Firmanın kullandığı teknolojiye göre içlerinden biri isteniyor.

WordPress sistemini kullanmış olması
Çok fazla olmasada seyrek rastlanıyor. En azından heyetimi yapıp, bir temayı uygulayıp, üzerinde farklık yapabilmeli tecrübe ediyor.

Basic SEO bilgisi, SEO uyumlu kod yazma

Git yada farklı bir sürüm kontrolü bilmesi
Genellikle Git isteniyor, bazı ilanlarda ise BitBucket ve TFS var.

W3 standartlarında kod yazabiliyor olmak

Belki de en fazla önem verdikleri bu. İngiltere’de bir firma için yaptığım işlerde bunu baş şart olarak koymuşlardı. Online testlerini yapmamı ve linklerini paylaşmamı istemişlerdi. Tabiki sonrasında kendileride testler yapıyorlardı. Eğer bir sayfa W3 standartlarını geçememiş olursa bu sayfayı kabul etmiyorlardı ve işi geri çeviriyorlardı. Türkiye’de çok fazla site yaptım, yüz siteyi geçmişimdir net bir defa bile W3 ile ilgili bir konuya eşit gelmedim.

Google araçlarını kullanmak
Google ürünlerini kullanmanızı istiyorlar places, analytics, adwords, webmaster tool gibi

Performanslı kod yazma
Buna çok önem veriliyor zira sayfaların hızlı açılması çok önemli

Asgari 2 sene tecrübe front-end alanında

Bilmeniz halinde plus olacak özellikler ise;

UI ve UX konularında tecrübe
Python, Ruby, ASP.NET vb. back-end teknolojilerinin kullanıldığı projelerde front-end developer çalışmış olmak
Front-end development testleri konusunda deneyimli olmak
Agile ile ilgili bilgili olmak
PSD dosyasında tertip etme yapabiliyor olmak
SEO ile ilgili uzmanlaşmış olmak
Mobile development alanında bilgili olmak
Hybrid teknolojileri kullanmış olmak

Ehemmiyetli Farklar

Yurtdışı proje geliştirme deneyimlerimde gözüme çarpan en büyük fark düzen idi. Projenin bir düzeni ve bölümleri çok netti. Yapacağınız işi biliyorsunuz, şart olan zamanlamayı konuşarak veriyorsunuz ve istekleri işe başlamadan önce konuşuyor ve netleştiriyorsunuz. İş bittikten sonra abuk ve subuk olarak adlandırılan istekler gelmiyor. Şayet bir revizyon olacaksa bu ek iş olarak hesaplanıyor ve fiyatlandırılıyor. Sizin ne iş yaptığınızı hangi alanlarda uzman olduğunuzu biliyorlar ve size alanınızdan değişik bir istekle gelinmiyor. Tabi her yurtdışı firma için bu geçerli değil. Türkiye’deki firmalar gibi çalışanlarıda eşit gelebiliyor. Fakat genelleme yapacak olursak birkaç noktada ileride olukları kısımlar var ve bence en ehemmiyetlisi uzmanlaşma ve insanların hususi hayatına ehemmiyet verme. Bu iki nokta hemen hemen hepsinden ehemmiyetli diye düşünüyorum. Bir gün ülkemizde de görmeyi umuyorum.

Şunları da beğenebilirsin:

Web Uzmanları için 20 Forum
3ds Max için Bilgisayar Tavsiyesi
Spam SMSlerden nasıl kurtulurum?
Instagram alışveriş platformuna dönüşüyor
Google Pixel 2 tanıtıldı! İşte ayrıntılar!
Yerli Arama motoru diye tanıtılan Yaani altyapısını Yandex'ten alıyor.
WhatsApp İnternetsiz Nasıl Kullanılır?
2040 Yılına Kadar Benzinli Arabaları Yasaklayacak Ülkeler
Elon Musk Merakla Beklenen Elektirikli Tırları Tanıttı ve Bir De Sürpriz Yaptı
Boston Dynamics Tarafından Geliştirilen 3 Yeni Robot
Akvaryum, Şömine Videosu, Kanalı
FM Radyo Frekansları - Güncel Frekans Listesi
Amazon Türkiye Pazarına Giriyor!
Telefonum Yavaş Nasıl Hızlandırabilirim?
Telefonu Hackleme Nasıl Engellenir?
Bitcoin Nedir? Bitcoin Nasıl Üretilir? Nereden Alınır?
Bitcoin Satın Almak
Yasak Sitelere Kolay Yoldan Giriş (VPN, DNS)
Kod Bilmeden Mobil Uygulamanızı Yapın!
Facebook Otomatik Video Oynatma Kapatma
Facebook İletilerini ve Tweetleri Toplu Silmek
İnsanlar Neden İnternetten Sipariş Verir?
Arama Motorları İlk Sayfada Çıkma ve Tıklanma Oranları
Tasarımcıya İhtiyaç Duymadan Kendi Logonuzu Yapın
İngiltere’den Bitcoin Kararı!
Her Şeyi Pratik Bir Şekilde Görebileceğiniz Google Analytics Raporları
5000 TL’ye En İyi Laptop Hangisi?
Vodafone, Turkcell, Türk Telekom Saklı Numara Engelleme
En İyi 10 Laptop Markası (2018)
Tesla Model S Araçla Kripto Para (Bitcoin) Madenciliği!

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.