Bu yazı özellikle web yazılımcısı olmayı planlayan arkadaşlar için. Bu konuda faydalı olması amacıyla, mesleğin gereksinimleri ve yapılan işlerden bahsettim.
Önceklikle şunu belirtmek istiyorum. Yazılımcı, “yazı yazan kişi” değildir. Dolayısıyla “iyi bir yazılımcı”, klavyeye en iyi hakim olan kişi değildir. Klavyeye çok iyi hakim olmak bir artıdır ama işin temeli bu değildir. Bu işin temelinde çok düşünüp, iyi planlayıp, az yazmak vardır. En gerekli yetenekler; sorun çözme ve analiz yetenekleridir.
Dışardan bakınca çok fazla ezber gerekiyor, nerede sayılsal, nerede mantık diye düşünenler olacaktır. Evet, kısmen haklısınız.. ezberlemek size biraz avantaj sağlayacaktır ama çok az bir fayda. Bu iş sorun çözme yeteneğinin en fazla kullanıldığı mesleklerden birisidir. İsterseniz tüm yazılım dillerinin her bir özelliğini A’dan Z’ye bilin ama sorun çözme yeteneğine sahip değilseniz bu meslekte ilerleyemezsiniz.
Hemen bir örnek veriyim..
Ne demek istediğimi daha iyi anlayabilmeniz için, size çok basit bir örnek vereceğim;
Sorun : Müşteri, kutuya belirli bir miktar para yazdığı zaman, otomatik olarak üç basamakta bir virgül atarak para okunumuna çevirmek istiyoruz. ( Yeni eklenen fonksiyonlarla, artık bu tür basit rutin işler kolayca yapılabiliyor ama sizin anlamanız açısından bu basit örneği seçtim. )
Çözüm : Programın Algoritmasını Yazalım;
1- Gelen para miktarını oku
2- Eğer basamak sayısı 3’e eşit yada küçükse sonucu yazdır ve bitir
3- Paranın basamakları, sağdan sola doğru üç’er üç’er sayıldığı için basamakları tersten 3’er 3’er sırayla okuyacağız.
4- Toplam basamak sayısı bölü üç defa aynı işlemi tekrar ettirecek bir döngü başlatacağız.
5- Her seferinde, toplam basamaktan üç azaltıyoruz ve başa doğru virgül ekleyerek, sağdan sola ekleyerek ilerliyoruz. En son 3’e eşit veya küçük basamağa ulaşıncaya kadar. Ulaştığımızda son kalanları da ekleyip, virgülü sıfırlıyor ve döngüyü sonlandırarak, sonucu ekrana yazdırıyoruz.
PHP ile yazarsak
<?php function paraBasamak($para) { // kaç basamaklı olduğunu bulalım $kacBasamak = strlen($para); // basamak üç'e eşit yada küçükse sonucu direk döndürür(işlem yapmaz, burada biter) if ($kacBasamak <= 3) {return $para;} // aşağıda tanımlamalarımızı yapıyoruz $kalanBasamak = $kacBasamak; $sonuc = ""; $virgul = ','; $kactane = 3; // basamakları sondan başa döndür while ($kalanBasamak > 0) { // basamak 3'e eşit yada küçükse son kısmı virgülsüz ekle if ($kalanBasamak <= 3) { $kactane = $kalanBasamak; $kalanBasamak = 0; // en başta boş virgül çıkmasını engelliyoruz $virgul = ''; } else { // değilse kalan basamağı 3 azalt $kalanBasamak -= 3; } // aşağıda, sırasıyla 3'er 3'er sonuca, her seferinde soldan ekliyoruz $sonuc = $virgul . substr($para, $kalanBasamak, $kactane ) . $sonuc; } return $sonuc; } $gelenPara = "1200600";// kutuya girilen para olduğunu düşünelim echo paraBasamak($gelenPara);// sonucu ekrana yazdırıyoruz
gördüğünüz gibi, ufak bir işlem için bile bu kadar iş yaptık. Bu kodu 100 satır ile düşük performans verecek şekilde de yazabilirsiniz. Sonuç olarak çalışır ama hem beklenmedik sonuçları öngörmek zor olurdu, hem de kod kalabalığı yaparak ileride düzenleme yapmanızı zorlaştırırdı. Yani direk yazmak yerine düşünerek yazmak aslında bana zaman kaybettirmedi tam aksine zaman kazandırdı. Parmakların değil, aklın çalışması her zaman daha avantajlıdır.
Web Yazılımcıların Bilmesi Gereken En Önemli Terimler
FrameWork : Yazdığınız dilde işinizi kolaylaştıracak çalışma ortamı. Bu ortamda ihtiyaç duyabileceğiniz çoğu şey mevcut oluyor.
FrontEnd Developer : Daha çok tasarım, kullanıcı deneyimi kısmında çalışan, arayüz hazırlayan geliştirici.
BackEnd Developer : Arka planda çalışan ve çoğu zaman anlamayan kişiler tarafından görülmeyen ve anlanamayan işleri yapar. Arayüz haricinde kalan işlevsel kısımları bu arkadaş yapar. Genellikle büyük projelerde daha fazla ihtiyaç duyulur.
UX Designer : Tamamiyle kullanıcı deneyimine odaklanmış olan tasarımcıdır. Yazılıma çok girmediği için detayına girmeyeceğim.
SQL Veritabanı : SQL tabanlı çalışan veri giriş çıkışı yapılarak, bilgilerin depolandığı program.
No-SQL Veritabanı : SQL tabanlı çalışmayan, farklı sorgu ve farklı şablon üzerinde çalışan veri giriş çıkış programı.
Middleware : Yazdığınız koda giren ve çıkan bilgilerin denetlendiği ara kod birimi.
MVC : Model/ View / Controller yani Model / Görünüm / Kontrol Birimi şeklindedir. Bu bir kod yazma standartıdır, yani kurala uyduğunuz takdirde düzenli kod yazmanıza olanak sağlar.
UnitTest : Yazdığınız fonksiyonları tek tek test etme işlemidir. PHPUnit ile PHP üzerinde bu testleri kolayca yapabilirsiniz.
Mock : Hızlı bir şekilde, tam olarak bitmemiş kodunuzu çalıştırmak istiyorsunuz ama bir çok fonksiyon hazır olmadığı için hata alacaksınız. Bu durumda Mock kullanarak hata vermeyecek şekilde sahte fonksiyonlar/sınıflar yazmaya verilen isimdir.
Web Yazılımcıların Bilmesi Gereken Bilgiler
Web Yazılımcılığını seçerseniz sonu olmayan bir buzdağına tırmanmaya hazır olmalısınız. Her geçen gün yeni teknolojiler, yeni araçlar işinizi kolaylaştırmak için çıksa da, aslında beklentiler arttığı için iş yükünüzü arttırmış oluyor. Bilmeniz gerekenlerin en önemlileri şunlar;
Web Backend Geliştiricilerinin Bilmesi Gerekenler
PHP / ASP .NET / NodeJS veya benzeri sunucu tabanlı çalışan web sunucu dili
CSS ve JavaScript üzerinde, bir frontend kadar olmasa da en azından ihtiyaçlarınızı karşılayacak kadar bilmeniz şart
MYSQL, MongoDB ya da PostreSQL benzeri veritabanı dili
FrameWork artık neredeyse her şirket tarafından isteniliyor. PHP için Laravel ve Symfony en çok kullanılan frameworkler
Web Frontend Geliştiricilerinin Bilmesi Gerekenler
Tabii ki JS ve CSS çok iyi bilmek
JS framework olarak Angular, ReactJS, Vue.js veya benzeri bir framework bilmek
Test etmek için mocha gibi bir test birimine hakim olmak
Kod yöneticisi olarak WebPack veya benzeri bir uygulamaya hakim olmak
TypeScript bilmek
CSS framework olarak en azından bootstrap bilmek
Masaüstü Yazılım Geliştiricilerinin Bilmesi Gerekenler
Bu yazıyı asıl olarak web geliştirme üzerine yazmıştım ama kararsız olan ve masaüstü yazılımcılığını da düşünen arkadaşlar için de ufak bir şeyler anlatmak faydalı olabilir diye düşündüm. Şimdi biraz da masaüstü yazılımcılığı hakkında bir kaç şeyden bahsedeyim.
En başta işletim sistemlerini bilmek ve kütüphanelerine hakim olmak çok önemlidir.
Java, C/C++, Python, C# bu aralar en çok karşılaştığım diller. Golang gibi yeni yeni piyasaya giren dillerin de çok fazla kullanıcısı bulunmakta.
Benim tavsiyem; kesinlikle ilk başta C bilmeniz. Diğer diller üst düzey dil olduğu için bazı durumlarda sizi sınırlayacaktır. Tabii ki üst düzey bir dil bilmeniz sizi daha üretken yapacaktır. Mecburen C++, C#, Python gibi bir dili de bilmeniz gerekiyor.
Arayüz olarak piyasada en fazla bildiğim kadarıyla tcl üzerinde yazılmış tk grafik kütüphanelerini bulabilirsiniz. Ya da piyasada ücretli/ücretsiz grafik küfüphanelerini inceleyip uygun olanını kullanabilirsiniz.
Umarım faydalı olabilmişimdir. Aklıma yeni faydalı olabilecek şeyler geldikçe buradan paylaşım yapmaya devam edeceğim.
Bir sonraki makalede görüşmek üzere…