Turkhackteam.net/org - Turkish Hacking & Security Platform  
Geri git   Turkhackteam.net/org - Turkish Hacking & Security Platform >
Programlama
> Java

Java Object Oriented Programming temeline dayanan, çok işlevli, step by step işleyen dilin dökümanlarının paylaşım alanı.


Yazılımcı Olmak İsteyenlere Sektörden Bilgiler - ihan3t

Java

Yeni Konu aç Cevapla
 
Seçenekler
Alt 20-08-2018 22:47   #1
  • Yarbay
  • Üye Bilgileri
Üyelik tarihi
02/2012
Mesajlar
Konular


  
Yazılımcı Olmak İsteyenlere Sektörden Bilgiler - ihan3t



Selamlar herkese, uzun süredir aktif olarak konu açmamakla beraber bu konudan sonra uzun bir süre daha da açmayı düşünmüyorum. Hiç değilse kapsamlı konular açmayacağım. Bunun sebepleri arasında yoğun iş temposu, kendime ayırdığım kişisel zamanlar vs vs sebepler mevcut.

"Yazılımcı Olmak İsteyenlere Sektöründen Bilgiler" adlı konumun sorulmuş ve sorulacak birçok sorunun cevaplarını içermesi ve yeni sorular yöneltilecek referans konu olması dileğiyle..

Peki bu konuda size ne anlatacağım? 2.5 küsür senedir sektörde edindiğim tecrübeleri, daha önce yazdıklarıma ek olarak buraya özet geçeceğim. Bunu yaparken yıllardır aldığım ve karşılaştığım soruları soru&cevap şeklinde listeleyeceğim. Bu şekilde okuyucu açısından daha etkili olduğunu düşünüyorum çünkü okuyan herkes konuda kendinden bir parça bulup konu ile bağdaşıyor.

Öncelikle sorulara geçmeden önce şunu söylemek isterim ki, sektörde "software developer", "senior software developer", "software architect" vs vs pozisyonlarda yani "developer" olarak çalışmak isteyen arkadaşlar şunu iyice akıllarına kazısınlar ki "kod yazmak"tan çok daha önemli şeyler var.

Gördüğüm kadarıyla genel algı "X dilinde Y işlemini yapmak sektörde çalışmaya yeter" kafasında. Lakin gerçek hayatta öyle bir şey yok.

1 - Peki sektör neler bekliyor?
  • Bir dil üzerinde iyi derecede hakimiyet
  • Sadece kod yazmak değil, iyi okunabilir, sürdürülebilir, genişletilebilir, test edilebilir kod yazmak
  • Sadece dilin özelliklerini bilmek değil, her dil için evrensel olan design patternleri prensipleri bilmek
  • Sadece yazılım üretmek değil, bir yazılımı baştan aşağı tüm süreçleriyle yönetebilmek
  • Yazılım test süreçlerini iyi bilmek ve uygulamak
  • Architectural konuları bilmek (microservice arch., event driven arch., restful arch. etc.)
  • Uygulamanın yayına alınması/dağıtılması (deployment), monitoringi süreçlerinin uygulanması
  • Agile (genellikle scrum) yazılım geliştirme metodolojilerinin bilinmesi
  • Docker, jenkins, kubernetes gibi toolların bilinmesi
  • ...

2 - Peki nedir bu okunabilir sürdürülebilir genişletilebilir kod?

SOLID principles diyorum, gerisini size bırakıyorum.

3 - Peki nedir bu design pattern konusu?

GOF desing patterns, araştırın öğrenin uygulayın. Design patternler belirli sorunlara çözüm olarak geliştirilmiştir ve büyüyen/büyüyecek çoğu projede kullanılacak mutlaka birçok alan bulunur. Bu patternleri bilmeden yapılan projeler yönetilemez, "makarna kod" dediğimiz hale bürünür.

