Staj Logları 1: Her şey büyük bir patlama ile başladı
Selam, belki de başlığı görerek geldiğiniz bu yazı staj yolculuğumla ilgili beklentinizi karşılayacağını umduğum uzun bir serinin başlangıç yazısı olacak. Yazımın hedef kitlesi sanırım en az 1. sınıf bilgisayar mühendisliği öğrencileri veya yazılım ilgilileri olacak çünkü çok ufak da olsa teknik detaylara gireceğim. Tabii meraklısı olan veya bölümü merak eden herkesin başımın üstünde yeri vardır. Bu noktada öncelikle kendimden bahsetmeli ve bu yolculuğun arkaplanında nelerin olduğunu göstermeliyim. Burayı merak etmeyip staj bulma kısmına atlamak isteyenler beklenmedik bir yolculuk başlığına doğru devam edebilir.
Hakkımda KISA bir özet
Bilgisayar mühendisliği 3. sınıf öğrencisiyim. Bölüme başladığım günden itibaren en sık gördüğüm, duyduğum tavsiye ‘öğrendiklerinizi yazın’ oldu. Ayrıca yıllardır bildiklerimi ve tecrübelerimi anlatmayı seven biri olarak tanıdım kendimi. Çeşitli platformlarda birden çok kez yaptığım ve çeşitli sebeplerle sürdürmediğim bu girişimi artık kalıcı ve düzenli hale getirme niyetiyle tekrar başlatıyorum. Kendimle ilgili henüz çok detay vermeyi düşünmüyorum, isimler ve benzeri bilgileri şimdilik çok geçirmeyebilirim. Genel olarak bilgisayar bilimlerini çok seven ve konseptleri anlayıp uygulamaya meraklı biriyim. Uygulama kısmında ağırlıklı olarak web teknolojileri üzerinde çalışmaktayım. Bunu şimdi böyle yazmak çok kolay gelse de bu kararı en başından verdiğimi söyleyemem. “Şu kadar sene oldu, hala hangi yolda ilerleyeceğime karar veremedim” diyen öğrenci arkadaşlarımı çok iyi anladığım gibi, “artık yolunu belirle, hayata geç kalıyorsun” diyenleri pek anlayamıyorum. Yıllarca çalıştıktan sonra kariyer değişikliği yapmak bile çok olağanken branş değişikliğini gayet normal buluyorum. Tabi ki tecrübeli insanlar bu değişikliklerin getirebileceği olumsuzlukları bilerek böyle bir tavsiyede bulunmakta haklılar fakat bu konunun çok aceleye getirilip sevilmeyen işlere maruz kalınmasının getireceği olumsuzlukları da görmezden gelmemeliyiz. Okulda sevdiğiniz dersler nelerden hoşlandığınıza bir delil olabileceği gibi, olmayabilir de. Web teknolojileriyle ilgilenen biri olarak okulda web geliştirme dersinden hiç hoşlanmamıştım mesela.
2. sınıfa kadar sürekli olarak öğrenerek ilerledim. Algoritmaları, veri yapılarını ve benzeri “core” kavramları öğrendim. C# ile kod yazmaktan çok hoşlandım ve nesne yönelimli programlama (OOP) benim için bir neşe kaynağıydı. Fakat tüm bunlar teorik bilgilerde ve Github’a bile yüklemeyi düşünmediğim ufak projelerde kalıyordu. Bilgilerin uygulamalarla desteklenmedikçe bir işe yaramayacağının farkındaydım. 1. sınıfta Unity ile oyun geliştirmeye çalıştım fakat o kadar sevmedim ki artık bilgisayarı açmak bile içimden gelmiyordu. Neyi istediğimi bilmesem de artık neyi istemediğimi fark etmiştim.
2.sınıfın yaz tatilinde en azından bir alana az da olsa odaklanmam gerektiğini düşünüp web’e başladım. Bu mobil programlama da olabilirdi, yapay zeka da. Bu süreçlerin son derece sancılı geçtiğini de belirtmeliyim. Fakat (başlangıç için) kolay ve direkt sonuçları görebileceğiniz bir alan olduğu için web ile ilgilenmeyi seçtim. Birkaç front-end tasarımı yaptıktan sonra back-end’e geçmeyi planlıyordum.
Bu dönemde Linux ortamı ve açık kaynak kavramıyla tanıştım. Ayrıca son kullanıcı için yapılan uygulamalar yerine geliştiriciler için yapılan çeşitli teknolojileri tanıdım. Buradaysa isteklerim arasında çatışma meydana geldi. UX ve UI tasarlamaktan kısıtlı bilgimle de olsa zevk alıyordum fakat bir yandan bunlarla daha az uğraşıp, kod yazmakta ustalaşmak istiyordum. Aldığım bir tasarım kursunda bu konuda alabileceğim en iyi dersi aldım: “Tasarımda kötü olmak daha iyi kod yazdığınız anlamına gelmez, sadece tasarımda kötü olduğunuz anlamına gelir.”
Bu çatışmaları da bir kenara bıraktıktan sonra, neleri sevdiğim ve neleri sevmediğim uzayıp giden bir liste olur. Bunun da bu yazının bağlamından biraz uzaklaştıracağını fark ettim. Yine de buraya kadar olan kısım, benim sancılarımı çeken arkadaşlarıma yalnız olmadıklarını gösterir diye umut ediyorum.
Beklenmedik Yolculuk
Yolculuğumun başlangıcı bu yılın, 3. sınıfın başlangıcına dayanıyor. Okulda kısmi zamanlı çalışmak için ilan açıldığını gördüm ve ilk dönem bazı derslerin de uzaktan olması sebebiyle boş zamanlarımı çalışarak geçirebilirim diye düşündüm. Bilgi İşlem birimine gidip burada çalışacak olan öğrencilerden beklentileri neler diye sordum. Genellikle format atmak, okul bilgisayarlarını çalışır hale getirmek gibi cevaplar aldım ama yapacak daha iyi bir işim yoktu ben de başvurdum. Oraya kabul edildikten sonraysa umduğumdan çok daha güzel bir iş verildi bana: Üniversitenin otomasyon sistemine bir uygulama entegre edecektim. Bir tür istek/öneri uygulaması. Resmi kurumlarda bu işlerin nasıl döndüğünü bilirsiniz. İstekler birimler arası yönlendirilir veya cevaplandırılır. Aynı sistem üzerinde tüm bunların takibinin yapılması gerekir. Kısacası web geliştirme yapacaktım üstelik var olan bir sisteme. İlk iki hafta ortama adapte olmam yani ASP.NET Core , MVC tasarım deseni gibi teknolojileri öğrenmem ve var olan kodları bol bol okumam gerekti. Ardından programlamaya başladım ve şu an hala orada çalışmaya devam etsem de projeyi büyük ölçekte hallettiğimi gururla söyleyebilirim. Bu noktada ilk kez var olan bir projeye kod yazma ve bir supervisor (yönetici) ve başkanla çalışma deneyimi kazanmış oldum. Projenin ilk kısımları ortaya çıkmaya başladığında daire başkanının odasında büyük ekranda filmlerdeki gibi bir sunum yapmıştım ve yaşadığım en heyecan verici deneyimlerden biriydi.
2022’nin başlarında 3. sınıfın yaz tatilini geçirmek üzere staj arayışına başladım. Hala web üzerinde mi gideceğim yoksa başka alanları da deneyip tecrübe edinmeli miyim kararsızdım. Bir yandan okulda gördüğüm dersleri mümkün olduğunca absorbe edip alabileceğim en büyük faydayı almaya çalışıyordum çünkü bu alanlara tekrar dönmeye vaktim olmayabilirdi. Kısacası her şeyi istiyordum ama olmayacağının farkındaydım. Bir iki staja başvurduktan sonra bir arkadaşım bir ilan attı. Bir şirkette web geliştirme alanında uzun dönem stajyer aranıyordu ve uzaktan çalışacaktık. Şartlar son derece ikna ediciydi ve mükemmel bir tecrübe olacağını düşünerek özgeçmişimi gönderdim.
Staj arayışından öğrenme sürecine, eğitimin tüm aşamalarında arkadaş desteğinin önemini belirtmek istiyorum. Ben arkadaşlarıma ders notlarımı atarım, onlar bana atar, böyle ilanları, etkinlikleri, faydalı olabilecek her şeyi birbirimizle paylaşırız. Birbirimize yeni bakış açıları, deneyimler ve fikirler kazandırıyoruz ve üniversitede kazanılan en önemli kazanımlardan birinin bu olabileceğine inanıyorum. İyi insanları rakibimiz olarak görmemeliyiz.
Stajdan umutluydum çünkü tecrübem vardı ve başvuru formunda kendimi çok güzel ifade etmiştim. Mülakat günü çok heyecanlıydım. Bir proje koordinatörü ve teknik ekipten biriyle online mülakata girdim. Bana neler yaptığım, günlerimin nasıl geçtiği soruldu. Çoğunlukla Microsoft teknolojileriyle çalıştığımı, onlarınsa şirkette farklı teknolojiler kullandıklarını buna uyum sağlayıp sağlayamayacağımı sordular.
Mülakattan sonra bir süre kendime gelemedim diyebilirim. Kötü geçtiğini, kendimi ifade edemediğimi düşünüyordum. Microsoft ortamlarından (mecbur kalmadıkça) kaçtığımı söyleyememiştim. Fakat çalışkan olduğumu, öğrenmeye hevesli olduğumu özgüvenle söylemiştim fakat bunların yeterli olacağından emin değildim. Bunları anlatıyorum çünkü 1 hafta sonra olumlu haber aldım. :) Süreç boyunca yolunda gitmeyen şeyler her zaman kötü sonuçların habercisi olmayabiliyor yani.
Staja kabul edilmiştim ve görünen oydu ki sandığım kadar kötü geçmemişti. İlk mülakatımdan olumlu dönüş almak beni tabi ki gururlandırdı ve özgüvenimi yeniledi. Bütün bunlar bu Nisan ayının başında oldu.
Stajda ilk iki hafta
Staja kabul edilme sürecinden sonra ilk iki haftada neler olduğundan bahsedeyim. Bundan sonra da haftalık olarak yazmaya devam edeceğim.
İlk olarak kabul edilen stajyerlerin ve takım liderlerinin olduğu bir online toplantı düzenlendi. Bundan sonra toplantıların online olduğunu tekrar belirtmeyeceğim, bütün toplantıları, görüşmeleri vs. online ortak parantezine alabiliriz çünkü bu stajın tamamı uzaktan gerçekleşecek. Bu toplantıda farklı alanlarda çalışacak olan 3 takım olduğunu öğrendim. Biz web geliştirme ekibi olarak mentorümüzle birlikte 6 kişilik bir takımız.
Bu takımla da ayrıca bir toplantı yaptık. İlk iki aylık süreçte, ortama ve kullanılan teknolojilere alışmamız için bir proje geliştirmemiz gerekiyor. Bu projenin de ayrıntılarını sonradan yazmayı planlıyorum fakat kısaca bahsetmek gerekirse Python / Flask kullanarak bir blog sistemi geliştireceğimiz bu projede MongoDB veritabanını kullanacağız ve Vue.js framework’ü ile front-end geliştireceğiz.
Projede benim için yeni olan şeyleri yazayım: her şey.
İlişkisel veritabanlarıyla aram gayet iyi olsa da hiç nosql bir veritabanı kullanmamıştım. Genel olarak programlama bilgisi olan biri için yeni bir programlama diline (başlangıçta) adapte olmak zor olmuyor , birkaç fazladan noktalı virgülden sonra Python’a temel düzeyde alıştım fakat Flask ile de geliştirme yapmamıştım. Vue.js ile bir proje geliştirmiş olsam da bu kadar yabancı şeyin içinde bana pek tesellisi olmadı denilebilir..
Bunlar bir yana, yeni olan birkaç şeyden daha bahsedebilirim:
Hepimiz git kullanıyoruz, (kullanıyor olmalıyız) fakat commit mesajlarını nasıl yazıyoruz? Conventional commits bu mesajlara bir standart getiren bir tanımlama böylece ekipteki herkes aynı noktada olabiliyor. Code review’lar daha kolay oluyor ve proje daha düzenli ilerliyor. Ayrıca semantic versioning denilen versiyonlamaya da yardımcı oluyor. Örneğin bir uygulamanın 4.7.3. sürümü aslında bu commitlerdeki fix, feature ve breaking change başlıklarıyla alakalı.
Ayrıca verilen görevde dokümantasyon yazmanın önemi ve RESTful API geliştirme gibi detaylardan da bahsediliyor fakat bu detayları bir sonraki teknik yazıya saklıyorum.
Staj sürecinde sevdiğim şeylerden biri de her hafta yaptıklarımızla alakala rapor yazıyor olmamız ve düzenli olarak hem teknik takım toplantıları hem de bireysel toplantılar yapıyor olmamız. Bir ekip içinde profesyonel bir iş yaptığımın bilincinde olmak motivasyonumu arttırıyor diyebilirim.
Bu yazı başta planladığımdan farklı bir yönde evrildi fakat bundan sonraki süreci daha iyi anlatabilmem için bu arkaplanı verdiğime memnunum. Teknik detaylara girdiğim devam yazısı: Staj Logları 2: Proje Raporu
Okuduğunuz için teşekkürler. Konuyla ilgili ekleme, düzeltme yapmak ya da
tartışmak isterseniz memnuniyetle karşılık veririm.