Dr. Volkan Tunalı'nın Kişisel Blogu

Bilgisayar, Teknoloji, Bilim, Sanat

Sosyal Ağ Analizine Giriş

leave a comment

Sosyal Ağ Analizine GirişSosyal Ağ Analizi konusuyla akademik olarak ilgilenmekteyim ve bu konuda birkaç yıldır lisans ve lisansüstü düzeyinde dersler vermekteyim. Bu birikimimi Türkçe bir eserde değerlendirmek istedim ve “Sosyal Ağ Analizine Giriş” adlı kitabımı yazdım.

Kitapla ilgili ayrıntılar şu şekilde:

Kitabın Adı: Sosyal Ağ Analizine Giriş
Yazarı: Yrd. Doç. Dr. Volkan TUNALI
ISBN: 978-605-320-516-6
Sayfa Sayısı: 200

Ayrıntılı bilgi almak için kitapla ilgili hazırladığım www.sosyalaganalizi.com sayfasını ve yayınevinin Nobel Akademik Yayıncılık sayfasını ziyaret edebilirsiniz.

Kitabı tüm internet kitap satış sitelerinde ve kitapçılarda bulabilirsiniz. Kitapla ilgili her türlü görüş ve önerinizi paylaşmanız beni çok memnun edecektir. Umarım bu kitap, daha iyilerinin yazılmasına vesile olur ve bu alandaki Türkçe kaynak eksikliğinin giderilmesi adına yararlı olur.

Kitabın tanıtım yazısı şu şekilde:

Pek çok doğal ve yapay olguda, varlıklar arasındaki ilişki ve etkileşimler incelendiğinde, çeşitli ağ yapılarının oluştuğu görülmektedir. Sosyal ağlar, ekonomik ve finansal ağlar, iletişim ağları, teknolojik ağlar, biyolojik ağlar ve kimyasal etkileşim ağları bunlardan bazılarıdır.

Bu kitap, kaynağı her ne olursa olsun, özellikle büyük ve karmaşık ağları çeşitli teknik ve araçlar kullanarak anlamaya çalışan Ağ Bilimi (Network Science) ve Sosyal Ağ Analizi (Social Network Analysis) konularına giriş yapmak isteyen öğrenci ve araştırmacılara temel bir kılavuz olması amacıyla yazıldı. Bu alanda Türkçe bir kaynak olarak önemli bir boşluğu dolduracak olması kitabın yazılmasında diğer bir motivasyon kaynağı oldu.

Kitap aynı zamanda bir dönemlik lisans son sınıf ya da lisansüstü düzeyinde, giriş niteliğinde bir ders için temel ders kitabı olmaya uygun bir içerikle hazırlandı. Kuramsal konular gereken kapsam ve derinlikte ele alındı ve tüm kavramlar çözümlü ve açıklamalı örneklerle desteklenmeye çalışıldı. Kuramsal konuların, uygulamalı çalışmalarla dengelenmesine özen gösterildi. Bölüm sonlarındaki sorularla konuların pekiştirilmesi ve öğrencilerin araştırmaya teşvik edilmesi hedeflendi.

Ağ analizinin disiplinlerarası bir konu olması nedeniyle konuya ilgi duyan hemen her alandan okuyucunun yararlanabileceği bir kitaptır. Ayrıca, ağ analizi yazılımlarının kullanımları ve dosya formatlarıyla ilgili verilen bilgi, öneri ve ipuçları da uygulama çalışmalarında yararlı olacaktır.

Yapay Zeka Nedir?

leave a comment

Yapay Zeka kavramını her zamankinden çok duymaya başladık. Yapay Zeka içermeyen bir yazılım, bir sistem neredeyse yok gibi. Peki nedir bu Yapay Zeka, ve ne değildir? Bu yazımda, soru-cevap şeklinde Yapay Zeka ile ilgili anlaşılır bilgiler vermeye çalışacağım. Bu yazımın içeriği aslında 24 Eylül 2016 tarihinde TRT Kent Radyo İzmir, Bilişim Gündemi Programı‘nda Mustafa Özhan Kalaç ile yaptığımız söyleşinin derli toplu bir halidir. Söyleşiyi dinlemek isterseniz https://www.youtube.com/watch?v=pnQbISa9Z5I adresini ziyaret edebilirsiniz.

1. Yapay Zeka nedir?

Yapay Zeka ile ilgili belki de en zor şeylerden biri bana göre Yapay Zeka’yı tanımlamak, onun ne olduğunu açıklamak. Popüler kültürde muhtemelen bu konudaki roman ve filmlerin de etkisiyle, insan gibi düşünebilen, akıl yürütebilen, hatta insan gibi duyguları dahi olabilen, genellikle robot şeklinde, hatta insana çok benzer görünümde varlıklar akla geliyor. Tabi ki gerçek bundan biraz farklı.