keywords :
Kod:
creational patterns, behavioral patterns, structural patterns, factory pattern, adapter pattern, facade pattern
4 - Yazılım test süreçleri neler?

Bir yazılımın en temel testi unit testtir. En küçük parçalar halinde yazılımınızın logicini test edersiniz. İleriye yönelik yapılan değişikliklerde geçmişte yazmış olduğunuz kodu bozmadığınızın bir garantisidir unit test.

keywords :
Kod:
junit, mockito, nunit, moq
Bir diğer test iste entegrasyon testleridir, uygulamanızın dış ortamlar ile entegre çalışıp çalışmadığının testi. Örneğin unit testlerde veritabanı bağlantısının testini yapmazsınız (yani gerçekten veritabanına bağlanıp bağlanmadığınızı test etmezsiniz), bu entegrasyon testinin bir parçasıdır.

Bir diğer test yöntemi ise test otomasyonudur. Yazdığımız apileri her geliştirmede tekrar tekrar manuel test etmek yerine, bu apilere doğru istekleri yollayan ve karşılığını kontrol eden yazılımlar geliştiririz. Böylelikle, yapılan geliştirmenin geçmişe yönelik request&response yapılarını bozmadığını test etmiş oluruz.

keywords :
Kod:
nodejs, mocha, chai
5 - Deployment ve monitoring nedir? Bu süreçler nasıl işler?

Deployment, yazdığımız uygulamayı environmentlara (makinelere) yükleme işlemidir. Tabiki bu işi (.netçiler için) visual studio da sağ click publish diyerek yapmayız. Makinelere fiziksel olarak bağlanıp elle uygulamayı atarakta yapmayız.

Bu işi otomatize bir şekilde yapan süreçler geliştiririz. Bu süreçleri geliştirirken işimizi kolaylaştıran bazı araçları kullanırız.

keywords :
Kod:
continuous integration, continuous deployment, docker, kubernetes, jenkins, travisCI, circleCI, octopus
Monitoring ise yayına aldığımız uygulamanın loglarını, sistem kaynaklarının kullanımını, hataların izlenmesini sağladığımız süreçtir. Bu süreçte sistemden ve uygulamadan toplanan veriler görselleştirme ve raporlama araçlarıyla takip edilir.

keywords :
Kod:
prtg, grafana, prometheus, graylog, kibana, logstash

6 - Agile nedir hacı?

Agile : Scrum Nedir?


Şimdi sektöre ve kullanılan araç gereçlere metodolojilere dair bilgiler verdiğime göre sorulara sizden gelen sorulara geçebiliriz.

Sizden gelen ortak sorular :

- Hangi dil ile iş bulurum?

Şuan Türkiye piyasasında en çok eppek yediren diller Java ve C# tır. Kurumsal büyük şirketlerin tamamı bu iki dili ana dilleri olarak kullanır. Onun dışında piyasada php, python ve nodejs te hatrı sayılır bir şekilde kullanılır.

- Sektörde desktop uygulama mı yaptırıyorlar?

Hayır dostum, bu denilen hemen hemen yok gibi. Şirket için gereken birkaç uygulama dışında desktop diye bir olay yok. Projeler çoğunlukla web tabanlı, yapılan mobil uygulamaların bir backend apisi var, yapılan siteler backend apilere bağlanıyor vs vs..

- İşe girmek için neler bilmeliyim?

Başlangıç olarak bir programlama dilini derdini anlatacak ve başkalarının derdini anlayacak kadar bilmelisin. Design patternlere aşina olmalısın, tamamını kullanmamış olsan bile genel konsepti biliyor, ihtiyacın olduğunda kullanabiliyor olmalısın.
Restful nedir, nasıl rest api yazılır genel konsepte hakim olmalısın.
Veritabanı işlemleri ve özellikle bir ORM aracı kullanmış olmalısın
CI/CD süreçlerini biliyor hiç değilse jenkins gibi bir tool ile ufak bir CI süreci oluşturmuş olmalısın.
Dockera bir giriş yapıp container teknolojisi kültürünü biliyor olmalısın.

