Backend'te iş bulma amaçlı portföy proje önerisi

yasinbmt00

Hectopat
Katılım
18 Temmuz 2022
Mesajlar
189
Daha fazla  
Cinsiyet
Erkek
Bir yerde staj yapiyorum ve 2 ay sonra bitecek stajim. Oradan devam edemeyecegim o kesin. Java kullaniyorlar ki bende spring ogreniyorum. Stajdan sonra is bulmam gerekecek. Nasil bir site yaparsam basvurularima donus daha garanti olur? Tavsiyeniz var mi?
 
Son düzenleyen: Moderatör:
Ben şu ana kadar çoğunlukla masaüstü uygulama geliştirdiğimden dolayı pek bilgim yok. Etiketlenmiş olduğum için mantıken aklıma gelenleri yazacağım.

Projenin aşırı karmaşık ve büyük olması şart değil diye düşünüyorum. Zaman yeterse şöyle bir şey yapılabilir:
Birkaç kişilik gruptan oluşan bir site geliştirirsin. Harcinde de tek başına yaptığın portföy sitesi ile grup dahilinde yaptığınız siteye bağlantı bırakırsınız.

Amaç: Olabilidiğince fazla şey (şu an aklıma gelen AJAX vb.) kullanmak ve basit görünen projeler olsa bile arka planında mantıklı ve çok yönlü durumlar barındıran siteler geliştirmek. Yukarıda dediğim şey de buna dahil.

Mesela hem tek başına site geliştirip hem de bir grup çalışmasında yer edinirsen bu da senin dinamikliğini ve uyumunu ortaya koyar.

Oluşturacağın büyük ve dolu dolu görünen ama temelinde basit olan projeler yerine basit görünen ama yapması güç olan projeler tercih edilir.

Kendimden örnek verecek olursam: Şu an server - client iletişiminde olacak iki ayrı uygulama geliştiriyorum. İstemci uygulaması sunucuya bağlanacak ve sunucu tarafından komut alacak, dosya ve ekran görüntüsü gönderecek vesaire fonksiyonlar barındıracak. Uzaktan bilgisayar yönetim uygulaması diyebilirim.
Bu uygulamalar şu an (her biri için) 4-5 tane .h ve 4-5 tane .cpp uzantılı dosyalar ile 100-200 satırlık kodlardan (ASIO gibi kütüphaneler ve Qt arayüzü hariç) oluşuyor ama yaparken beynimi bir kenara bırakasım geliyor. Basit görünüyor ama yapması, iki uygulama arasında bağlantı kurması falan güç.
 
Son düzenleme:
Etiket icin tesekkur ederim ancak ben kariyer tavsiyesi verebilecek konumda degilim. Ancak kendi ise giris tecrubemi paylasabilirim. Yardimci olur mu bilmiyorum. Herkes icin ayni sartlar gelismeyebilir ancak isine yararsa ne mutlu bana.

Cok uzun olmadi ben mezun olali. Mezuniyet projem disinda oturup hic dusunerek proje secmedim. Ne zaman bir ihtiyacim olan bir sey oldugunu dusunsem, o zaman bir sey urettim. Simdi gizlide duran boyle bir kac projem var.

Beni ise alan kisiyle online'da tanistik. Kendisi bir sirkette CTO, bir discord sunucusunda programlama konusurken tanistik hatta. Kendisinin hakkimda olumlu fikirlerini olusturan seyler (hic biri devasa projeler degil halbuki) kendi problemlerimi cozmek icin urettigim araclar oldu. Teknik mulakata cagirdi. Online bir mulakatti. Basit networking, http, sirkette en cok kullanilan dil olan PHP (spesifik olarak Laravel) ile ilgili sorular sordu, ornek kodlar istedi, C++ ve PHP disinda bildigim diller olup olmadigini sordu. En son bana normalde junior ise almadiklarini bu yuzden bana free lance bir is vermek istediklerini soyledi.

C++ ile sadece Windows'ta calisan bir uygulama ve onun kullanacagi Laravel ile yazilmis bir API grubu. Bir ayda falan cikarttim istedikleri seyi. Bu sirada hala universitedeydim. Kodu inceledi, urunu inceledi. En sonunda seninle calisabiliriz deyip bana is teklif etti.