Yapay Zeka alanında yapılan çalışmalar bu kavramın ortaya atıldığı ve başladığı 1950’lerden bugüne çok farklı yönlerde ilerlediği için farklı beklentiler ve amaçlar nedeniyle Yapay Zeka’nın farklı tanımlamaları mevcut. Ancak ben günümüzde Yapay Zeka çalışmalarının ağırlıklı olarak yöneldiği taraftan, modern ve daha anlamlı bir tanımlama yaparak başlamak istiyorum.

Yapay Zeka’nın genel kabul görmüş, modern tanımı şu şekilde: Yapay Zeka, insanlarda ve hayvanlarda zeki davranışın ne olduğunu inceleyen ve insan yapımı aygıtların nasıl zeki davranışlar sergileyebileceğini  araştıran, zeki davranışlar sergileyen aygıtlar geliştirmeye çalışan bir bilim dalıdır.

Burada önemli olan insan gibi düşünebilmek değil, ya da yalnızca düşünebilmek değil, zeki ve rasyonel yani akılcı davranışı anlamak ve makinelerin yani bilgisayarların bu akılcı davranışı sergilemesini sağlamak.

Akılcı davranış demek,

  • problemi anlamak,
  • çözüm stratejisi geliştirmek
  • ve sonra bu stratejiyi uygulayarak yani davranışta bulunarak problemi çözmek demek.

Bu sayede, günlük hayatta karşılaştığımız çok çeşitli problemlere bilgisayarlar aracılığıyla çözüm bulmaya çalışıyoruz.

Biz bunu aslında şimdiye kadar programlama yoluyla basitçe yapıyorduk. Ancak tabi ki burada amacımız basit, çözüm adımları algoritmik ve net olarak tanımlanmış  problemlerden ziyade mümkün olduğunca akılcı veya insanın sahip olduğu sağduyunun ve sezgilerin işin içine katılmasını gerektiren türde karmaşık ve zor problemlerin çözümünde Yapay Zeka’dan faydalanmak.

2. Peki, Yapay Zeka kullanılarak çözüm bulunan problemler neler? Yapay Zeka ne gibi alanlarda kullanılıyor?

Günümüzde Yapay Zeka çalışmalarında geliştirilen yöntemlerin kullanılmadığı alan neredeyse yok gibidir. Çok büyük sistemlerden çok ufak cihazlara kadar pek çok alanda Yapay Zeka’dan yararlanılmaktadır. Örneğin,

  • Proje planlama, kaynak planlama, fabrikalarda üretim planlama, araç rota planlama gibi optimizasyon gerektiren büyük çaplı planlama işlerinin bugün Yapay Zeka uygulanmadan yapılması düşünülemez.
    • Bu işlerde basit algoritmik yaklaşımlarla etkili çözümler elde etmek mümkün olmuyor ya da tahammül edilemeyecek kadar çok zaman alıyor. İşin içine zekice birşeyler katmanız ya da doğada çeşitli canlılarda görülen problem çözme davranışlarını katmanız gerekiyor.
  • Satranç ve Go gibi stratejiye dayalı oyunların geliştirilmesinde de Yapay Zeka teknikleri çokça kullanılmaktadır.
  • Yapay Zeka çalışmalarının önemli bir bölümü ise Machine Learning yani Makine Öğrenmesi veya Yapay Öğrenme dediğimiz, öğrenebilen sistemler geliştirmeyle ilgilenmektedir.
  • Bu sistemler sayesinde, günümüzde
    • son derece gelişmiş konuşma tanıma sistemleri var.
    • Benzer yaklaşımı yüz tanıma,
    • iris tanıma,
    • el yazısı tanıma,
    • imza tanıma ve doğrulama gibi sistemlerde başarıyla kullanıyoruz.
    • Daha ileri ve yeni bir örnek olarak, herhangi bir resimdeki varlıkların ne olduğunu, bu varlıkların özelliklerini, rengini, o anda ne yapmakta olduğunu, nerede bulunduğunu tanıyabilen sistemler geliştirilmiş durumda.
  • Akıllı telefonlardaki bir diyalog uygulaması
    • sizin ne dediğinizi yani konuşmanızı tanıyor,
    • metne dönüştürüyor,
    • bunu anlamlandırıp aslında sizin ne istediğinize karar veriyor,
    • son olarak da ekrana yazı yazarak ya da ilgili bir uygulamayı açarak isteğinize uygun bir karşılık veriyor.
    • Bu kadar karmaşık bir işlem dizisinde çok çeşitli Yapay Zeka tekniklerinin bir arada kullanıldığını söyleyebiliriz.
  • Yine, akıllı telefonlardaki Navigasyon uygulamalarının önemli bir Yapay Zeka ürünü olduğunu söyleyebiliriz.

3. Yapay Zeka çalışmalarının ulaştığı durum nedir? Dikkat çekici başarı örnekleri verebilir misiniz?