- İşe girmek için diploma şart mı?

Arkadaşlar çok net söylüyorum diploma şart. Hele ki kurumsal yerlerde çalışmak istiyorsanız, diplomanız zaten var gözüyle bakılır. Başvuru yapanlar zaten bilgisayar/yazılım mühendisidir diye varsayılır, olmayanlar ciddiye alınmaz.

Hatta artık lisans diploması herkeste var, imkanınız varsa yüksek lisansa başlayın. Diploma konusu uzatılacak veya tartışılabilecek bir konu değil. Diploma ŞART.

- Yazılımı internetten mi öğrensem yoksa kursa mı gitsem yoksa kitap mı alsam?


Arkadaşlar bir konuyu öğrenmek, sizin çalışma şeklinize, motivasyonunuza, öğrenme arzunuza bağlıdır. Kendimden örnek vermek gerekirse, üniversite hayatım boyunca 30-40 civarı kitap almışımdır. Bunlardan yaklaşık 20 adeti kütüphanemde duruyor. Birçok kitap okudum. Fakat bunun yanında binlerce makale okudum, yüzlerce tutorial izledim. Yüzbinlerce satır kod yazdım.

Ben kitapları severim, elimin altında bulunsun, hiç değilse konu başlıkları açısından referans olabilecek bir kaynağım olmuş olur. Tutoriallarda ise hands-on programming gösterildiği için izlerken pratik yaparak akılda kalıcı olması sağlanır. Makaleler ise bir konuyu farklı şekillerde ve yöntemlerle ele alarak bakış açınızı genişletir.

Ben oldum olası yazılım kurslarını sevmedim hele ki Türkiye şartlarında. Bilmem kaç kişilik kursa binlerce tl dökmek yerine, bu ücretle onlarca kitap onlarca tutorial alır tekrar tekrar üzerinde çalışabilirsiniz.

İlle kurs istiyorsanızda işi bilen birisinden özel ders veya neredeyse özel ders şeklinde eğitim alın. Ki bununda ücreti çok yüksek olur, fakat gerçekten yazılım öğretirse ve tecrübeli birisyse çok faydalı olabilir.

Ama yeni başlayan biri için benim tavsiyem şu yönde olacaktır. Direkt olarak programlama dalmadan önce bilgisayar mühendisliğinde anlatılan ve temel olarak sayılan dersleri internetten çalışın. Nedir bunlar derseniz, temel bilgisayar mimarisi, logic kapılar, bilgisayarda matematiksel işlemler, veri yapıları ve algoritmalar, programlamaya giriş...

Bu temelleri oturttuktan sonra yönelmek istediğiniz alanı belirleyip ona uygun bir programlama dili seçin ve piyasada "iyi" olarak duyduğunuz bir veya birkaç kitabı edinin. Aynı zamanda udemy/youtube gibi platformlarda memnuniyet sayısı yüksek birkaç tutorial takip edin. Medium, quora, dzone, hackernoon gibi platformları takip edin ve hergün en az 3-5 makale okuyun.

Sürekli pratik yapın, github üzerinde projeleri takip edin, gündemde hangi teknoloji var dünya neyi nasıl kullanıyor ne tarz projeler yapıyor bunları takip edin ve kendinizde örnek projeler geliştirmeye çalışın.

Benim tavsiyelerim bu yönde olacaktır.

ÖZET

Bir dili çok iyi öğrenin, dilden dile atlamayın. Dilin yanında mimari konulara önem verin, solid, design pattern, rest, microservice, event driven gibi kavramları öğrenin.
Database işlemlerinde akıcı olun, ORM yapısını iyice öğrenin, bir orm toolunu çok iyi kullanabiliyor olun.
Dockera bir bakın, size birçok kolaylığı olacak. Gerek uygulamanızı yayınlamanızda gerekse bilgisayarınıza ihtiyacınız olan bir uygulamayı kurmanızda ve geliştirme yapmanızda çok fazla kolaylıklar sağlayacaktır.
Jenkinsi bir inceleyin, eğer yayına aldığınız bir uygulamanız varsa şuan nasıl yayına alıyorsanız (ftp ile mi, ssh ile mi, copy paste ile mi vs vs) o yöntemi değiştirip jenkins üzerinden yayına almayı deneyin.