Ben sansliydim, bir CTO ile tanisma sansim oldu. Ancak sonrasinda beni ise almalarini saglayan sey fikrimce, oturup gordugum bir problemi cozmek icin (sadece kendi ihtiyaclarimi karsilayacak olsa bile) bir seyler uretmem oldu diye dusunuyorum.

Uzun bir yazi oldu ama dedigim gibi, kariyer tavsiyesi verecek konumda oldugumu dusunmuyorum. Su proje sana is bulur diyecek konumda da degilim zira hangi projem tam olarak beni ise alan kisinin ilgisini cekti bilmiyorum.
 
@TheAny ve @Movansha ben bu alanda bilginiz var diye sizi etiketlemiştim arkadaşlar, yanıtlarınız yine de çok çok güzel ve yararlıydı bence, tabi daha tecrübeli kişiler daha detaylı bilgi sağlayabilir ancak yine de ellerinize sağlık, ben kendi adıma teşekkür ederim.
 
Web hakkında bilgim neredeyse hiç yok denebilir. OOP ve Game Developer bölümleriyle uğraşıyorum.
Bir yerde staj yapiyorum ve 2 ay sonra bitecek stajim. Oradan devam edemeyecegim o kesin. Java kullaniyorlar ki bende spring ogreniyorum. Stajdan sonra is bulmam gerekecek. Nasil bir site yaparsam basvurularima donus daha garanti olur? Tavsiyeniz var mi?
@TheAny @Movansha Dedikleri gibi. Ben birisinin beni bulmasını veya kendimi kanıtlamaya çalışmadığımdan bu konuda yönlendiremem. Sadece çevremdekilerden örnek verecek olursam:
10 iş yerinin 9'u GitHub Aktifliğine ve Gerekli gereksiz ne kadar proje yaptığına bakıyorlarmış.
Çoğu kişinin yapabildiği/yaptığı bir projeyi fork edip veya normal projeler yapmandan ziyade dünyada az bulunan veya hiç bulunmayan projeleri yapmanı öneririm. Üzgünüm dediğim gibi ben bu sektörde olmadığımdan pek bir şey diyemedim. @TheAny kendisi bu sektörde. Bilmiyorum ama belki @bitwise de bu sektörle ilgileniyordur.
 
Son düzenleme:
Hocam şu an sektörün gidişatı Juniorlar için pek iyi değil. Bence en iyi cevaba ben işveren olsam neden kendimi işe alırım muhakemesiyle ulaşırsınız.

Bende deneyimli çok değilim tavsiye verebilecek durumda da değilim ama en azından kendi tecrübelerimden söylüyorum.

Şirkete frontend için bir iş ilanı açıldı. 2-3 günde 1000 civarı CV geldi. Çoğuna bakılmadı bile genel kritlerler uzun süre deneyim,toollara hakimiyet,üniversite gibi kriterlerdi. Özellikle CV'de güzel firmalar varsa eli güçleniyordu. Ancak o ilk girişi yapmak sektöre oldukça zorlaştı. Kimse Juniorlar ile uğraşmak istemiyor. Uğraşan firmalarda da çok eziliyorsunuz iş altında. Bence Start-Up deneyin. Başarırsanız kendi işinizin sahibi olursunuz,başaramazsanız elinizde sağlam bir projeniz olur CV için.

Verebileceğim tavsiye bu olur eğer Junior'luk kapısını size açıcak birisi veya bir yer yoksa.

Ayrıca başkalarının kodu üstünde çalışmayı öğrenin derim. Farklı Repo'ları GitHub'dan çekip,ben bunu nasıl geliştirebilirim diye üstünde çalışın. Gerekirse Contribute yapmaya çalışın güzel projelere.

İş hayatında AR-GE'den çok genelde başkalarının yazdığı işlerin üstüne bir şeyler inşa ediyorsunuz. En azından benim gözlemim bu şekilde.

Bilmiyorum yukarıdaki hocalarım ne düşünüyor ama bence Frontend,Backend taraflarında ciddi bir daralma olucak. Özellikle üretkenliği destekeleyen AI Powered IDE olsun,GPT olsun. Bunların çoğu ciddi,yetkin birisinin elinde çok güzel araçlara dönebiliyor bunu içerdeki Seniorları izlerken gördüm.

