Teknoloji

Aranan Yazılımcı Nasıl Olur?

Programlama Nedir?

Programlamayı anlamak için bazı temel kavramları bilmek gerekir. Yazılım genel itibariyle İngilizce üzerine kurulu olduğu için ana dili Türkçe olan bir kişinin öncelikle bu İngilizce kavramları ya da Türkçeleşmiş, gündelik hayata girmiş kavramları bilmesi gerekir. Bunun için öncelikle yazılım, programlama dili gibi başlıkları öğrenmeliyiz.

Yazılım Nedir?

Program da denilen, bir bilgisayarı belirli işlevleri yerine getirmek üzere yöneten, bilgisayara ne yapacağını söyleyen, kodlanmış komutlar dizisidir. Daha anlaşılır bir tanım yapacak olursak yazılım, insanların gündelik hayattaki işlerinin bilgisayar sistemlerine aktarılmasıdır. Bu aktardığımız sistemleri bilgisayar, kendi diline yani makine diline çevirir.

Programlama Dili Nedir?

Yazılımcının bir algoritmayı ifade etmek amacıyla bir bilgisayara ne yapmasını istediğini anlatmasının tektipleştirilmiş yoludur. Programlama dilleri; yazılımcının bilgisayara hangi veri üzerinde işlem yapacağını, verinin nasıl depolanıp iletileceğini, hangi koşullarda hangi işlemlerin yapılacağını tam olarak anlatmasını sağlar. Şu âna kadar 150’den fazla programlama dili yapılmıştır; ve bu, her geçen gün gelişerek artmaktadır. Dünyaca bilinen ve çok kullanılanlardan bazılarını yazalım: Pascal, Basic, C, C#, Java, Perl, PHP, Python, Delphi, Ruby ve Swift.

Donanım ve yazılımın bir veya daha fazla yapılandırılması, o programı çalıştırmak için bir tür yol sağlar. Programlama dili uygulamasında iki yaklaşım vardır: Derleme ve yorumlama. Herhangi bir tekniği kullanarak bir programlama dili uygulamak mümkündür. Genellikle donanım üzerinde çalışanlar, yazılım üzerinde yorumlananlardan daha hızlıdır. Yorumlanan programların performansını geliştirmek için “anında derleme programları” kullanılır. Derleyiciden gelen çıktı ya donanım tarafından ya da yorumlayıcı diye adlandırılan programlar tarafından çalıştırılır.

Yazılım dili; cihaza komut göndermeyi sağlayan, verileri cihaza aktarma yöntemidir. Şu anda hemen hemen tüm yazılım dilleri İngilizcedir. Bazı uygulamaların dili ise İspanyolca olarak kullanılmaya başlanmıştır; ancak İspanyolcanın şu an için önemi yoktur. Burada anlatmak istediğim konu, İngilizcenin önemidir.

Yazılımda İngilizcenin Önemi

Programlamada İngilizcenin önemi büyüktür. Kodların tamamı İngilizcedir; ve programcı, konuya hakim olma derecesini yükseltmek için en az orta düzey (b2) İngilizce bilmelidir. Eğer sadece ana diliyle bu sektörde tutunmak istiyorsa işi çok zordur. Dil öğrenilmediği takdirde sadece ezbere kodlar yazar; ve bu da kısa zaman içinde kodları unutmaya başlaması anlamına gelmektedir. Kodları unutmaya mahkûm olan programcı sürekli tekrar yapmak zorundadır. Bu istemediğimiz bir durum. Tabii ki sürekli bir şeyler öğrenmeliyiz; ama sık sık aynı konuları tekrar etmek, insanı yapılan işten soğutabilir ve sektörde ilerlemesini engelleyebilir.

Her iş gibi programcılıkta da işini severek yapmak çok önemlidir. Hem kod yazarken hem de teoride işe sıkı sıkı bağlanarak çalışmalıyız. Sürekli araştırmak ve öğrenmek bu işin püf noktasıdır; aksi hâlde sürekli gelişen ve değişen dünyada hele ki teknolojide geri kalırız. Teknolojide geri kalmak belki bilgisayar kullanmayan, hayatında tek satır kod yazmaya ihtiyacı olmayacak insanlar için geçerli olabilir; fakat bir programcı ya da bilgisayarla ilgili herhangi bir sektörde çalışan birinin geri kalması demek, yeni sorunlara çözüm bulamamak demektir. Eğer sorunlara çözüm, sorulara yanıt olamayacaksak programcı olmanın bir önemi kalmaz. Asıl konumuza gelecek olursak İngilizce olmadan yapılan yazılım, ezberci yazılımdır; ve biz ezberlemeyi değil, öğrenmeyi hedefleyen programcılarız.

