Bitirme Projemiz Üniversitede Dönemin En İyi Projesi Seçildi

Yazar tarafından çekilmiş görsel
Bu yazıda, Ankara Yıldırım Beyazıt Üniversitesi Bilgisayar Mühendisliği bölümünde okurken son senemizde yaptığımız bitirme projesinden bahsedeceğim. Teknik detaylara girmeden, genel hatlarıyla projeyi anlatacak ve öğrenciler için birkaç öneride bulunacağım.
Projemizin teknik detaylarını başka bir yazıda anlattım. O yazı da hazır ve en kısa zamanda editör incelemesinden geçip yayınlanacak.
Bilgisayar ve yazılım mühendisliği bölümlerinde okuyanlar, son yıllarında bir bitirme projesi yapmaları gerektiğini bilirler. Bu projeler, öğrendiklerinizi uygulamanızı, kariyerinizi geliştirmenizi ve iş ararken rakiplerinizin önüne geçmenizi sağlar. Şimdi, bitirme projesi seçecek öğrenci kardeşlerime yardımcı olabilmek adına proje seçimiyle ilgili bazı önerilerimi paylaşmak istiyorum:
Photo by John Schnobrich on Unsplash
Stajınızda Üzerinde Çalıştığınız Teknoloji
Bitirme projesi isteyen bir bölümde okuyorsanız, yazılımı seviyorsanız ve mezun olduğunuzda yazılım geliştirici olmak istiyorsanız stajınızı mümkün olduğunca iyi yapmalı, yani staj esnasında çok şey öğrenmelisiniz.
İlgi ve Tutku
Projeyi seçme aşamasında, üzerinde çalışmaktan keyif alacağınız ve tutkulu olduğunuz bir konu seçmeniz önemlidir. Uzun saatler boyunca emek harcayacağınız bir proje için motivasyonunuzu yüksek tutacak bir konu bulmanız sizin için faydalı olacaktır.
Öğrenme Potansiyeli
Seçeceğiniz projenin yeni teknolojiler öğrenmenize ve var olan bilgi ve becerilerinizi geliştirmenize olanak tanıması önemlidir. Bu, hem profesyonel gelişiminizi destekler hem de mezuniyet sonrası kariyer fırsatlarınızı artırır.
Kariyer Hedefleri
Uzun vadeli kariyer hedeflerinizle uyumlu bir proje seçmeniz, iş dünyasına adım attığınızda size avantaj sağlayarak ilgilendiğiniz sektörde veya teknolojide deneyim kazandırır. Eğer kariyer hedefleriniz yoksa bunları belirlemeniz ve proje seçiminizi buna göre yapmanız önemlidir.
Zorluk Seviyesi
Projenin zorluk seviyesinin mevcut bilgi ve beceri düzeyinizin biraz -çok değil- üstünde olması gerekir. Bu tür projeler, size problem çözme becerilerinizi geliştirme fırsatı sunar. Bunun yanında, çok zor veya çok kolay bir proje seçmek ise öğrenme deneyiminizi olumsuz etkiler. Biz çok zor bir proje seçtik; tavsiye eder miyim bilemiyorum, kendiniz değerlendirin.
Yenilikçilik
Piyasada veya akademik çevrede daha önce denenmemiş, yenilikçi bir fikir üzerine çalışmak, projenizin dikkat çekmesini ve değer kazanmasını sağlayabilir. Ben hâlâ iş görüşmelerinde mesleki tecrübelerimi anlatmaya bitirme projemden başlıyorum. Şimdiye kadar da -şirket büyüklüğü fark etmeksizin- katıldığım 400–500 görüşmenin hiçbirinde projeme saygı duymayan veya ilgi göstermeyen bir yöneticiyle karşılaşmadım.
Sonuçların Etkisi
Projenin potansiyel etkisini değerlendirin. Geliştirdiğiniz sistemin veya yazılımın gerçek dünya problemlerine çözüm getirme potansiyeli var mı? Bu tür projeler, hem motivasyonunuzu hem de projenizin etkisini ve görünürlüğünü artırabilir.
Zaman Yönetimi
Proje için ayıracağınız zamanı iyi değerlendirin. Bitirme projeleri genellikle eylülde seçilir ve 6–8 aylık bir çalışma sürecini kapsar ancak hâlâ bir öğrenci olduğunuzu ve başka derslerinizin de olduğunu unutmayın. Seçeceğiniz projenin belirlenen süre içinde tamamlanabilir olması ve derslerinizi etkilememesi önemlidir.
Takımla Çalışmak
Projeyi mümkünse tek başınıza yapmayın, üniversite yıllarında en sevdiğiniz ve birlikte vakit geçirdiğiniz arkadaşlarınızla yapın. Bu sayede hem projenin ilerleme durumunu tartışıp birbiriniz için itici güç oluşturursunuz hem de iş görüşmelerinde “3 (veya 5, kaç kişiyseniz) kişilik bir ekiple yaptık.” dediğinizde karşınızdakine “takım çalışmasına uyumlu” bir görüntü çizersiniz.
Proje Çalışıyor Olmalı
“Done is better than perfect.” Hiç kimse bir öğrenciden, hatta bir junior’dan tertemiz kod beklemeyecek. Sizi junior olarak işe alan şirketler de bunun bilincinde olacaklar ve beklemeyecekler. Bu durumu göze alarak ona göre bir ücret verecekler. İşi güzel bitirin, makalenizi özenle yazın. Bunlar, bitirme projesi için kod kalitesinden çok daha önemlidir.
Photo by Vasily Koloda on Unsplash
Stajların Önemi
İlk maddede stajların önemine değinmiştim. Stajlarımı ASP.Net MVC 5 teknolojisini kullanarak büyük bir devlet kurumunda ve ERP (Kurumsal Kaynak Planlama) yazılımı yapan bir şirkette yaptım. Bu sayede o zamanlar bu teknolojiyi iyi öğrendim. Hatta bu büyük kurumun gov.tr uzantılı resmî web sitesini -stajyer hâlimle- ben geliştirdim.
Uzun bir süre boyunca, tarayıcıda sağ tık yapıp “incele” diyerek -karşınızdaki insanın bakmak istemediğiniz ama bakmaktan da kendinizi alamadığınız maydanozlu ön dişi gibi- dikkatimi ele geçiren rezil kodlarım a bakmaktan kendimi alıkoyamadım. Başta “Aa, yeni bir site yapmamışlar daha, kodlarım hâlâ duruyor.” deyip mutlu oluyordum ancak zaman geçtikçe “Keşke yenisini yapsalar ya! Bunu ne biçim yazmışım, bu da nedir? Ya, formatlayaydım bari, o bile yok. Allah’ın pisi be!” demeye, kodlarımı beğenmemeye başladım.
Unutmayın, sektörde bilinen bir gerçek vardır: Kendi kodunu beğenmemek kötü bir şey değildir. “İyi bir programcı, altı ay önce yazdığı koda bakıp da “Bu kodu yazarken aklım neredeydi? Ne düşünüyordum ben?” demiyorsa yeterince hızlı öğrenmiyor demektir.”
Üniversite yıllarını beraber geçirdiğim sevimli, caanım kardolarımla üç umutsuz vaka olarak boş boş gezdiğimiz, birbirimize iğrenç espriler yapıp, laf sokup, hakaret edip, lakap takıp bir de eğlendiğimiz güzel günlerdi. Üç loser, üç amele, üç “low”; her yerimizde hissettiğimiz kavak yelleriyle haftada 2–3 gün PS cafe’ye gidip 4–5 saat, ağzımızdan salyalar aka aka, hiç kalkmadan, popolarımız ağrıyana kadar Pes oynuyorduk. (Annem bu yazıyı inşallah okumaz.) Uzun, kimi zaman Kızılay-Ulus, kimi zaman Etlik-Yenimahalle arası yaptığımız -doğaçlama ve harita uygulaması kullanmadan başlayıp biten- Ankara yürüyüşlerimiz boyunca süren dedikodularımızı, birbirimizi şakadan aşağılamalarımızı ve eğlenmelerimizi asla unutamıyorum.
Geyiğe takılmayın. Bölümde yazılım bilgisi en iyi olan ve yazılım derslerinde en başarılı öğrenci bendim. Hatta şimdi bile baktığımda, bizim dönemde mezun olmuş ve benim çalıştığım kadar büyük şirketlerde, bankalarda veya Türkiye’nin en büyük ajanslarının ayarında bir şirkette çalışmış kimse göremiyorum. Benimle mülakata girseler onları işe almam. :) Son senemizin başında, “bitirme projesinde ne yapacağımız” sorusu aklımıza düşmüştü. Hocalarımız bitirme projelerini sıkı tutacaklarını, iyi bir proje çıkarmayanları mezun etmeyeceklerini söylemelerine rağmen, üçlümüzün uzun boylu çiçeği Taner, “Kasmayın, boş verin o(ğ)lum! ilk mezunlar biz olmayacak mıyız? Bırakamazlar bizi.” düşüncesindeydi. (Ankara Yıldırım Beyazıt Üniversitesi yeni kurulmuştu ve ilk öğrencileri bizlerdik.) Ben ise pimpirikli, tatminsiz ve çok bilmiş yapımla “Öyle olmaz, doğru düzgün bir proje yapmak zorundayız.” diyordum.
Photo by Nathan Dumlao on Unsplash
Bitirme Projesi Fikri
Asp.NET MVC 5 teknolojisini bildiğim (!) için bitirme projesini de bununla yapabileceğimi sevgili kardolarıma ilettim. 2015–2016 yıllarından bahsediyorum. E-ticaretin yeni yeni yükseldiği, henüz ünlü eve yemek sipariş uygulamasının (O zamanlar tekti galiba ya, tam olarak bilemiyorum.) bile çok tercih edilmediği zamanlardı. Hatta e-ticaret o kadar yükselişteydi ki satın alınan domain’lerin geyiği bile yapılırdı: burdanal, hadial, durmaal, alulan, albunu, hatta malagel… (Tabii ki sonunda .com, .org gibi uzantılar olacak.) “E-ticaret bitirme projesi yürür.” demiştim.
İşe yaramaz, şirin üçlümüzün bir diğer üyesi Ömür, “Mobil de yükselişte. Tamam, MVC 5 güzel de bi’ seçeneğin daha olsun, belki ekmeğimizi oradan kazanacağız kardo, belli olmaz. Mobil’i bu kadar görmezden gelme.” dedi. Başta grubumuzun iletişim tarzına uyarak “Kes lan!” desem de içime bir kurt düşmüştü. Sağa sola sorup araştırdım ve (o zamanlar) Tübitak Bilgi İşlem Daire Başkanı gözetmen (supervisor) hocamız Doç. Dr. Baha Şen’in de desteğiyle, bir alışveriş merkezi içi navigasyon mobil uygulaması yazmaya karar verdik. Çok zordu çünkü bina içinde GPS çalışmazdı ancak projenin kapsamı için kişinin AVM içindeki yerini belirlemek zorundaydık.
Projenin gereksinimleri:
Alışveriş merkezinin kat planı ile bir veri tabanı oluşturmak,
Kullanıcının yerini, hangi katta ve hangi mağaza önünde olduğunu belirlemek,
Kullanıcı gitmek istediği mağazayı arama ekranına yazdığında, en kısa rotayı hesaplamak,
Harita uygulamalarında olduğu gibi, belirli aralıklarla birer mavi nokta koymak ve kullanıcıya gideceği yeri tarif etmek.
Kullanıcı ilerledikçe mavi noktaları griye çevirmek.
Uzaklık hesaplama için modemleri kullandık.
Herhangi bir mağazanın bina içindeki konumunu, analitik bütçe kodlarındaki numaralandırma sistemi ile makine diline çevirdik. “Ya sen analitik bütçe kodlarını nereden biliyorsun ki?” diyorsanız stajın önemi işte burada ortaya çıkıyor. Detaylar diğer yazıda gelecek. Böylece “Hangi mağaza hangisine komşu?”, “Hangisi kaçıncı katta?” gibi soruları, mağazaya verdiğimiz kendisine özel kod üzerinden kolayca cevapladık.
Kullanıcının ve mağazanın önündeki alanın modeme olan uzaklığını hesaplamak için modemin sinyal gücünden yola çıkıp uzaklık hesaplayan serbest uzay yolu kaybı (free space path loss, FSPL) formülünü kullandık.
Bir modem pek çok mağazaya aynı uzaklıkta bulunabilir. Üçgenleştirme (trilateration) yöntemi ile kişiye en yakın 3 değil, 5–6 modemin uzaklıklarının kesişim noktasında kullanıcı konumunu saptadık.
Sinyal gücü değişken olduğu için menzil tabanlı yer belirleme (range-based localization) yöntemi kullandık. Büyük mağazaların önündeki alan da büyük olur. Örneğin 5 metrekarelik bir alanın bir modeme tek bir uzaklığı olmaz. Kullanıcının modeme en yakın ve en uzak mesafelerine göre, yer tespiti daha da netleşti.
Kat planı çıkarma ve bina içi haritalama işi için ayrı bir Android mobil uygulama yazdık. Bu uygulamayı kişisel Android cihazımıza kurduk ve AVM’ye gidip, tek tek mağazaların önünde bekleyip uzaklık hesaplaması yapmasını, kat planı veri tabanını oluşturmasını bekledik.
Kullanıcı ile mağaza arasında çizilebilecek en kısa rotayı bulabilmek için, akademide hayli sevilen ve algoritma derslerinde mutlaka anlatılan Dijkstra’nın En Kısa Yol (Shortest Path) algoritmasını kullandık.
Sinyal gücü değişken olduğu için, iki bilinen veri noktası arasındaki bilinmeyen bir değeri tahmin etme yöntemini kullandık (interpolation).
Yani şöyle bir algoritmamız vardı: Kişinin kendisine en yakın olan 5–6 modem, aynı anda bu modemlerin kapsama alanında olan bölgelerden hangisinde en çok kalıyorsa kullanıcı o bölgededir. Detaylı açıklamalı anlatım yine diğer yazıda gelecek.
Önerilerin son maddesinde, projenizin çalışıyor olması gerektiğinden bahsetmiştim. O yıl, not ortalaması üçümüzün not ortalamasının toplamından daha yüksek olan bir grup, ASP.NET MVC 5 kullanma kararı aldı. Buna karşın, controller ile view arasında veri taşıma konusunda bazı zorluklar yaşadıkları için, Microsoft’un bile “Biz bunu yaptık ama yine de buna çok güvenmeyin.” dediği ViewBag ve ViewData yapılarını kullanmayı tercih etmişlerdi. Tabii ki bana danışmamışlardı.
Projeyi sunduğumuz sabah, hâlâ vakit olduğunu ve ViewModel yapısına geçmelerini önerdim fakat bu önerimi dikkate almadılar. Ne yazık ki sunum esnasında projeleri beklenildiği gibi çalışmadı ve bazı arkadaşlar sunumdan gözleri dolu ayrıldı. Taner haklı çıktı ama hatırladığım kadarıyla kimse dönem veya proje tekrarı yapmadı.
Photo by David Pupăză on Unsplash
Sonuç
Projeniz çalışsın. 8 ayınız var. Hatta yazı da katarsanız 11 ay oluyor. 6. dönemden 7. döneme geçerken finalleriniz bittiği anda düşünmeye ve hazırlamaya başlayın. Doğru düzgün teknolojiler kullanın ve kendinizi geliştirin. Siz onlar kadar şanslı veya nazınızın geçeceği kadar yüksek notlu olmayabilirsiniz.
Bir de üniversite yıllarında mutlaka böyle sıcak arkadaşlıklarınız olsun. Okuduğunuz gibi, üçlü arkadaş grubumuzda muhabbetimiz efsaneydi. İş ciddiye binince projenin de en güzelini yaptık. İstanbul’a taşındığım için görüşemesek de kalbimdeki yeriniz asla değişmedi beyler, seviyorum sizi.
Sıkça Sorulan Sorular
▸Bitirme projesi seçerken en önemli kriterler nelerdir?
İlgi duyduğunuz ve tutkulu olduğunuz bir konu seçmek motivasyonu yüksek tutar. Kariyer hedeflerinizle uyumlu, yeni teknolojiler öğrenmenize olanak tanıyan ve piyasada yenilikçi sayılabilecek bir proje seçmek hem akademik hem de iş hayatında avantaj sağlar. Zorluk seviyesinin mevcut bilgi düzeyinizin biraz üstünde olması idealdir.
▸Bitirme projesi tek başına mı yapılmalı, takımla mı?
Yazara göre projeyi mümkünse takımla yapmak daha avantajlıdır. Takım çalışması hem ilerlemeyi hızlandırır hem de iş görüşmelerinde 'takım çalışmasına uyumlu' bir izlenim bırakır. Birlikte vakit geçirilen, güvenilen arkadaşlarla çalışmak motivasyonu da artırır.
▸Staj deneyimi bitirme projesine nasıl katkı sağlar?
Stajda öğrenilen teknolojiler bitirme projesinde doğrudan kullanılabilir ve projeye gerçekçi bir temel kazandırır. Yazar, stajda edindiği ASP.Net MVC bilgisini proje sürecinde uyguladığını belirtiyor. İyi bir staj deneyimi, hem teknik birikimi hem de proje kalitesini artırır.