Sektörün daralacağını düşünmüyorum. Geleceği en parlak sektör bana kalırsa ancak uzun vadede istihdam oranlarının düşeceğini düşünüyorum. O yüzden kendinizi diğer kesimlerden daha yetkin hale getirmeye bakın.
 
Son düzenleme:
Eskiden basit boilerplate kodu junior'lar yazardi, su anda AI ya da IDE asistanlari ile halledilebiliyor. O sebeple firmalar teknik bilgisi yeterli seviyeye ulasmamis junior almaktansa senior tercih ediyorlar.

10 tane junior, 1 tane senior in isini yapamiyor. Uretkenlik degil, problem cozme becerisi buradaki sorun. 10 tane ortaokul ogrencisinin 1 tane lise ogrencisinin cozebildigi matematik sorusunu cozememesi ile ayni mesele. Ayrica hicbir senior 10 tane junior'in arkasini toplamakla da ugrasmak istemez. Verilen isi gurultusuz ve guvenilir sekilde halledebilsin, anlamli sorular sorsun ister. Yine bir donem 10 junior , 3 senior, 1 lead seklinde hiyerarsik yapilanmalar varken artik 8 senior - 1 lead seklinde takimlar kuruluyor. Basit isi zaten tool'larla hallediyoruz. Kimse sifirdan XML yazmiyor artik.

O sebeple tavsiyem, tecrubesiz de olsaniz spesifik bir alanda teorik bilgisinizi gosterebileceginiz hatta bunu gosterebileceginiz bir portfolyo kurgulamaniz. Standart zimbirtilar disinda bulunmaniz. Ornegin Oracle Coherence icin basvuru yapiyorsaniz en azindan teorik olarak distributed computing nasil yapip, cache nasil calisir, election algoritmalari nelerdir gibi konularda bildiginizi cok hizli sekilde gosteren seyler yapmaniz. https://www.oracle.com/java/coherence/

Junior islere o kadar basvuru geliyor ki kimsenin web sitesini inceleyecek vakit olmuyor. Hizlica egitim, tecrube ilgi alani inceleyip bazen github'ina bakiyoruz yalnizca. Todo app varsa kapatiyoruz. Herhangi bir adayin incelenme suresi 45 saniye. O sebeple CV hazirlarken ya da portfolyo sitesi hazirlarken her zaman birinci amac hizlica vermeniz gereken mesaji vermek olmali. Bunlarin amaci sizi mulakata cagirmaya deger bulmalarini saglamak. Kim oldugunucu en ince ayrintisiyla tum dunyaya tanitmak degil. Mulakata cagrildiysaniz, CV vazifesini tamamlamistir. Adamin web sitesini actiginda bos ekranda imlec "Merhaba.... ( yazip sil ) Ben Huseyin Tomurcuk .... ( yazip sil )" seklinde yarim saat sekil yapiyorsa aninda kapatiyoruz haberiniz olsun :) Random basakli bir akademisyenin CV'sine bakarsaniz dunyanin en basit HTML CSS yapisiyla sira sira publication listeledigini gorursunuz, muhim olan o cunku.

Basvuran kisi digerlerinden daha teknik olarak guclu gorunuyor, projeye dahil oldugunda hizlica olaylari kavrayabileceginin sinyalini veriyorsa iste o zaman sansi yuksek. Junior developer'larin teorik bilgisi senior'lardan daha yuksek de olabilir; tek eksikleri tecrube. Onu da kisa surede kapatabilecegine karsi tarafi ikna ederse bu is tamam demektir.
 
Son düzenleme:
Diğer hocalarıma katılıyorum. Ama asıl soruya net cevap vermedikleri için yazma gereği duydum.
Nasil bir site yaparsam basvurularima donus daha garanti olur?
Production ortamında, belli kullanıcısı ve trafiği olan bir projen olsun. Bu projeyi open source yap. Madem amacın iş bulabilmek o halde yeteneklerini ve sektör bilgini göster.
Trafik alan bir proje fikri bulsak ilk biz yaparız :) O sebeple senin araştırman ve ihtiyaçları tespit edip, projeyi kendin oluşturman daha mantıklı.
Bir diğer proje fikri şu olabilir; Backend de kullanılan bazı teknolojileri kullandığın bir repo oluştur. Bunları bildiğini ve kullanabildiğini göster. Bilmiyorsan öğrenmiş olursun.
Mesela;
- Kuyruk yapısı. Inbox-outbox yapısı. Producer/consumer yapısı.
Bu projede kafka kullanılabilir. Kafka çok sık kullanılan bir teknoloji.