Git öğrenin, githubda open source projelere katkıda bulunmaya çalışın. Geliştirdiğiniz projelerinizi githuba atın.

Blog tutun, öğrendiklerinizi paylaşın, bunlar sizin cv niz. Artık cv ler github profil sayfaları, kişisel bloglar ve referans projelerdir.

İngilizcenizi iyi bir seviyeye getirin. Günlük hayatınızı hiç değilse internet üzerinde ingilizce yürütebilecek ve teknik makaleler okuyabilecek şekilde ingilizce bilin.

Programlama dili bilmek iyidir, fakat mutlaka dilin yanında kültürel süreçleri de öğrenin. C# mı java mı takılmayın, kolayınıza geleni seçin. Örneğin biz ekip olarak iş yerinde iki dili de aktif kullanıyoruz.

Kendinizi sürekli geliştirin, hiçbir zaman çok biliyorum gafletine kapılıp kibirli tavırlar göstermeyin. Naif bir insan olun. Çevrenizdekilere yardım edin.

Ve önemli bir dipnot: Otomatize edebildiğiniz her şeyi otomatize edin. Örneğin testler, deployment süreçleri, monitoring alert sistemleri vs vs..

özet keywords :
Kod:
design pattern, restful, docker, jenkins, continuous integration, test automation, unit test, c#, java, microservice, git, kibana, logstash, grafana, kubernetes, agile, scrum

Soruları hatırladıkça, yenileri geldikçe bu konuyu güncellemeyi düşünüyorum. Sizlerde sorularınızı konu altından sorabilir, cevaplarını herkesin görmesini sağlayabilirsiniz.

Faydalı ve aydınlatıcı bir yazı olması dileğiyle, iyi forumlar, ihan3t...

    


___________________________________________

Computer Engineer.

Senior Software Engineer.

Konu ihan3t tarafından (21-08-2018 14:24 Saat 14:24 ) değiştirilmiştir..
 Offline  
 
Alıntı ile Cevapla
Alt 20-08-2018 22:48   #2
  • Binbaşı
  • Üye Bilgileri
Üyelik tarihi
12/2017
Nereden
Belirsiz.
Mesajlar
Konular


  


Ellerinize Sağlık.
    


___________________________________________

φǶ
\x50\x68\x65\x6d\x69\x73
 Offline  
 
Alıntı ile Cevapla
Alt 20-08-2018 23:03   #3
  • Binbaşı
  • Üye Bilgileri
Üyelik tarihi
06/2015
Mesajlar
Konular


  


Ellerine sağlık her zamanki gibi bilgilendirici bir yazı olmuş. Dilden dile atlamayın diye yine vurgulamışsınız. Neden öyle dediğinizi bugün daha iyi anlıyorum. Elektronik amaçlı yaklaşık bir yıldır C üzerine yoğunlaşmıştım. Birkaç ay önce yapay zekâyı merak ettiğimden Python öğrenmeye başladım. Tabi C'yi de bırakmadım. İkisini de aynı anda öğrenmeye-geliştirmeye çalışıyorum. Sıkıntı şu ki bazen birine çalışırken diğeriyle karışıyor. Python ve C noktalama bakımından birbirine ters geliyor. Ama gün geçtikçe alıştım. İşin kötü yanı bu yıl okulda C# dersi var. Ve ne yapacağımı bilmiyorum. Aslında bir yandan yeni dil öğreneceğim diye seviniyorum ama diğerleriyle karışır diye de korkuyorum. Size soracağım soru şu:
Sizce C#'a sadece okul için mi çalışayım yoksa diğer dillerin yanında gerçek manada çalışayım mı? Bana faydası mı olur zararı mı?
    