Biraz klasik olacak ve belki de eski kalmış örnekler olacak ama IBM’in Yapay Zeka alanındaki çalışmaları oldukça dikkate değer. İlk olarak, 1997’de IBM’in DeepBlue isimli bilgisayarı dünya satranç şampiyonu Garry Kasparov’u satranç oyununda 3 buçuğa 2 buçuk skorla yenmişti.

IBM’in Watson isimli bilgisayarı ise 2011’de Jeopardy (bizde eski Riziko, yenilerde Selçuk Yöntem’in sunduğu Büyük Risk) yarışmasında önceki iki şampiyona karşı yarışmış ve büyük ödül 1 milyon dolar kazanmıştı. Bu yarışmanın özelliği ise soruların doğal dil ile sorulması ve Watson’ın cevapları yine doğal dil ile yani düzgün cümleler halinde vermesiydi. Bu bakımdan önemli bir gelişmedir.

Geçtiğimiz aylarda Yine IBM’in Watson’ının desteğiyle, yapay zeka konulu bir filmin fragmanı 24 saat gibi kısa bir sürede oluşturuldu. Normalde bu işlemin 7 ila 20 gün arasında sürdüğü belirtiliyor.

Daha yakın tarihli bir örnek olarak Google’ın ve onu takip eden çeşitli firmaların sürücüsüz otomobil çalışmalarını göstermek mümkün. Böyle bir otomobil yapabilmek için Yapay Zeka kapsamına giren pek çok teknolojinin bir arada çalışması gerekiyor.

Ağustos ayında sürücüsüz taksi uygulaması Singapur’da pilot bir bölgede başlatıldı. Açıkçası, bu çok ciddi bir gelişme. Sürücüsüz otomobil kavramını çok ileriye taşıyan bir şey bu.

Boston Dynamics tarafından üretilen, genellikle görünüş olarak köpeğe benzeyen, her tür yeryüzü koşulunda hareket edebilen, düştüğünde kalkabilen robotları da örnek olarak vermek mümkündür.

Son olarak, bir dilden başka bir dile çeviri sistemleri giderek daha başarılı olmaya başladı. Yapay Zeka için belki de en zor problemlerden biri doğal dil anlama ve çeviri yapma. İleride Türkçe’yi daha iyi anlayan sistemler görmeyi umuyoruz.

4. Yapay Zeka’nın sınırlılıkları var mı? Yapay Zeka ile yapılamayan, ulaşılamayan şeyler nedir?

Evet, maalesef Yapay Zeka ile ilgili başarı olarak değerlendirebileceğimiz gelişmeler genellikle sınırlı problemlere getirilmiş sınırlı çözümlerdir. Örneğin, konuşma tanıma için eğitilmiş ya da öğrenmiş bir sistemi hiç değiştirmeden yüz tanıma için kullanamıyoruz. Ya da aynı zamanda yüz tanıma için de eğitelim ve iki işi de yapabilsin diyemiyoruz. Veya, bir problem alandaki çözümü benzer veya değil başka alanlardaki problemlerin çözümü için genelleyemiyoruz. Yani YAPAY GENEL ZEKA’ya henüz ulaşmış değiliz, muhtemelen daha çok uzağındayız.

5. Gerçekten ZEKİ bilgisayarları ya da filmlerdeki gibi zeki robotları ne zaman göreceğiz? Robotlar dünyayı ele geçirecek mi?

Herkeste “tümüyle insanlarınkine benzer bir zeka”, hatta insanüstü bir yapay zeka ve bu zekaya sahip robotlar beklentisi var. Bu robotların bir gün dünyayı istila edeceği, insan ırkının tehlikeye gireceği çok yaygın bir tema.

Mart 2016’da yapılan bir araştırmada, Yapay Zeka alanında çalışan 193 araştırmacının fikri sorulmuş.

  • %8’i gelecek 10 ila 25 yıl içinde
  • %68’i 25 yıldan daha uzun bir zaman sonra
  • %25’i ise asla olamayacağını belirtmiştir.

Ancak, maalesef şu anda insan zekası hakkında, bu beklentileri karşılayacak makineler yapabilmemizde işimize yarayacak pek bir şey bilmiyoruz. Dolayısıyla, bana göre bir Skynet ya da Cylon’lar beklemek için çok erken. Şimdiye kadar geliştirilen en zeki sistem bile insandaki zeka ve bilinç ve anlama yeteneğinden çok uzakta, yalnızca mekanik kurallara göre çalışan bir sistem.

6. Yapay Zeka’nın sosyal etkileri konusunda ne gibi beklentiler var? Toplumlar, Yapay Zeka çalışmalarından nasıl etkilenecek? Sorun yaşanacak mı?

