Sık Sorulan Sorular

Sorular, bildiğiniz sorular ama yanıtlar ve çözümler çok farklı!
Beklentilerin soruları ne kadar değiştirdiğini gözlemleyin!

Genellikle yazılım uzmanı "geliştirici" (kodlama) yapan olarak bilinir. Ancak çalıştığı projenin ihtiyaçlarına göre, yazılım araştırma geliştirme, test ve bakım gibi faaliyetlerde de bulunur. Kısaca, yazılım programları tasarlayan kişidir.
Bilgisayar programlarının, bir işlevi (yazılımsal yada donanımsal) yerine getirmesi için gerekli yazılımları üretir.
Projenin içeriğine göre kapsamı değişken olup, bir çok farklı programlama dilleri ile ihtiyaç duyulan yazılımı üretebilir. 
Yazılım ve sistemlerin tasarımından bakımına, test edilmesinden değerlendirilmesine kadar olan tüm aşamaları takip etmek ve kontrol altında tutmak değişen metodolojilere ayak uydurmak gibi sorumlulukları vardır.
En önemlisi geliştirdiği yazılımın hatasız çalışması için çözümler üretmek ve sürekli iyileştirmeler günümüz yazılım uzmanlarınından beklenendir.
Yazılım uzmanlığı için üniversite eğitimi şart değildir! Üniversitelerin, Bilgisayar Teknolojisi ve Programlama, Bilgisayar Mühendisliği ya da Yazılım Mühendisliği gibi alanlarında eğitim almak, daha donanımlı bir yazılım uzmanı olmanızı sağlar ancak olmazsa olmaz diye katı bir şart yoktur. Hatta, Özel kurum ya da kamu kurumlarında verilen kurslardan faydalanarak sertifika sahibi olabilir ve kendinizi geliştirebilirsiniz.
Daha da önemlisi, eğer ilginiz ve merakınız var ise "Yazılım geliştirmek zordur" gibi söylemlerin sizi korkutmasına izin vemeyin. Bir çok Yazılım Mühendisliği mezunu olmuş ama yazılım geliştir ile alakası olmayan kişiler var.  İşin özü bu mesleği sevebilmekte, benimseyip sabırla çalışabilmektedir. 
Yazılımı bilgisi öğrenmek için bu çağdan daha iyisini bulamazsınız. Her platform eğitim videoları ile dolu, sadece doğru içerikleri bulmanız ve öğrenme yolunuzu çizmeniz gerekli.
Yazılımcı olmak için gereksinimler!

Aslında gerçekte böyle bir gereksinim yok ancak benim bu yolda olan arkadaşlar için vurgulamak istediğim bazı başlıklar var; 

1. Sürekli Öğrenme
Yazılım geliştirme yaşayan bir canlı gibi sürekli gelişiyor ve sürekli büyüyor. Üstelik çok fazla değişken...
Bu nokta da ilk uyarım bu meslekte sürekli ve düzenli öğrenme alışkanlı kazanmanız gerekmetekdir. Aksi durumda gerilemeniz yerinde saymanız ve demode bilgilerle ortada kalmanız çok yüksek.
Kısacası ilerlemek için sürekli olarak "baltayı bilemeniz" gerekiyor.

2. İngilizce
İngilizce konuşmanız beklenmiyor, ancak yazılım geliştirirken kullanacağınız diller ingilizce kelimelerden oluşuyor. En önemlisi yazılım dillerinin kullanım klavuzu diyebileceğimiz dokumantasyonlar ingilizce olarak hazırlandığı için İngilizce ayrı bir önem kazanıyor.
Bu konunun üstesinden gelmek sizin çabalarınıza ve çözüm yollarınıza bağlı.

3. Düşünce yapısı
Bilgisayara şunu yap, sonra bunu yap ve şu olsun diyemezsiniz. Bilgisayar ile konuşmanında da bir algoritması vardır. Öncelikle problemleri aşamalar halinde belirler bir mantık çerçevesinde sıralar, hangi aşamada ne olması gerektiğine karar verir ve adımlara bölerek bir kurgu oluşturursunuz. Üstelik geliştirmek istediğiniz çalışmalar Matematiksel, istatistiksel yada soyut düşünmenizi gerektirebilir. Bu sebeple düşünce yapınızında, rakamsal ve metinsel konularda antremanlı olması yararlı olacaktır.

4. Fiziksel sağlık
Problemleri kafanızda çözebilirsiniz. Bu harika! Ancak problem çözümlerini bilgisayara anlatmak pek kolay değildir.
Saatlerinizi harcayacağınız, hareketsiz zamanlar için kendinize, mola vermek için sebepler bulun. Şimdi olmasa bile ilerleyen yaşlarda, göz, bel, boyun, kalp başta olmak üzere şikayetleriniz oluşmadan önlemenin mümkün olduğunu bilin ve farkında olun.   

Tüm bunlar kaliteli çalışmalarınız için önemli gördüğüm detaylardır.
Bu listeyi oldukça uzatmak ve gereksinimlere göre çoklamak mümkündür. Çünkü, her hangi bir yazılım projesi sektörden sektöre, gereksinim duyulan konulardan ortaya çıkacak ürünün yapısına kadar bilmeniz gerekenler listesini değiştirir. 

Bilgisayar programcılığı ile ilgili kullanıcı odaklı soru cevap sitesi olan Stack Overflow her yıl bu bağlantı üzerinden https://insights.stackoverflow.com kullanıcılarının en çok tercih ettiği programlama dilleri ve kullanımları ile ilgili istatisikleri yayınlıyor. Bu sizlere geleceğin yönü hakkında fikir verecektir.

