Frontend Developer Olmak
Yazılım öğrenmeye çalışan arkadaşların en fazla kafasını kurcalayan ve internette ilk aradığı kelimelere baktığımızda şunları görmekteyiz.
Yazılıma ve programlamaya nereden başlamalıyım, frontend nedir ve nasıl öğrenilir, front end developer (önyüz geliştirici) nasıl olunur, web developer nasıl olunur, hangi programlama dilini öğrenmeliyim, kodlama dilleri nelerdir, yazılım nasıl öğrenilir, javascript nasıl öğrenilir, Vue js nasıl öğrenilir, Html nasıl öğrenilir, Css, scss, sass nedir nasıl öğrenilir vs.
İşte bu yazının yazılma amacı yazılım öğrenmek ve özelinde frontend developer olmak isteyen her bireye bir yol haritası çıkarmaktır. İnternette araştırıldığında çok farklı yazılım öğrenme yöntem ve tavsiyesi görülmektedir. Biz de bu kapsamda Maraş Teknoloji Üssü olarak, özellikle Akdeniz, İç Anadolu, Doğu Anadolu ve Güneydoğu Anadolu bölgelerinde yaşayan veya okuyan fakat yazılım öğrenme konusunda kaynak sıkıntısı çeken gençlere ışık tutmayı amaçlıyoruz.
Bilgisayar ve yazılım mühendislikleri ucu bucağı olmayan dallara ayrılmaktadır ve birçok insan farklı alanlarda çalışmaktadır. Fakat bu yazı ile sizlere çok daha hızlı, çok daha kolay elde edilebilir ve herhangi bir diploma şartı olmayan yol haritası sunulacaktır.
Yazıya giriş yapmadan önce mutlaka not düşmememiz gereken bir husus vardır. Yazılım öğrenen çoğu insanda yaşanan bir kırılma noktası olur ve bu süre genellikle iki hafta sürer. Diğer bir deyişle yazılıma başlayan birçok kişi yaklaşık iki veya üç ay sonra kodlamaya havlu atıp bırakmak ister, çünkü öyle bir an vardır ki kodlar karmaşık gelmeye başlar. Fakat bu süre zarfında azimle bir hafta daha çalışılırsa o mukavemet kırılır ve artık yazılım konusunda en heyecanlı ve güzel zamanlar başlar. Bu nedenle çok bunalabileceğiniz ve yapamayacağım galiba diyeceğiniz bu zorlu hafta azimle atlatılmalıdır.Yazımızın başlıkları şunlardan oluşacaktır.
- Neden Yazılım veya Bilgisayar Mühendisliği?
- Yazılım dili veya kütüphanesi öğrenme yöntemleri nelerdir?
- Mobil ve Web Yazılım neden ilk adım olmalı?
- Mobil ve Web Yazılım teknolojileri nelerdir?
- Yazılımda dünyadaki trendler nelerdir ve yazılım öğrenmeye nasıl başlanmalıdır?
- Frontend öğrenme sırası nasıl olmalıdır?
- Nesneye Yönelimli Programlama (OOP) nedir ve neden önemlidir?
- Html ve Css nedir ve nasıl öğrenilir?
- Javascript nedir ve nasıl öğrenilir?
- Vuejs nedir ve nasıl öğrenilir?
- GIT nedir ve nasıl öğrenilir?
- Bilinmesi gereken önemli teknolojiler nelerdir?
- Hangi noktadan itibaren iş başvurularında bulunabilirim?
- Hangi iş yerlerine veya şirketlere başvurmak doğru olur?
- Yazılım dünyasında öne nasıl geçebilir ve kariyer yapabilirim?
- İyi bir yazılımcı hangi niteliklere sahip olmalıdır?
Diğer mühendisliklere göre yazılım mühendisliğinin şöyle artıları vardır:
- Yazdığımız her şey dizimizin üzerinde olduğundan dolayı bir ürünün veya hizmetin çıktısını hemen alabiliyoruz. Özellikle frontend alanında bu özellik kendini çok daha belirgin hale getirir.
- Diğer meslek dallarına veya mühendisliklere göre çok daha az maliyetlidir.
- Sonuç elde etmek çok hızlıdır. Bir inşaat mühendisi için yıllar gerektiren iş bir yazılımcı için sadece günler gerektirir.
- Kendi şirketinizi kurmak isterseniz çok fazla bir maliyet gerektirmez. Sadece bilginiz ve bir adet bilgisayar ile yüksek miktarlarda gelir elde edilebilir.
- Dünyanın neresine giderseniz gidin bildiğinizi kullanarak aynı işi yapabilirsiniz.
- Çok kolay öğrenilebilir. Normal bir meslek sahibi olmak için uzun yıllar okumak, sınavlara girmek vb. gerekirken yazılım için kısa bir süre ayırmak meslek edinmek için yeterlidir. Udemy/YouTube/Coursera gibi yerlerden öğrenerek maksimum 45-50 saatlik bir kurs ile temel seviyede bilgi sahibi olunabilir.
- Öğrenme maliyeti yoktur. Öğrenmek konusunda internette milyonlarca ücretsiz kaynak bulunabilir.
- Yazılımla ilgili üniversite okumak elbette birikim ve önbilgi açısından faydalıdır fakat yazılımcı olmak için üniversiteli olma şartının olmadığını da bilmek gerekir.
Yazılımda sürekli bir yenilik çıktığından dolayı yazılımı kitaplardan öğrenmek artık çok zordur ayrıca sıkıcıdır. Teknolojide 6 ay bile çok uzun bir süre olduğundan dolayı şu an öğrenilen bir bilgi 6 ay sonra çok eski bir bilgi haline gelebilir. Bu yüzden yazılım öğrenirken ağırlıklı olarak internet kullanılmalıdır. Video izlemek, doküman okumak, kod pratiği geliştiren siteleri kullanmak en sağlıklı yöntemdir ve çok faydalı olacaktır.
Yukarıda da belirmiştim. Bilgisayar bilimleri çok geniş bir alandır. Herkes farklı bir yol tutabilir. Ancak bu yazıda gelir getirmeye kolayca başlayacağınız, aynı zamanda son teknoloji kullanılan, geleceği de parlak olan bir yol çizilecektir.
Yazılımda güzel olan, motive eden şey yaptığın ürünün karşılığını hızlıca görmektir. Mobil ve web programlama da bunlardan bir tanesidir. Bu alanda hızlıca sonuç alınabilir. Günümüzde halen masaüstü uygulamaları kullanan alanlar olmakla beraber, yazılımın geleceği internet üzerinden ilerleyecektir. Bu nedenle mobil ile web yazılım en hayati, en önemli ve en gelecek vadeden alan olarak görülmektedir.
Mobil ve web yazılım dilleri ve teknolojileri çok fazladır. Fakat burada en fazla kullanılanlar yazılacaktır.Web
- Html, Css, Scss, Javascript, Jquery
- Asp.Net
- ReactJS
- VueJS
- AngularJS
- Java (sadece Android)
- Kotlin (sadece Android)
- Swift (sadece iOS)
- React Native
- Flutter
Yukarıdakiler Frontend olarak geçer. Ancak frontend alanı backend ile iletişim kurmak durumunda olduğu için aşağıya backend için kullanılan teknolojileri de önbilgi olması maksadı ile yazmamız faydalı olacaktır.
Yine çok fazla backend dili ve kütüphanesi vardır. Burada yaygın olanlardan bazıları sıralanmıştır.
- Php, Laravel
- ExpressJs
- Python, Django
- Java Spring
- C#, .Netcore
- Nodejs
- Golang
Öncelikle yazılım konusunda dünya ne yapıyor ve hangi alana ilgi duyuyor ona bakmak gerekir. Daha sonra yaşadığımız coğrafyada en fazla ihtiyaç hangi alanda onu göz önünde bulundurmamız gerekir. Aşağıda tüm yazılımcıların kullandığı stackoverflow 'un yaptığı anket sonuçları vardır. Bu ankete baktığımızda dikkatimizi çeken bazı istatistikler şunlardır.
- Yazılımcıların %40’ı bilgisayar veya yazılım mühendisliği mezunu değil.
- Yazılımcıların %60’ı kodlamayı online bir kurs alarak öğrenmiş. (Udemy/youtube vs.)
- Yazılımcıların en fazla kullandığı diller arasında %65 ile javascript birinciliğini yıllardır korurken ikinci sırada %56 ile html ve css gelmektedir.
- Yazılımcıların en fazla kullandığı araçlar arasında %94 ile git birinci sırada iken %49 ile docker ikinci sırayı almış görünüyor.
- Yazılımcıların en fazla tercih ettiği Text Editör ise %71 ile VSCode’dur
- En sevilen framework olarak ise %72 ile svelte bulunmaktadır. Vuejs ve Reactjs de en fazla sevilen frameworkler arasındadır.
- Yazılımcıların %54’ü ilk kodlamaya 11-17 yaşları arasında başlamaktadır.
Yukarıdaki bilgelere de bakıldığında yazılım öğrenmek isteyen herkesin en fazla kullandığı ve kullanmak zorunda olduğu diller öncelikle frontend dilleridir. Bu yüzden yazılıma başlama sürecinde frontend dillerini öğrenmiş olmak çok büyük bir katkı sağlayacaktır.
Özellikle birçok şirketin aradığı kalifiye eleman olabilmek için Javascript dilini bilmek gerekirken Vuejs veya ReactJs gibi yazılım dillerinden bir tanesini iyice öğrenmek kişisel gelişime büyük katkı sağlayacaktır. Zaten VueJs gibi frameworklerin ortaya çıkması çok eski zamanlara dayanmadığından dolayı ben 20 yıllık Vuejs yazılım uzmanıyım diyebilecek kimse bulunmamaktadır. Bu nedenle 1 veya 2 yıl gibi çok kısa bir sürede ileri seviyede Vuejs bilen bir yazılımcı olunabilir.
Tüm bunlar ışığında baktığımızda kısaca ilerlememiz şu şekilde olabilir.
- Java, C#, PHP gibi dillerden birisi ile Nesneye Yönelimli Programlama (OOP)
- HTML ve CSS
- Javascript
- VueJs
- Git
- Genel algoritmik kodlamalar (leetcode vb.)
Frontend için neredeyse birçok kaynak kodlamaya HTML ve CSS’le başlamamızı söyler. Fakat yazılımda en önemli noktalardan birisi, nesneye yönelik programlamayı (OOP) öğrenmektir. Basit seviyede de olsa nesneye yönelik programlamayı PHP, C# veya Java gibi bir dille öğrendikten sonra zaten Javascript’in çok kolay olduğu anlaşılacaktır. Birçok dilin yapısı birbirine benzediği için C# veya PHP gibi herhangi bir dili öğrenen kişinin Python gibi farklı bir dili basit seviyede öğrenmesi en fazla bir ayını alacaktır.
Nesneye yönelik programlamayı öğrenirken veri tipleri ve değişkenler, switch case yapısı, while for gibi döngüler, metotlar, classlar, arraylar, objeler, inheritance gibi temel kavramları öğrenmek ilk aşama için yeterlidir. Bir çevrimiçi kurs satın almak veya Youtube’dan bir video izlemek, sonrasında da kendi bilgisayarınızda bunları denemek başlangıç için güzel bir yöntem olabilir.
HTML ve CSS öğrenmek için Udemy kursuna bile gerek olmayabilir. Çünkü hem çok kolay hem de Youtube veya internette milyonlarca kaliteli kurs bulunmaktadır. w3schools sitesinden de istifade edilerek HTML ve CSS öğrenilebilir. İçerik olarak da HTML Forms dâhil olmak üzere çalışmak yeterli olacaktır. Sonrasında da yazdığımız kodlara stiller verebilmek için CSS’i de öğrenmemiz gerekmektedir. Bunun için de yine HTML ile benzer yöntemler kullanılabilir.
HTML ve CSS’i bitirdikten sonra Javascript’i de w3schools adresinden veya Youtube gibi video sitelerinden rahatlıkla kurs takip ederek öğrenebiliriz. W3school da JS Form'a kadar öğrenmek ilk aşama için yeterli olacaktır. Javascript’i öğrenip öğrenmediğinizi test etmek için bir tane ToDoList yapmanız çok iyi bir yöntemdir.
Öncelikle Vuejs dünyası sürekli gelişmektedir. Javascript’i de bitirdikten sonra artık asıl eğlenceli kısım olan VueJs (veya benzer şekilde ReactJs, AngularJs de olabilir) öğrenmeye başlanılabilir. VueJs gibi frameworkler sürekli geliştirilen teknolojiler olduklarından güncel kurslar almaya özen gösterilmelidir. Framework öğrenirken dokümantasyon okuyarak birçok şey öğrenilebilir. Bununla birlikte bir videolu kurs almayı mutlaka düşünmek gerekir. Çünkü genellikle videolu kurslarda proje örnekleri yapılır. Bu esnada backend ile bağlantı kurmak gibi ufkumuzu açacak kazanımlar da elde etmiş oluruz.
Git yazılım geliştirme süreçlerinde kullanılan, hız odaklı, dağıtık çalışan bir sürüm kontrol ve kaynak kod yönetim sistemidir. Yazdığınız kodların geçmişini tutan, birden fazla kişinin aynı anda aynı proje üzerinde çalışmasını sağlayan sistemdir. Frontend veya backend alanındaki bir yazılımcının git ve github kavramlarını ve komutlarını mutlaka bilmesi gerekmektedir. Bir veya iki günde kabaca öğrenilebilir.
Bu anahtar kelimeleri internetten aratıp ne olduğunu teorik dahi olsa öğrenin. Çünkü ileride doğrudan kullanılabilecek şeylerdir.
- Ecmascript
- Api
- Restful Api
- Dıgıtal ocean, Heroku, aws
- Docker
- Vuejs, Reactjs, Angularjs, Svelte
- Nodejs
- Express js
- Npm, Yarn
- Skecth, Figma, Avocode, Zeplin
- Vscode
- Postman
- Trello, Jira
- Flutter
- Sql ve Nosql arasındaki fark nedir
- Firebase
- Git, Github
- Bootstrap
- Normalize css ve reset css arasındaki farklar nelerdir
Java, c#, ptyhon veya php ile nesneye yönelimli programlamayı mantıken de olsa kavramışsanız, HTML ve CSS öğrenmişseniz, Javascript konusunda W3school’da JS Form’a kadar öğrenmişseniz, VueJs temel kursu almışsanız ve GIT nasıl kullanılacağını biliyorsanız, teorik olarak yukarıda yazılan teknolojilerin ne olduğunu biliyorsanız iş başvurularında bulunabilirsiniz.
İş başvurularınızın sağlıklı değerlendirilebilmesi için yaptığınız uygulamaları Github’ınıza yüklemeniz faydalı olacaktır. Ayrıca bu yaptığınız uygulamaların canlı bir ortamda görülebilmesi için heroku gibi platformlara veya github pages’a deploy edilmesi de olumlu bir katkı sağlayacaktır. Orada yazdığınız kodların mülakat esnasında size sorulması çok yüksek bir ihtimaldir. Bunun haricinde de o anda gelişen bir durumla mülakatta canlı olarak kod yazmanız da istenebilir.
Hem algoritmik problem çözme yetinizin gelişmesi açısından, hem de büyük şirketlerin soru sorma ihtimaline karşı başta leetcode olmak üzere hackerrank gibi challenge sitelerindeki soruları çözmek faydalı olacaktır.
Bildiğiniz dilleri ve teknolojileri, Udemy veya başka alanlarda aldığınız sertifikanız varsa onları da ekleyerek Linkedin’a kayıt olmak iş bulma sürecinde avantaj sağlayacaktır. Sonrasında başvurmak istediğiniz şirketin insan kaynaklarına doğrudan iş aradığınızı yazabilir veya iş ilanlarına başvurabilirsiniz.
Başlangıç için iş başvurusunda bulunulabilecek en iyi yerler start-up şirketler veya bünyesinde start-up barındıran şirketlerdir.
Start-up’lar genelde ya şirkettir ya da şirket olmadan önceki aşamada ürününü geliştiren; gelişime, değişime açık yerlerdir. Genellikle üniversite içerisinde bulunan teknopark veya teknokentlerde bulunurlar. Startup şirketlerde veya bünyesinde startup barındıran şirketlerde tüm yapıyı görme ve kendinizi geliştirme imkânı bulmanız çok daha fazla olacaktır. Çünkü gelişime ve Arge’ye açık bir şirket olduğu için daha fazla sorumluluk alır, daha fazla öğrenmek zorunda kalırsınız. Yazılım ile ilgili soruları soracağınız insanlar çok olur.
Yazılım dünyasından önde olmak için sürekli takipte olmak gerekir. Sürekli olan biteni takip etmek, kendi alanımızla ilgili kitaplar, dokümantasyonlar okumak gerekir.
Bunlar için twitter, reddit, medium vs. kullanılarak önemli yazılımcılar ve konular takip edilebilir. Kodlama, temiz kod yazma veya yazılım dünyası geneli ile ilgili çok fazla kaynak vardır.
Yazılım dünyasından önde olmak için sürekli takipte olmak gerekir. Sürekli olan biteni takip etmek, kendi alanımızla ilgili kitaplar, dokümantasyonlar okumak gerekir.
- Yazdığı kodun temiz ve okunulabilir olması gerekir. (Clean Code)
- Yazdığı kodun testinin de yapar.
- Takımı ile bütündür. Birlikte hareket eder.
- İletişim kurmayı sever.
- Teknolojik gelişmelerden her zaman haberdardır.
- Algoritma, Data Structure, Operating System gibi bilgisayar bilimlerindeki teorik şeyleri bilir.
- Zaman ve görev yönetiminde iyidir.
- Hızlı öğrenme yeteneği vardır.
- Gelişime sürekli açıktır.
- Bahane üreten bir kişi değil, çözüm üreten bir kişidir.
Artık iyi bir frontend developer olmak için yol haritamız hazır. Bu yüzden yarına ertelemeden youtube veya udemy üzerinden ilk kurs hemen alınmalıdır. Eğer aranan insan haline gelinirse iş aramak için uğraşmaya bile gerek yoktur. Çünkü sizleri şirketine katmak için bekleyen onlarca şirket ve startup bekliyor olacaktır. Yeter ki kalifiye, takım çalışmasına yatkın, gelişime açık ve bilgili olalım.
Eğer kendinizi yeterli seviyede hissederseniz herhangi bir şirkete iş başvurusunda bulunabilirsiniz. Maraş Teknoloji Üssü'ndeki firma ve start-up'ların birinde çalışmak için de buradan mail atarak gönül rahatlığı ile iş başvurusunda bulunabilirsiniz.
Hüseyin DAŞCI Frontend Developer
- Frontend Developer Olmak
- Neden Yazılım veya Bilgisayar Mühendisliği?
- Yazılım dili veya kütüphanesi öğrenme yöntemleri nelerdir?
- Mobil ve Web Yazılım neden ilk adım olmalı?
- Mobil ve Web Yazılım teknolojileri nelerdir?
- Yazılımda dünyadaki trendler nelerdir ve yazılım öğrenmeye nasıl başlanmalıdır?
- Frontend öğrenme sırası nasıl olmalıdır?
- Nesneye Yönelimli Programlama (OOP) nedir ve neden önemlidir?
- Html ve Css nedir ve nasıl öğrenilir?
- Javascript nedir ve nasıl öğrenilir?
- Vuejs nedir ve nasıl öğrenilir?
- GIT nedir ve nasıl öğrenilir?
- Bilinmesi gereken önemli teknolojiler nelerdir?
- Hangi noktadan itibaren iş başvurularında bulunabilirim?
- Hangi iş yerlerine veya şirketlere başvurmak doğru olur?
- Yazılım dünyasında öne nasıl geçebilir ve kariyer yapabilirim?
- İyi bir yazılımcı hangi niteliklere sahip olmalıdır?