Evet, aslında robotların dünyayı ele geçirip geçirmeyeceğinden daha önemli  sorular ve sorunlar var. Bildiğiniz gibi, bütün teknolojik gelişmeler toplumlarda mutlaka değişime neden olur. Özellikle de geçiş dönemlerinde, insan emeğinin yerini teknoloji almaya başladıkça işsizlik sorunu gündeme gelir. Belli bir kesim işini kaybeder.

Bilindiği gibi Endüstri devrimiyle birlikte el işinin yerini makineler aldı. Fabrikadaki üretim hatlarında insan yerine robot kollar montaj yapmaya başladı. Bunun gibi, Yapay Zeka sayesinde eskiye nazaran daha fazla şey otomatize edilebilecek. Dolayısıyla, bazı meslekler zamanla azalacak ve kaybolacak. Ancak, geçiş döneminin ardından geriye dönülmeyeceğine göre, tamamen farklı ve yeni iş sahalarının ve pazarların oluşması da söz konusu. Elbette ki her meslek dalı aynı derecede etkilenmeyecektir, her şeyi aynı derecede otomatikleştirmek mümkün olamaz. Yapay Zeka bazı alanlarda insanın uzmanlığını destekleyen yardımcı unsur olarak yer alacaktır.

Singapur’daki sürücüsüz taksi denemelerini bu durumun ilk örneklerinden biri olarak düşünebiliriz. Özellikle taşımacılık sektöründe Uber, Google ve Tesla gibi şirketler sürücüsüz araç konusuna yoğun ilgi gösteriyorlar. Taksi sürücülerinin ve kamyon şoförlerinin bu durumdan etkileneceği düşünülebilir. Yeni rastladığım bir haberde 2021 itibariyle Amerika’daki işlerin %6’sının robotlar tarafından yapılır duruma geleceği belirtiliyor. Özellikle de müşteri hizmetleri personeliyle kamyon ve taksi sürücülerinin işlerinde. Elbette bu sistemlerin geliştirilmesi ve bakımı gibi yeni iş alanlarının oluşacağı da düşünülüyor ama işsiz kalanların kolayca transfer edilebileceği işler olmayacaktır.

İşsizliğin çok önemli sosyal sorunlara yol açtığı biliniyor. Hatta, taksi sürücülerinin Uber uygulaması nedeniyle yaşadıkları iş kaybını dünya çapında protestoları da biliniyor. Kaldı ki tümüyle işsiz kaldıklarında taksi sürücülerinin daha ciddi tepkiler göstereceğini beklemek yanlış olmaz.

İşsizlik dışında oluşabilecek başka sorunlar da var. Mesela, sürücüsüz bir aracın bir kazaya karışması durumunda sorumluluk kime ait olacak? Ya da bir makine tarafından yapılan bir tıbbi müdahalede yaşanan bir hatada ve olumsuzlukta sorumluluk kimde olacak? Hukuki düzenlemeler daima olayların çok gerisinden gelir. Dolayısıyla, bu noktada da ciddi sorunlar doğması muhtemel.

7. Son cümleler?

Yapay Zeka hızla gelişmeye devam eden bir alan. Yapay Zeka’nın kullanıldığı daha fazla uygulamayı görmeyi bekleyebiliriz. Yapay Zeka elbette getirdiği kolaylıklar ve konforun yanı sıra toplumsal sorunlara da yol açabilecektir. Bunu çok beklemeye gerek kalmadan göreceğiz muhtemelen. Ancak, distopya filmlerindeki gibi dünyayı ele geçiren, insanlığı yok eden robotlardan şimdilik korkmamıza gerek olmadığını düşünüyorum.

Not: Bu yazının tamamı ya da büyük bir kısmı izin alınmaksızın başka sitelerde veya ortamlarda yayınlanamaz. Kaynak gösterilerek ve bu sayfaya açık bir bağlantı verilerek kısmen yayınlanması mümkündür.

Yazılım Mühendisliği Üzerine

leave a comment

YazilimMuhendisiyiz.biz ekibiyle yazılım mühendisliği üzerine yaptığımız röportajı aşağıda bulabilirsiniz. Özellikle üniversitelerin Yazılım Mühendisliği bölümleri konusunda biraz daha fazla bilgi sahibi olmak isteyenlerin yararlı ipuçları bulacağını umuyorum. Yazılım mühendisliğiyle ilgili olarak ayrıca YazilimMuhendisiyiz.biz sitesini ziyaret etmenizi öneririm.

Kendinizden biraz bahsedebilir misiniz?

Marmara Üniversitesi Bilgisayar Mühendisliği mezunuyum. Mezuniyetimden sonra aynı yazılım şirketinde kuruluşundan itibaren 11 yıl çalıştım. Bu süreçte yüksek lisans ve doktoramı tamamladım. Doktoradan sonra akademisyen olma fırsatı doğdu ve 2012’de Maltepe Üniversitesi Yazılım Mühendisliği Bölümü’nde öğretim üyesi olarak çalışmaya başladım. 2015’te ise Celal Bayar Üniversitesi’nde yine Yazılım Mühendisliği Bölümü’nde çalışmaya başladım. Çocukluğumdan beri bilgisayar programlamayla hep iç içe oldum; programlamayı her zaman çok sevdim. Hatta bir an önce bu işi meslek olarak yapmak için endüstri meslek lisesi Bilgisayar Bölümü’nde okudum.