Kod Okumanın Önemi

Programcılıkla ilgili yazılan tüm kitapların kaliteli kod yazmak ile alâkalı olduğu bir zamanda insanların kaliteli programcı olmayı bu mesleğin sadece kod yazma kısmı ile ilişkilendirmesi normaldir; ama başarılı bir kariyer sahibi olmak istiyorsak acaba hangisini daha çok yapacağız: Kod yazmak veya kod okumak? Bu mesleği yapan onlarca insandan aldığım duyuma göre yazdığımız kodun on katı kadar kod okumalıyız. Peki, okuduğumuz kodlar içinde başkalarının kodu mu yoksa kendi yazdığımız kod mu daha çoktur? Kurumsal projelerden yani çok kişinin bulunduğu aynı projelerden yola çıkarsak büyük bir ihtimal sizin kodunuzun miktarı projenin geneliyle karşılaştırıldığında devede kulak kalacaktır.

Peki, kod okumanın özellikle de başkalarının kodunu okumanın kendi kodumuzu okuma ve yazmadan çok daha fazla zaman aldığı gerçeği düşünülürse bu meslekte kaliteli programcı olmayı sadece kod yazmak ile ilişkilendirmek biraz eksik olmaz mı?

Elbette ki eksik olur; çünkü sadece kendi kodlarımızı yazıp okuyacağımız bir kariyer düşünülemez. Her meslekte olduğu gibi başkalarının yaptığı, zaman harcadığı ya da üstünkörü bıraktığı işlerle karşı karşıya kalabiliriz. Örneğin, bir hastanın sağlık sigortasını birden fazla kez kayıt eden bir uygulama hatası gördüğümüzde bu kayıt sistemini yazan programcıları arayıp kodun hangi bloğunda hata yaptıklarını sormamız abes olurdu.

Veya bir banka uygulamasında kredi faizini yanlış hesaplayan ve müşteriye maddi zararlar açan, ayrıca bankaya da itibar kaybettiren bir program hatasıyla karşılaştığımızda bu hatayı kendimiz çözmeliyiz. Kod dosyasını açıp gerekirse saatlerce bilgisayar başında hatanın nerede olduğunu kavrayıp programın diğer kodlarını bozmadan sorunu yerinde çözmeliyiz. Tabii bu uygulamaları yazan programcıların yazılım geliştirme prensiplerine göre hazırlamaları ve kodun sürekliliğinin sağlanması gerekiyor.

Eğer yazılım geliştirme prensiplerinden haberdar olmayan programcılar tarafından yazıldıysa işimiz zorlaşacaktır. Ve burada önemli olan husus, iyi programcı olabilmektir; fakat zaten her firma veya her müşteri işin iyi programcılar tarafından yapılmasını ister. Yani işi ehline vermek isteyen müşteri ya da firma eğer işin ehlini bulamazsa sürekli farklı programcılara iş yaptıracaktır; ve bu da bir projede belki onlarca programcının kodlarının bulunacağı anlamına gelir.

Yazılım
Yazılımda en önemli şey kafeindir 🙂

Aranan Yazılımcı Nasıl Olmalı?

Üniversite tercihlerimi bilgisayar programcılığı üzerine yaparken aklıma takılan soru: “Nasıl iyi bir programcı olunur?” sorusuydu. Daha sonra Kırıkkale Üniversitesi, Bilgisayar Programcılığını kazandığımı gördüğüm ân düşünmekle birlikte araştırmaya da başladım. Araştırdıkça görüyorum, iş dünyasında büyük bir açık var. Bilgisayar mühendislerimiz fazla evet; hatta yazılım mühendisliği bile ülkemizde son yıllarda revaçta olan bölümlerden, açığı kapatır mı bilemiyorum.

Konumuza dönecek olursak piyasada işini iyi bilen ve teknolojiyi titizlikle takip edebilen programcı bulmak zor diyebilirim. Ayrıca bir başka konuya da değinmeliyim, o da şudur ki ülkemizde işveren ya da program yazdıracak müşteri her şeyin tekelde yapılmasını istiyor. Yani bir firma aradığı programcıda birçok özellik istiyor. Örneğin, firma PHP yazılım uzmanı yani Back-End geliştirici arıyor; fakat aradığı özelliklere baktığımızda;

İyi derecede PHP, HTML, CSS, JavaScript, jQuery bilgisine sahip ve deneyimli,

İyi düzeyde MySQL bilgisine sahip,