___________________________________________

Ben Ezelden Beridir Hür Yaşadım Hür Yaşarım
Hangi Çılgın Bana Zincir Vuracakmış Şaşarım

 Offline  
 
Alıntı ile Cevapla
Alt 20-08-2018 23:16   #4
  • Asteğmen
  • Üye Bilgileri
Üyelik tarihi
08/2018
Mesajlar
Konular
9


  


Ellerine sağlık birde birşey sorabilirmiyim ;
Türkiye'de yazılım mühendisliği için diploma şartmı ve diplomasız yurt dışında çalışabilirmiyiz bu yazılım üzerine ?
    


___________________________________________

NE MUTLU TÜRKÜM DİYENE!

 Offline  
 
Alıntı ile Cevapla
Alt 20-08-2018 23:29   #5
  • Üsteğmen
  • Üye Bilgileri
Üyelik tarihi
11/2013
Nereden
YALNIZLIK
Mesajlar
Konular


  


c# biliyorum sql ve access komutlarına aşinayım bi kere okusam direk aklıma gelir daha önceden bildiğim ve kullanmaya kullanmaya unuttuğum için bu bilgiyle biryerde işe başlıyabilirmiyim hocam tek sorum bu.
    


___________________________________________

Kimi insan için GÜN erken başlar, Kimi insan içinse GECE geç biter. Benim için sabahların olmadığı bir geceden herkeze GÜNAYDIN..

%70 C#
%50 SQL
%70 Access
%60 HTML
%80 Sosyal Mühendislik
%70 Photoshop
 Offline  
 
Alıntı ile Cevapla
Alt 20-08-2018 23:36   #6
  • Asteğmen
  • Üye Bilgileri
Üyelik tarihi
08/2017
Mesajlar
Konular


  


Bu sene özel üniversitede yazılım mühendisliği okumaya başlayacağım kısmetse üstelik %100 ingilizce olacak dersler. Tavsiyeniz nedir iş ve okul hayatimda kolaylık sağlaması için
    
 Offline  
 
Alıntı ile Cevapla
Alt 20-08-2018 23:38   #7
  • Forumdan Uzaklaştırıldı
  • Üye Bilgileri
Üyelik tarihi
09/2016
Nereden
Tanrı Dağı
Yaş
15
Mesajlar
Konular


  


Eline sağlık.
    
 Offline  
 
Alıntı ile Cevapla
Alt 21-08-2018 00:03   #8
  • Yarbay
  • Üye Bilgileri
Üyelik tarihi
02/2012
Mesajlar
Konular


  


Alıntı:
1071malazgirt´isimli üyeden Alıntı Mesajı göster
Ellerine sağlık her zamanki gibi bilgilendirici bir yazı olmuş. Dilden dile atlamayın diye yine vurgulamışsınız. Neden öyle dediğinizi bugün daha iyi anlıyorum. Elektronik amaçlı yaklaşık bir yıldır C üzerine yoğunlaşmıştım. Birkaç ay önce yapay zekâyı merak ettiğimden Python öğrenmeye başladım. Tabi C'yi de bırakmadım. İkisini de aynı anda öğrenmeye-geliştirmeye çalışıyorum. Sıkıntı şu ki bazen birine çalışırken diğeriyle karışıyor. Python ve C noktalama bakımından birbirine ters geliyor. Ama gün geçtikçe alıştım. İşin kötü yanı bu yıl okulda C# dersi var. Ve ne yapacağımı bilmiyorum. Aslında bir yandan yeni dil öğreneceğim diye seviniyorum ama diğerleriyle karışır diye de korkuyorum. Size soracağım soru şu:
Sizce C#'a sadece okul için mi çalışayım yoksa diğer dillerin yanında gerçek manada çalışayım mı? Bana faydası mı olur zararı mı?