Sizce Yazılım Mühendisliği nedir?

Mühendisliğin tanımlarından biri kabaca şöyle: “Mühendislik, sistemlerin tasarımı, inşa edilmesi ve işletilmesine adanmış bir meslektir”. Bu tanımı Yazılım Mühendisliğine uyarlayabiliriz. Gerçek hayat sorunlarına çözüm olarak geliştirilecek yazılım sistemlerinin tasarlanması ve kodlanarak çalışır hale getirilmesiyle ilgili çalışan meslek dalıdır. Burada şunu iyi vurgulamak gerekli: geliştirilen sistemler çok çeşitli ölçeklerde olabilir. Küçük ölçekli sistemleri oluşturmak için formel bir mühendislik eğitimine çok gerek olmayabilir. Özellikle de yazılım sistemleri söz konusu olduğunda, ilgili ve hevesli herhangi birinin de oldukça başarılı işler çıkardığını görebilirsiniz. Ancak, büyük, kapsamlı ve karmaşık sistemlerin analizi, tasarımı, oluşturulması ve bakımı genellikle çok sayıda ve çeşitli zorluklar içerir. Bütün bu zorlukların üstesinden gelebilmek, sorunsuz ve verimli çalışacak bir sistemi optimum maliyetle oluşturabilmek, ciddi bir mühendislik eğitimi gerektirir. Mühendislik eğitimi ayrıca ekonomi, verimlilik, çevre, ve mühendislik etiği gibi konularda da bilinç kazandırmayı hedeflemektedir.

Celal Bayar Üniversitesi Yazılım Mühendisliği bölümünün eğitimi, akademik kadrosu, dersleri ile ilgili bilgi verir misiniz?

Henüz mezun vermemiş, yeni kurulmuş sayılabilecek bir bölüm olarak Yazılım Mühendisliği alanında dünya standartlarında bir öğretim programımız var. Öğretim programının oluşturulmasında, hocalarımızın önceki üniversitelerindeki aynı bölümden gelen bilgi birikimi ve deneyiminden de yararlanıldı. Ayrıca, bölüm hocalarımızın akademik uzmanlıkları tamamen Yazılım Mühendisliği üzerine. Hocalarımızın çoğunun ciddi bir sektör geçmişi ve tecrübesi var (bu hocalardan biri benim). Sektörden gelen birikimlerimizi maksimum derecede derslere yansıtmaya çalışıyoruz. Bölümümüzü ayrıcalıklı kılan yönlerden birinin bu olduğunu düşünüyorum. Yazılım geliştirme yaşam döngüsündeki her aşama bizde en az bir ders halinde ele alınıyor. Zorunlu derslerimizin yanı sıra açmaya çalıştığımız seçmeli derslerle hem sektörel hem de akademik yönde konu çeşitliliği oluşturmaya çalışıyoruz. Bölümümüzde hem örgün hem de ikinci öğretim olması akademik kadromuz için biraz yorucu olmakta. Öğretim üyesi sayımızı arttırmaya çalışıyoruz. Zaman içinde bu konuda daha iyi bir duruma geleceğiz.

Biliyorsunuz tercih dönemi yeni bitti Yazılım Mühendisliği, Bilgisayar Mühendisliğini tercih eden adaylara tavsiyeleriniz nelerdir?

Bu bölümleri tercih edip yerleştirilmişlerse, tavsiye edecek pek bir şey kalmamış demektir, öncelikle tercih ve başarılarından dolayı tebrik ederim. Üniversitedeki mesleki dersler genellikle mühendislik temeli oluşturmaya yöneliktir. Piyasadaki güncel teknik ve teknolojileri yansıtmayabilir. Bu durum mesleğimizin doğasındadır. Her gün öğrenilmesi gereken yeni araçlar, programlama dilleri ve teknolojiler ortaya çıkmaktadır. Üniversitedeki derslerle bunlara yetişmeyi beklemeyin; mümkün olduğunca bu yenilikleri takip etmeye çalışın. Internet’i öncelikle bu amaçla ve verimli kullanmayı öğrenin. Mezun olduktan sonra da bu sürecin aynı şekilde devam edeceğini unutmayın.

Bilgisayar Mühendisliği ile Yazılım Mühendisliği arasındaki farklar nelerdir?

