15 Dakikada Frontend Yorumu

Ne kadar iyi olsanızda iş görüşmesinde kendinizi anlatabilmeniz işi ne kadar iyi bildiğinizden daha önemli kısımdır. Yazılım sektöründeki diğer uzmanlık alanlarına göre (embeded, desktop, elektronik vs.) bizim alanımızda daha zordur. Web’in kolay ulaşılıbilirliğinden kaynaklanan “msn hekleme maceraları”ndan yetişen, cms/blog kurup kendini yazılımcı olarak gören çok insan var. Dubai’de henüz masanın karşı tarafında bulunmadım fakat bir kaç arkadaştan duyduğuma göre Türkiye’den çok farklı değilmiş.

Sizin farkınızı ortaya koymanız gerekir. “Teknik eleman işe alım süreçleri”ne hakim birisiyle iş görüşmesi yapıyorsanız işiniz daha kolay, seviyenize göre daha mantıklı sorular yöneltilecek, sizi paniğe sürüklemeyecektir. Yaptığım onlarca iş görüşmesinden Senior PHP Developer olarak başvurduğum birinde bana çift tırnak ile tek tırnak farkı sorulmuştu. Yazılımcıda lazım olan bu bilgimidir yoksa hızlı ve doğru algoritma ile kodu spagetti ye götürmeden maintainable çözüm üretmesi midir? Diğer sorularda bundan farklı değildi. Seviyenin üzerinde soru soruluyorsa “bilmiyorum” dersiniz, bu bile bir çözümdür. Fakat seviyenizin altında gelen sorular nasıl bir takım içerisinde çalışacağınız hakkında sizde kötü izlenim bırakacaktır.

Dubai’de bir iş görüşmesinde önce genel müdür ile görüştüm, sonra backend ile ilgili teknik bir görüşme yaptık. Arkasından benden siteyi incelememi ve frontend kısımda neler yapabileceğimizi ertesi gün göndermemi istediler. Aslında en sevdiğim yöntem bana test-case göndermeleridir. Fakat bu yöntem de fena değil. Önünüze bir ürün koyuyorlar ve “hatası ne, neleri geliştirebiliriz” diyorlar. Büyük bir sistemde backend hakkında bir şeyler söyleyebilmeniz için bir süre çalışmanız gerekir. Frontend bu kadar zor değil. Gösterilen siteye 15 dakika göz attım ve aşağıdaki maddeleri çıkarttım. Bu maddelerin bazıları Türkiye’deki bir çok büyük sitede olan eksikler. Frontend kısımda neler/nasıl geliştirilmelidir hakkında belki size bir fikir verir.

Gönderdiğim e-mailden doğrudan copy/paste, çevirmiyorum. Şimdi düşündüğümde bu liste 25 e kadar uzar. Çift yazılanlar var fakat 15 dakika inceleyip, 5 dakikada yazma şartını bozmak istemediğim için listeyi değiştirmek, gramer hatalarını düzeltmek istemedim.

1- Reduce JS / CSS file calls
2- Move all of the inline css/javascript codes to css/js files
3- Get pass all YSlow tests
4- Reduce event binding (Use delegation)
5- Reduce traffic beetween javascript and layout engine.
6- Put all the script tags before closing body tag. (Bottom of the page)
7- Use nonblocking pattern to load javascript files. (asynchronous)
8- No “error tracking code” for frontend errors? How we’ll be notice if someone has an issue in different case? We cant test 10 different OS and 100 different browser.
9- 1 year expire date is too much, it should be determined depends to deployment strategy. It can be cause some problem in some users browser.
10- Write OOP Javascript in module pattern.
11- Prepare a deployment script that it will able automaticly obfuscate and minifiy all js and css files.
12- Use jslint or jshint to improve frontend code quality.
13- Dont use any js line of codes which is invisible by javascript garbage collector. (Firefox using too much memmory because of this)
14- Before start to write js codes, we should write test codes. Use BDD (Behaviour Driven Development)
15- Use module pattern for different part of web pages.
16- jQuery is good for newbie’s, but it is not good for extreme js development. Be careful when you need jQuery!
17- Cache all jQuery selectors.
18- Apply all of the advices in the slide: http://www.slideshare.net/irfandurmus/javascript-performance-optimisation

 

Siz 15 dakikada bir site hakkında neler söyleyebilirsiniz?
Happy Coding!