Bence cebinde c# veya java ikilisinden birisi mutlaka olsun. Fakat ağırlığını tek yere yönelt.


Alıntı:
Konce´isimli üyeden Alıntı Mesajı göster
Ellerine sağlık birde birşey sorabilirmiyim ;
Türkiye'de yazılım mühendisliği için diploma şartmı ve diplomasız yurt dışında çalışabilirmiyiz bu yazılım üzerine ?
Bununla ilgili konuyu güncelliyorum, bu soru da çok sorulanlar arasında. Özet, evet şart.

Alıntı:
erman147´isimli üyeden Alıntı Mesajı göster
c# biliyorum sql ve access komutlarına aşinayım bi kere okusam direk aklıma gelir daha önceden bildiğim ve kullanmaya kullanmaya unuttuğum için bu bilgiyle biryerde işe başlıyabilirmiyim hocam tek sorum bu.
Access kullanılmıyor hiçbir yerde. Oledb adonet falan kalmadı. Sql ve entityframework bakın.

Alıntı:
Theakoles´isimli üyeden Alıntı Mesajı göster
Bu sene özel üniversitede yazılım mühendisliği okumaya başlayacağım kısmetse üstelik %100 ingilizce olacak dersler. Tavsiyeniz nedir iş ve okul hayatimda kolaylık sağlaması için
Çalış, araştır, oku, pratik yap. Kendine 2. sınıfa gelene kadar bir alan seç onun üzerine yoğunlaş. 4 yılını dolu dolu geçir ünide.
    


___________________________________________

Computer Engineer.

Senior Software Engineer.
 Offline  
 
Alıntı ile Cevapla
Alt 21-08-2018 09:22   #9
  • Binbaşı
  • Üye Bilgileri
Üyelik tarihi
06/2015
Mesajlar
Konular


  


Alıntı:
ihan3t´isimli üyeden Alıntı Mesajı göster

Bence cebinde c# veya java ikilisinden birisi mutlaka olsun. Fakat ağırlığını tek yere yönelt.
Teşekkürler o zaman öğrenmeye devam bilginin sonu yok
    


___________________________________________

Ben Ezelden Beridir Hür Yaşadım Hür Yaşarım
Hangi Çılgın Bana Zincir Vuracakmış Şaşarım


Konu 1071malazgirt tarafından (21-08-2018 09:44 Saat 09:44 ) değiştirilmiştir..
 Offline  
 
Alıntı ile Cevapla
Alt 21-08-2018 10:34   #10
  • Asteğmen
  • Üye Bilgileri
Üyelik tarihi
03/2018
Mesajlar
Konular


  


Hocam elinize sağlık benim sorum var:
Yazılımı internnetten öğrenirsem daha iyi yoksa kursa gitsem?
    
 Offline  
 
Alıntı ile Cevapla
Cevapla

Bookmarks

Seçenekler


Bilgilendirme Turkhackteam.net/org
Sitemizde yer alan konular üyelerimiz tarafından paylaşılmaktadır.
Bu konular yasalara uygunluk ve telif hakkı konusunda yönetimimiz tarafından kontrol edilse de, gözden kaçabilen içerikler yer alabilmektedir.
Bu tür konuları turkhackteamiletisim [at] gmail.com mail adresimize bildirebilirsiniz, konular hakkında en kısa sürede gerekli işlemler yapılacaktır.
Please Report Abuse, DMCA, Harassment, Scamming, Warez, Crack, Divx, Mp3 or any Illegal Activity to turkhackteamiletisim [at] gmail.com

Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz.
Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.



         

Powered by vBulletin® Copyright ©2000 - 2018

TSK Mehmetçik Vakfı

Türk Polis Teşkilatını Güçlendirme Vakfı

Google+
film izle

wau

Search Engine Friendly URLs by vBSEO 3.6.0 ©2011, Crawlability, Inc.