- Logging, monitoring, alerting
Normalde zabbix falan kurarlar, pek senlik bir durum olmayabilir. Ama en azından sık kullanılan, elasticsearch araştırıp kullanmayı dene. Özellikle microservice yapılarında bir isteği takip edebil. CorrelationId olarak geçer çoğu yerde. Monitoring ve alert içinde Prometheus + Grafana öğren. Yabancı kalmamış olursun. Ama elzem bir konu değil.

- Cache
Tabiki ilk akla gelen Redis. Redis duymadım diyen bir backend geliştiricisi yoktur bence. Memory Cache de bil, CDN cache de.

- Container/orchestration
Yine ilk akla gelenler; Docker, Kubernetes. Bir projeyi containerlaştırmak (Türkçesi ne bunun?) ve scale edebilmek lazım. Scale horizontal olur vertical olur. Farketmez. Yapıyı ona göre kurgulayabilmelisin. Yeri geldiğinde DB ler bile scale olur.

- Database/ORM
Hem SQL hemde NoSQL bil bence. İlla mongodb kullanmak zorunda değilsin. Redis çok kullanışlıdır. Redisi tercih ederim çoğu durumda. SQL sorgusu yazabilmelisin. Büyük veri setlerinde çalış. Gece gündüz sql yaz. DB tarafında benim sık kullandığım PostgreSQL dir. MySQL, MSSQL, MariaDB kullanılabilir. Burada yabancı olmamak için db management programlarına belki göz atılabilir. Ben navicat kullanıyorum.

- Network
Ağ yapılarını bilmelisin. API kullandığı protokolleri(Bu ifade doğru mu bilemedim) bilmelisin. RestAPI, Soap, GraphQL, Socket, gRPC, message queue vs. Kullanmasan bile bu yapıların olduğunu bil. Her şey restapi olmayabiliyor.

- Authentication/Authorization
Bence en can alıcı kısım olabilir. Projelerinde auth sistemlerini kullan. Bir api sistemini dışarıya açtığını düşün. API key vermelisin. Yada Public(client) API key verdiğini düşün. Bunu koruyabilmelisin (cors-origin). Bu sistemi kurgulayabilmelisin. Bunun dışında belki oAuth bakabilirsin. Böyle bir mimari tasarlayabilirsin. Detaylı link

- CI/CD
CI; testler (unit, A/B, api vs), statik kod analizleri, code review (Yeni çıkan bazı AI'lar yapabiliyor). CD; Proje open source ise Github actions iyidir. Private ise Jenkins iyidir.

- Job/Worker
Gerçek projelerde çok sık görebileceğin bir konudur bu. İlk maddede ki kuyruk yapısı ile aynı başlıkta toplanabilir. Ama bunu genelde proje içerisinde kullanırız. Mesela; Bir işi arka planda halletmesi gerekiyor ki ön taraf beklemesine gerek kalmasın. Yada 90sn response kuralı vardır. Ama işlem min 5dk sürecektir. Worker'a atıyorsun işi hallediyor, en son kullanıcıyı bilgilendirir geçer. Kuyruk yapısında ise, proje içinde kuyruğa atarsın. İşleyen consumer artık ne yapıyorsa yapıyor, bu consumer başkası tarafından yazılabilir. Sana şu kuyruğa gönder ben onu işlerim der. Sende yapıyı ona göre kurgularsın. Bunu şu yüzden sık kullanıyoruz açıkçası, consumer genelde başka programları tetikliyor, dosya sistemine erişiyor falan. Yoksa basit db ye gidecekse worker yazmak daha mantıklı.

Çok uzun bir yazı oldu kusura bakmayın. Tüm backend bilgimi aktarmış oldum sanki : ) Ama bu konuları bilen birini, özellikle junior olup bunları bilen birilerini gördüğünde, işe girme yüzdeliğin büyük ölçüde artmış olacaktır. Benim 3-4 yıllık tecrübem bunlar : )

Aç bir repo, klasör klasör koy içine. Tek repoda birleştir. Bir proje olmasına gerek yok. Log bas. README dosyasına kullandığın teknolojileri yaz. İlgi çekecektir.
 