Aslında bir çok perspektiften karşılaştırma yapmak mümkün. Ben üniversitedeki bölüm öğretim programları üzerinden bir karşılaştırma yapmak istiyorum. Daha önce ifade ettiğim gibi ben Bilgisayar Mühendisliği bölümünden mezun oldum. Pek çok arkadaşım gibi ben de yazılım sektöründe çalıştım, yani yazılım mühendisliği yaptım (yani yapmaya çalıştım). Üniversitede aldığım temel birikim ve kişisel merakım işimde başarılı olmamı sağladı ancak iş hayatında zaman geçtikçe aslında iyi bir yazılım mühendisi olmak için iyi kodlamanın, iyi veritabanı bilgisinin yetmediğini, öğrenilmesi gereken çok daha fazla şeyin olduğunu fark ettim. Bu eksiğimi kapatmak için de erişebildiğim bütün kaynaklardan kendimi geliştirmeye gayret ettim. Şu anda Yazılım Mühendisliği bölümünde, işte bu konuların hepsi ayrı birer ders olarak ele alınıyor, mezunlar bunları bilerek piyasaya çıkmış oluyor. Bence bu çok ama çok önemli bir fark. Bunun dışında, öğretim programları karşılaştırıldığında iki bölümün de çok sayıda ortak dersi olduğu görülecektir. Çok sayıda ortak dersin varlığı iki bölümü birbirine benzer gibi gösterse de bütünsel olarak öğretim hedeflerindeki farklılık derslerin işleniş ve hedeflerine de mutlaka yansıyor. Tüm şartların eşit olduğu bir durumda iki bölümden hangisini tercih etmeliyim diye soranlara şunu söylüyorum: Eğer temel hedefin yazılım sektöründe çalışmak ve iyi bir yazılımcı olmaksa, yazılım mühendisliğini tercih etmelisin. Benim öğrenciliğim sırasında Yazılım Mühendisliği bölümü olsaydı, muhtemelen yazılım mühendisliğini seçerdim.

Yazılım sektöründe İngilizce şart mı? Sizce ne seviyede olmalı?

Kesin bir şekilde EVET! Her zaman söylediğim şeyi bir kez daha söylemek istiyorum. Üniversiteden mezun olmadan önce İngilizce konusunu halledin. Mezun olduğunuzda çok iyi derece İngilizce okuyabilir-yazabilir duruma gelmelisiniz. Konuşma kısmı size kalmış. Mezun olduktan sonra düzenli bir şekilde kursa gidip hallederim demeyin; asla zaman bulamazsınız.

İş olanakları ve maaş durumu nasıl?

Mesleğimizin güzel yanlarından biri de istihdam sorunu olmaması. İş bulamayan kimseyi duymadım ve başlangıçta maaş biraz düşük gibi görünse de kısa süre içerisinde ve göstereceğiniz performansa göre çok iyi maaşlar almaya başlarsınız. Ancak hemen şunu da vurgulamalıyım, firmaların her şeyi bilen değil işini iyi bilen, becerikli, sorunsuz ve temiz iş çıkaran, ekip içerisinde uyumlu çalışabilen mühendislere ihtiyacı var. Diploma genellikle iyidir ama her zaman işe yaramayabilir.

Yazılım Mühendisi ile programcıyı ayıran farklar nelerdir?

Aslında bu tür keskin ayrımlar yapmak çok zor. “Yazılım Mühendisi programlama yapmaz, yalnızca tasarım yapar, doküman hazırlar, programcı da bu tasarımı kodlar” gibi saçma, klişe bir düşünce var. Bundan kurtulmamız lazım. Yazılım Mühendisi, yazılım geliştirme süreçlerindeki her işi yapar, hem de çok iyi yapar, yapmalıdır. Yazılım mühendisi, aldığı mühendislik eğitimi sayesinde, geliştirilmekte olan sisteme bütünsel bir perspektiften bakabilir, sistemin ekonomisi ve verimliliği gibi konuları da dikkate alır. Programcılık eğitiminde bu tür bir bakış açısından ziyade programlama pratiğiyle doğrudan ilgili konular hedeflenir. Mezun olur olmaz büyük projelerde yazılım mimarı, ekip lideri, proje yöneticisi olarak çalışacağınızı düşünmeyin. Program yazma tecrübesi olmadan program yazacak bir ekibin lideri olmak bana pek anlamlı gelmiyor.

İlk hangi programlama dilinden başlanmalı?

Hangi dille başladığınızın bir önemi yok bence. Önemli olan meraklı olmak, sıkılmadan, bol bol deneme-yanılma yaparak programlama mantığını anlamaya çalışmak ve sonrasında da bol bol pratik yaparak dilin sunduğu tüm yetenekleri öğrenmeye çalışmaktır. Daha sonra başka bir dili öğrenmek her zaman daha kolay olacaktır. İlle de bir programlama dili adı vermemi isterseniz, yazımı basit ve anlaşılır olan bir dil olsa iyi olur, sanıyorum bugünlerde Python iyi bir seçim olabilir. Java ya da C# da düşünülebilir. Ama bence en iyisi BASIC :)

Yazılım kitaplardan mı daha iyi öğrenilir yoksa video derslerden mi?