Hazır sistemlerin veri tabanında işleyişi ve ilişkilerini analiz edebilen,

RESTful API ve Web servis geliştirme konusunda bilgi sahibi,

Çok katmanlı mimariye hakim,

Kaynak okuma derecesinde teknik İngilizce bilen,

Sosyal medya platformları için story ve post hazırlayabilecek,

Sosyal medya reklamlarını takip edecek,

Grafik programlarına hakim olan (Photoshop, Illustrator)

Yukarıda belki orta düzey bile olmayan sıradan bir firmanın PHP yazılım uzmanı adı altında çalıştıracağı programcıda aradığı özellikleri görüyoruz. Aslında işveren yazılım uzmanı değil de karma programcı arıyor! İstediği özelliklere meslek bazında bakacak olursak;

Hem grafik uzmanı, hem veri tabanı uzmanı, hem arka plan (Back-End) geliştirici, hem ön yüz  (Front-End) geliştirici, hem nesne yönelimli programlama konusu olan çok katmanlı mimari uzmanı, hem sosyal medya reklam uzmanı arıyor; yani en az 5 farklı mesleğin uzmanlığını aynı kişide istemesiyle beraber bir de İngilizce ve 2 yıl deneyim istiyor. Bu adı lazım olmayan sıradan bir firma, diğer ilanlar da aşağı yukarı aynı denebilir. Yani programcılıkta piyasanın isteklerine cevap vermek ve birçok konuda bilgi sahibi olarak çözüm üretmek iyi programcı olmanın raconudur diyebiliriz.

Birçok mesleği aynı anda yapmak zorunda olan programcı, iyi bir eğitim almak zorundadır. Günde en az 2 saat sadece programlama dili öğrenme ve geliştirmeye ayrılmalı ve verimli bir şekilde çalışılmalıdır. Ayrıca programcılık sanıldığı gibi sayısal değil, aslında sözeldir. Elbette ki programlamada matematik önemli; fakat eğer sözel olarak okuma ve anlama becerisi olmazsa sadece sayısal bilgiyle yapılacak bir iş değildir.

İşi pratikte kolay ve hızlıca yapabilmek için bol bol kod bilmek ve bunları hızlıca kavrayabilmek işin temelidir. Tabii burada işverenlerin abartılı isteklerinden çok programcılığın aslında karma bir meslek olduğu açıkça ortadadır. Karma meslek derken üniversitede aldığımız eğitim de yeterli olmasa da bizleri bu karmaşıklığa hazırlamaya çalışmaktadır.

İyi bir programcı olmak için gerekenler;

-Tercihe göre ama piyasada çok kullanılan, nesne yönelimli programlama dili olan ve Türkiye’de daha çok kullanılan C# ya da dünyada daha çok kullanılan Java programlama dillerini bilen,

-Bilgisayar, internet, web nasıl çalışır, bunlarla ilgili teorik bilgisi olan,

-Yapay zekâ uygulamaları hakkında bilgisi olan,

-Şu anda revaçta olan dillerden Ruby, Javascript, PHP, Python, HTML, CSS ve Javascript kütüphanesi olan jQuery’ye iyi derecede hakim,

-Grafik tasarımcı kadar olmasa da Photoshop ve animasyon konularında bilgi sahibi,

-Video ve ses düzenleme programlarını kullanabilen,

-SQL veri tabanı programlarına hakim ve veri tabanı bağlantısı yapabilen,

-Teknik İngilizce bilgisi olan,

-Web geliştirmeyle ilgili olarak Front-End ve Back-End programlama yapabilen, veri tabanı ile müşteri form bilgilerini düzenleyebilecek,

-Web sitesinin arama motorlarında ilk sıralarda çıkması için yapılan SEO işlemlerini yapabilen,

Ve bunların dışında sektörde uygulamalı olarak tecrübe sahibi olmuş kişiler genellikle programcılık alanında aranan isim olurlar.

Ve programcı sürekli öğrenmeli, öğrenme çabasında olmalı. Yazılım sektöründe sınır yok çünkü. Aslında teknoloji adı altında olan bütün sektörlerde bilgi sınırı yok. Sürekli gelişen ve ucu gözükmeyen bir sektördür yazılım. Onun için bir programlama dili bilmeyle “Tamam, ben bu işi çözdüm,” demek yanlıştır ki bildiğini sandığın dili de tam anlamıyla bilemezsin; çünkü yazılım dilleri de gelişmeye müsaittir. Ve farklı gruplar tarafından geliştirilen, yeni kütüphaneler eklenen onlarca yazılım dili vardır. Tekrar altını çizerek söylemeliyim ki sınırı olmayan bir alandır yazılım.