Son düzenleme:
Eskiden basit boilerplate kodu junior'lar yazardi, su anda AI ya da IDE asistanlari ile halledilebiliyor. O sebeple firmalar teknik bilgisi yeterli seviyeye ulasmamis junior almaktansa senior tercih ediyorlar.

10 tane junior, 1 tane senior in isini yapamiyor. Uretkenlik degil, problem cozme becerisi buradaki sorun. 10 tane ortaokul ogrencisinin 1 tane lise ogrencisinin cozebildigi matematik sorusunu cozememesi ile ayni mesele. Ayrica hicbir senior 10 tane junior'in arkasini toplamakla da ugrasmak istemez. Verilen isi gurultusuz ve guvenilir sekilde halledebilsin, anlamli sorular sorsun ister. Yine bir donem 10 junior , 3 senior, 1 lead seklinde hiyerarsik yapilanmalar varken artik 8 senior - 1 lead seklinde takimlar kuruluyor. Basit isi zaten tool'larla hallediyoruz. Kimse sifirdan XML yazmiyor artik.

O sebeple tavsiyem, tecrubesiz de olsaniz spesifik bir alanda teorik bilgisinizi gosterebileceginiz hatta bunu gosterebileceginiz bir portfolyo kurgulamaniz. Standart zimbirtilar disinda bulunmaniz. Ornegin Oracle Coherence icin basvuru yapiyorsaniz en azindan teorik olarak distributed computing nasil yapip, cache nasil calisir, election algoritmalari nelerdir gibi konularda bildiginizi cok hizli sekilde gosteren seyler yapmaniz. https://www.oracle.com/java/coherence/

Junior islere o kadar basvuru geliyor ki kimsenin web sitesini inceleyecek vakit olmuyor. Hizlica egitim, tecrube ilgi alani inceleyip bazen github'ina bakiyoruz yalnizca. Todo app varsa kapatiyoruz. Herhangi bir adayin incelenme suresi 45 saniye. O sebeple CV hazirlarken ya da portfolyo sitesi hazirlarken her zaman birinci amac hizlica vermeniz gereken mesaji vermek olmali. Bunlarin amaci sizi mulakata cagirmaya deger bulmalarini saglamak. Kim oldugunucu en ince ayrintisiyla tum dunyaya tanitmak degil. Mulakata cagrildiysaniz, CV vazifesini tamamlamistir. Adamin web sitesini actiginda bos ekranda imlec "Merhaba.... ( yazip sil ) Ben Huseyin Tomurcuk .... ( yazip sil )" seklinde yarim saat sekil yapiyorsa aninda kapatiyoruz haberiniz olsun :) Random basakli bir akademisyenin CV'sine bakarsaniz dunyanin en basit HTML CSS yapisiyla sira sira publication listeledigini gorursunuz, muhim olan o cunku.

Basvuran kisi digerlerinden daha teknik olarak guclu gorunuyor, projeye dahil oldugunda hizlica olaylari kavrayabileceginin sinyalini veriyorsa iste o zaman sansi yuksek. Junior developer'larin teorik bilgisi senior'lardan daha yuksek de olabilir; tek eksikleri tecrube. Onu da kisa surede kapatabilecegine karsi tarafi ikna ederse bu is tamam demektir.
Hocam KS her ne kadar portfolyo istemiş olsa da junior adaylar da kişiliğe teknikten daha çok bakılmıyor mu? Çünkü teknik taraf ingilizce ve doğru kaynaklar ile öğrenilir. Junior bir şekilde ilerlerken önemli olan kısım github hesabında milyon dolarlık bir repo olması değil. Problem çözme yeteneğini geliştirmesidir.

Problem çözebiliyor mu? Sosyal mi içine mi kapanık? Bir sorun ile karşılaştığı zaman üstlerine soruyor mu? Olası bir kriz anında sakin kalıp problemi çözmeye konsantre olabiliyor mu? Yoksa panik mi yapıyor? Problemi çözerken olaylara mantıksal mi yaklaşıyor yoksa ezber mi? Gibi gibi hocam.

Senior kişiler zaten bunları çok defa yaptıkları için kişilikleri öyle olmasa bile zamanla gelişmiştir diye tahmin ediyorum.
 

Technopat Haberler

Yeni konular

Geri
Yukarı