Her iki kaynaktan da yararlanmak lazım. Ben kitapları tercih ederim, videolarda bazen basit bir şeyin örneklenmesi bile dakikalar sürmekte, ben sabredemiyorum. Kendinizi tanıyın, hangisini yararlı buluyorsanız ona yönelin. Ama şu bir gerçek, kendiniz kodlamadan, kodu kendiniz tuşlamadan bu iş olmaz. Bol bol deneyin, değiştirin tekrar deneyin, kurcalayın, merak etmeyin, bozulmaz. Ayrıca, kitaplardan daha öğretici olabilecek bir yöntem de başkalarının kodlarını okumaktır. Özellikle de açık kaynaklı ciddi projelerin kodlarına bir bakın, dünyada bu iş nasıl yapılıyor, en azından ilham alırsınız.

Bir programlama dili en iyi nasıl öğrenilir? Bir dili çok iyi biliyorum demek için ne kadarını bilmemiz gerekir?

Dilin yapısını zaten çabucak öğrenirsiniz, öğrenilecek fazla bir şey yok, kontrol ve döngü yapıları, dinamik bellek yönetimi, alt düzey dosya işlemleri, vs. kısa sürede syntax’a alışırsınız. İşe yarar bir proje geliştirmek için genellikle dille birlikte hazır gelen framework’leri de öğrenmek gerekir, örneğin, veritabanı işlemleri, ağ işlemleri, vs. Bunların hepsini tek tek ayrı ayrı öğrenmeye çalışmak verimsizlik oluşturabilir. Dolayısıyla, bence önce işe yarar bir proje fikri bulun (toy-project denilen türden). Bu projeyi yaparken ihtiyaç duyduğunuz şeyleri araştırın, takıldığınız şeyleri aşmaya çalışın. Sonuçta o dilin sunduğu çok sayıda özelliği uyguladığınız bir projeniz olur. Parça parça şeyler deneyerek öğreneceğinizden çok daha fazlasını öğrenmiş olursunuz.

İlk programlama deneyiminizden bahseder misiniz?

Ben 10 yaşımdayken ağabeyim programlama kursuna gitmiş ve eve bir bilgisayar aldırmayı başarmıştı. O günlerde nedense her yerde Commodore 64 varken biz Amstrad CPC464 almıştık (64 KB ana bellek, 4.77 Mhz işlemci, kasetçalar, yeşil-beyaz mono ekranlı süper bir şeydi). Önce oyunları kasetten nasıl başlatacağımı öğrenmiştim. Maalesef çok az sayıda oyun vardı ve piyasada Amstrad için oyun bulamıyorduk. Bilgisayarın yanında her nasılsa Türkçe yazılmış bir kullanım ve BASIC programlama kılavuzu gelmişti. O kılavuzu merakla okurken örnek programları da yazıp deniyordum. Kitaptaki örneğin bazı yerlerini rasgele değiştirip denerken bu iş çok hoşuma gitti. Bu bilgisayar ve bu kılavuz belki de benim bu mesleğe yönelmeme vesile oldu.

Neden çoğunlukla özel üniversitelerde var bu bölüm?

Yazılım Mühendisliği’nin ve hatta bazen Bilgisayar Mühendisliği’nin bile üniversitede bölümü olan bir mühendislik dalı olmaması gerektiğini düşünen hocalar var. Zaman içinde Bilgisayar Mühendisliği üniversitelerde kendine sağlam bir yer edinmiş olmasına rağmen Yazılım Mühendisliği üniversitelerde yeni yeni yer buluyor. Bilgisayar Mühendisliği bölümü varken Yazılım Mühendisliği bölümünün farklılığı tam olarak anlaşılamıyor. Vakıf üniversitelerinde işin maddi bir boyutu da olduğu için Bilgisayar Mühendisliği bölümünün yanına bir Yazılım Mühendisliği bölümü açmak avantajlı görülebiliyor. Bilgisayar Mühendisliğiyle ortak dersler sayesinde Yazılım Mühendisliği bölümünün hoca ihtiyacı nispeten daha kolay karşılanabiliyor. Daha fazla bölüm, daha fazla öğrenci demek. Sanıyorum bundan dolayı vakıf üniversitelerinde Yazılım Mühendisliği bölümünü daha çok görüyoruz.

KTÜ mü, CBÜ mü, Fırat Üniversitesi mi?

KTÜ ve Fırat’taki bölümleri pek tanımıyorum, kıyaslama yapmam zor. Başarılı öğrencilerin tercihlerinde CBÜ’nün Ege Bölgesi’nde bir üniversite olmasının sağladığı bir avantaj olduğu kesin. Bölüm hocaları olarak Türkiye’nin en iyi yazılım mühendislerini yetiştiren bölüm olma vizyonumuz ve hedefimiz var. Henüz mezun vermedik, bu şimdilik bir dezavantaj. Mezun vermeye başladıktan sonra, öğrencilerimiz sektörde kendilerini göstermeye başladıktan sonra bölümümüzün bilinirliğinin ve tercih edilirliğinin artacağını düşünüyoruz.