Ancak uzun yıllar boyunca varlığını koruyacak görünen ve popülerlikte liderliği sürdüren programlama dilleri ise şunlardır.
C#
C++
Python
PHP
Java

Bir programlama dilini bilmek, geliştirilecek projeyi hatassız ve zamanında teslim etmek için yeterli değildir. Bu yarış için metodlar metodolojiler vardır.
Bunlardan bazılar: 

Waterfall
Agile Development
XP - Extreme Programming
Scrum'dır.

Takım olarak yazılım geliştirme sadece metodolojilere dahil olmak ile de son bulmaz. 
Geliştirmesi yapılan kodların bir düzen içerisinde işlemesi için yazılan kodların versiyon kontrol sistemine (VCS) dahil edilmesi gereklidir. Böylelikle Yazılım geliştirici kodlarını versiyonladığı için ileri veya geri yapabilecektir. 
Versiyonlama sistemlerinden bazıları:

Git
Subversion
Bitbucket'tır.

Yazılımcı geliştirdiği ürünün kullanma klavuzunu da yazmalıdır diyememişler, (User Stories) Kullanıcı hikayeleri demişler.
Kısacası yazılım geliştirici yazılımı kullanacak kişilerin neler yapacağını özetle anlatan dokuman hazırlaması da gerekmektedir.
Amaç programcı ile işveren/kullanıcı arasında yazılımın kapsamı konusunda ortak bir dil oluşturmaktır.

peki bunları bilmek yetti hayır! 

bir de UML (Unified Modelling Language) bilmekte fayda var. iş sistemlerinin modellenmesi konusunda ortaya çıkmış bir dildir. Genellikle yazılım sektöründe kullanılmakta olup iş süreclerini veya herhangi bir işi grafikler ile açıklamak için kullanılır.
Faydası ise sistemin bütününü grafiksel olarak görmeye ve terkar eden gereksiz süreçleri çıkarma yada ihtiyaç olan süreçleri ne olarak görmeye yarar.

Dahası öğrenmenin sonu yok, sürekli geliştirme serüveninizde başarılar dilerim.
Bu durumu aslında soru - cevap olarak şöyle düşünelim.

Bir fili nasıl yersiniz ?
- Her seferinde bir lokma ısırarak.

İşte böyle! Yazılım geliştirmek için ilgi duyduğunuz bir programlama dili üzerinde parça parça öğrenerek ve öğrendikleriniz ile bir uygulama geliştirerek başlamış olursunuz.
Öncelikle, genel beklentiler vardır kısmi olarak bunlardan bahsedelim. 

- Üniversitelerin Bilgisayar Mühendisliği veya benzeri 4 yıllık bölümlerinden mezun,
- Mezuniyet sonrası yazılım uzmanı olarak minimum (X)  yıllık iş deneyimi olan,
- Programlama alanında istekli, alanında tecrübeli, 
- Stackoverflow ve benzeri web sitelerini takip edip, okuduğunu anlayacak şekilde İngilizce bilen,
- İyi derecede İngilizce bilen / Mesleki düzeyde İngilizce bilen,
- Müşteri ihtiyaçlarını anlayarak yazılım tasarımını oluşturabilecek ve sorumluluk üstlenebilecek,
- Erkek adayların askerliğini tamamlamış veya en az (X) yıl tecilli olan,
- Yazılım alanında kendini geliştirmiş olmak ve gelişime açık olan,
- Analitik düşünebilen,
- İnsan ilişkilerinde başarılı olan,
- Sorumluluk sahibi olmak ve çözüm odaklı çalışmalar yürütebilen,
- Zaman yönetimi konusunda başarılı, verilen işi planlanan sürede bitirebilen,
- Çok katmanlı sistem ve yazılım mimarisi konusuna hakim olan,
- Uygulamalar ile dokümantasyon oluşturabilen,
- Yenilikleri takip edip uygulamak isteyen, 
- Araştırma ve geliştirme konusunda hevesli,
- Kişisel gelişimine önem veren, 
- Sabırlı ve çalışkan, 
- Takım çalışmasına yatkın 
vb.


Birde teknik beklentilerden bahsedelim ki bunlar kullanılan platformlara göre (Windows, Linux, MacOs) değişmektedir.

Web tabanlı uygulamalarda deneyim sahibi

- ASP.NET (WebForm veya MVC) uygulamaları geliştirmiş
- İyi derecede SQL bilen
- Oracle, PostgreSQL, MS SQL Server veya muadili bir veritabanı kullanarak uygulama geliştirmiş
- C# programlama diline hakim
- Object Oriented Programlama konularında bilgi sahibi
- REST, SOAP web servis geliştirme ve uyarlama konusunda bilgi sahibi
- Entity Framework, LINQ ve/veya diğer ORM konularında bilgi sahibi
- jQuery, Bootstrap, Ajax, HTML ve CSS konularında bilgisi olan
- SVN, TFS, GIT gibi yazılım geliştirme araçlarını kullanabilen
vb.

Mobil tabanlı uygulamalarda deneyim sahibi

- Web server, mail server, hosting, domain konusunda bilgi sahibi
- React-Native ile geliştirmiş Play Store ve App Store platformlarında en az birer uygulaması olan ya da sunabilecek 
- Android studio ortamına aşina 
- Xcode ortamına aşina 
- Web servisler ile uğraşmış olan 
- Ödeme Entegrasyonları ile önceden çalışmış ya da E-ticaret altyapısını bilen
vb. beklentiler olacaktır.

Bu liste bir yazılım geliştirme uzmanının bir çok yetkinliğe sahip olması gerektiğini göstermektedir.





Example

Leave your email address and we will notify you about all the news and developments. Stay with us!