Öğrendiklerini paylaşmalı, bilgilerini ardındakilere aktarmalıdır; çünkü bilgi paylaştıkça çoğalır. Sakın rakibim artacak, geride kalacağım diye üzülme. Belki senin de karşıdakinden öğreneceğin bilgiler olabilir; bu da paylaşımcılığın sonucu olarak bilgi alışverişini ve kendimizi eksik gördüğümüz noktaları geliştirmemizi sağlar. Şunu da bilmeliyiz ki: Yazılımda, mühendislikte kendini geliştirmezsen o sektörde hiçbir şekilde ilerleyemezsin.

Programlamanın Yapı Taşları

Program yazmak artık her meslekte kendine has uygulama geliştirme araçları sayesinde her alana girmiştir. Farklı ortamlarda ve farklı araçlarda değişmeyen ve aynı olan tek yapı, programlamanın temel taşlarıdır.

Program yazarken problem çözümünü bilgisayara aktarmak için ihtiyacımız olan gerekli temel yapılar, programlamanın temel taşlarını oluşturmaktadır. Burada program yazmak için gerekli olan yapılar, ayrıntılı olarak açıklanacaktır. Tüm bilgisayar programları bu yapılar kullanılarak oluşturulmaktadır. Java ve C# dışında tüm dillerde bu yapılar benzer şekillerde karşımıza çıkmaktadır. Bu yapıların bilinmesi, farklı programlama dillerinin öğrenilmesini kolaylaştıracaktır. Bir programlama dilini çok iyi öğrenen bir kişi, diğer bilmediği bir dili çok kısa bir sürede kolayca öğrenecektir. Bundan dolayı bu yapıların en ince ayrıntılarının anlaşılması gerekmektedir. Konu başlıklarını listeleyelim;

  1. Sabitler
  2. Değişkenler
  3. Operatörler
  4. Karar yapıları
  5. Döngüler

Yukarıda da görüldüğü üzere program yazmak için bilinmesi gereken temel yapılar birkaç tanedir. Programcı adaylarının bu yapıları adları gibi bilmeleri gerekir. Programcılıkta yaygın ama yanlış: “Programcı tüm fonksiyonları (komutları) bilmelidir,” anlayışı vardır. Bu anlayış, temel yapı taşları için geçerlidir. Bir insanın programlama diline ait binlerce fonksiyonu bilmesi ve bunları aklında tutması imkânsızdır.

Kalın bilgisayar kitapları, programlamaya başlayan kişilerin sanki hepsini bilme zorunluluğu varmış gibi gözlerini korkutmaktadır. Bilgisayar kitaplarının birçok bölümü, sözlük gibi ihtiyaç olan kodu veya yapıyı öğrenmek için kullanılır. Programcının asıl her şekilde tüm yapıyı bilmek zorunda olduğu konu, programlamanın temel yapı taşlarıdır.

Programlamanın yapı taşlarını indirgediğimizde karşımıza iki yapı çıkmaktadır: Bunlardan birisi değişkenler, diğeri de şart ifadeleridir. Diğer yapılar, bu yapıların farklı ifade şekillerinden oluşmaktadır. Özellikle bu iki yapının anlaşılması, diğer yapıların anlaşılmasını kolaylaştıracaktır. Programlama konusunda her alanda faaliyet gösteren Türkçe veya İngilizce çeşitli siteler vardır. Bu sitelerde konu anlatımı, örnek kodlar ve açık kodlara sahip bazı uygulamalara ulaşabilirsiniz.

DAHA FAZLA İÇERİK

“Aranan Yazılımcı Nasıl Olur?” tarzında

Daha fazla “TEKNOLOJİ” içeriğine bu bağlantıya tıklayarak ulaşabilirsin!

GETURGEN Dünyasını YouTube’da keşfetmek ister misin? O hâlde bu bağlantıya tıkla!


Metin Editörü: Hatice KIRAÇ

Muhammet ALTUNTAŞ

Kırıkkale Üniversitesi bilgisayar programcılığı ve Anadolu Üniversitesi Web tasarım ve kodlama bölümü öğrencisiyim. Ankara'da yaşıyorum. Farklı Sivil toplum kuruluşları ve platformlarda gönüllü faaliyetlerde bulunuyorum. Teknoloji/yazılım alanlarında içerikler paylaşacağım. bunun dışında tarih, siyaset, toplumsal göç konularıyla özel olarak ilgileniyorum. Bu konularda da yazılarımı paylaşacağım.

İlgili Makaleler

Bir cevap yazın

Başa dön tuşu