Kaynak: http://blog.yazilimmuhendisiyiz.biz/2016/09/30/yazilim-muhendisligi-uzerine-yrd-doc-dr-volkan-tunali-ile-roportaj/

Bilgisayar Bilimine Giriş (Computer Science: An Overview)

leave a comment

Bilgisayar Bilimine GirişÇeviri kurulunda yer aldığım bir kitabı tanıtmak istiyorum.

J. Glenn Brookshear ve Dennis Brylow tarafından yazılmış olan Computer Science: An Overview kitabın 12. baskısının çeviri kurulunda yer aldım. Bölüm 11. Yapay Zeka bölümünün çevirisi bana ait. Bilgisayar bilimi alanında iyi bir kitabın güzel bir çevirisi oldu. Okuyuculara yararlı olacağını umuyorum.

Kitapla ilgili ayrıntılar şu şekilde:

Kitabın Adı: Bilgisayar Bilimine Giriş
Çeviri Editörü: Yrd. Doç. Dr. Birim Balcı Demirci
Çeviri Kurulu: Birim Balcı Demirci, Coşkun Çelik, Emine Sezer, Hacer Karacan, Hakan Kutucu, Hasan Dağ, Okan Bursa, Özgü Can, Resul Kara, Selim Bayraklı, Şenol Zafer Erdoğan, Volkan Tunalı
ISBN: 978-605-320-361-2
Sayfa Sayısı: 628

Ayrıntılı bilgi almak için ilgili Nobel Akademik Yayıncılık sayfasını ziyaret edebilirsiniz.

Kitabın tanıtım yazısı şu şekilde:

Bilgisayar Bilimine Giriş kitabı, gerek Bilgisayar Mühendisliği gerekse diğer mühendislik alanlarındaki öğrenciler ve alana ilgi duyan diğer okuyucular için Bilgisayar Bilimleri hakkında kapsamlı bir bakış kazandırmak için yazılmıştır.

Okuyuculara bilgisayar bilimlerine dair işlevsel bir anlayış kazandırmak amacıyla yazılan bu kitap, her bölüm ile ilgili olarak okuyucuların kendilerini deneyebilecekleri Sorular ve Alıştırmalar, Bölüm Tekrar Problemleri ve Sosyal Konular olmak üzere üç farklı kapsamda sorular içermektedir.

Orijinali J. Glenn Brookshear ve Dennis Brylow tarafından kaleme alınan ve on ikinci baskısı yapılan bu kitap, Bilgisayar Mühendisliğine Giriş, Bilgisayar Bilimlerine Giriş gibi mühendislik alanlarında okutulan temel bilgisayar derslerinde yararlanılabilecek önemli bir kaynaktır.

Java Programlama Kitabı Önerisi

leave a comment

Programlama [Dili] Nasıl Öğrenilir? başlıklı yazıma gelen yorumlarda sıkça “Hangi programlama dilini öğrenmeli” ve “Önerdiğiniz Türkçe bir kitap var mı” şeklinde sorular soruluyordu.

Bu sorulardan ilkine genellikle Java veya C# olarak cevap veriyordum. Programlamayla ilk kez tanışacaklar için bu dilleri öğrenmek nispeten kolay ve zevklidir. Ayrıca bu dilleri öğrenen biri bundan kesinlikle pişman olmayacaktır.

Türkçe kitap konusunda ise bugüne kadar net bir öneride bulunmamıştım çünkü piyasadaki Türkçe programlama kitapları hakkında pek bir bilgim yoktu. Birkaç hafta önce Seçkin Yayıncılık tarafından yayınlanan bir Java kitabını inceleme fırsatı buldum. Java’yı değil programlamayı bile hiç bilmeyenler için hazırlanmış bu kitap yazarının da ifade ettiği gibi “bir çocuğun önce konuşmayı sonra gramer kurallarını öğrenmesi”ne benzer bir öğretim yolu izliyor. Programlama öğrenmek için benim de kesinlikle uygun bulduğum ve desteklediğim bir yöntem bu. Ayrıca anlatılan herşey bol bol örnekle desteklenmiş.

Java ya da programlama öğrenmek isteyenlere bu kitabı tavsiye ederim. Kitapla ilgili ayrıntılar şu şekilde:

Java ile Nesne Programlama
Kitabın adı: Java ile Nesne Programlama / Java’nın Temelleri – Sınıflar ve Nesneler – Java API
Yazarı: Prof. Dr. Timur Karaçay
ISBN: 9789750219603
Sayfa Sayısı: 686

Written by vtunali

Ekim 11th, 2012 at 8:33 pm

Posted in Yazılım Geliştirme

Tagged with , ,