Emre.xyz

tr

Yılbaşından sonra yazdığım bir yazıda bazı hedefler koymuştum. 31 Mart olduğu için hem hedeflerimi güncellemek hem ne yapmışım onu değerlendirmek istedim. Önce ilk çeyrek hedeflerimi değerlendirip, ardından ikinci çeyret hedeflerimi kaydedeceğim.

Kitap değerlendirmesi

İlk çeyrek kitap okuma konusunda çok verimsiz geçti. Hem yoğun hem negatif bir dönem olmasının buna sebep olduğunu düşünüyorum. Genelde kitap okuma vakitlerimi mobil oyun oynayarak geçirdim. Kendime ceza olarak da mobil oyunları telefonumdan kaldırıyorum ve ikinci çeyrek bitişinde tekrar değerlendireceğim ve duruma göre belki kendime müsade edebilirim oyun konusunda.

Sadece Bülent Eczacıbaşı – İşim Gücüm Budur Benim kitabını bitirebildim. Bitirir bitirmez de twitterdan bir çekilişle hediye ettim.

Isaac Asimov – The Complete Robot kitabında ise %2lik bir artış sağlayabildim. Diğer kitapların ise pek yüzünü açabildiğim söylenemez. Bu sebeple listeyi olduğu gibi ikinci çeyreğe bırakıyorum.

Yazı değerlendirmesi

Hedef olarak koyduğum iki yazıyı da tamamlayıp yayınlayamadım. Ancak hedefimde olmayan Nix Integration for Stack ve Okul Hikayesi başlıklı iki yazı yayınladım. Bu çeyrekte #Nix + #Haskell konusuna daha fazla eğildiğim için ilk yazıyı yayınladım. İkinci yazı ise içinde bulunduğum negatif durumda geçmişe bakmamın faydalı olabileceğini düşünmemden ortaya çıktı. Ruhsal olarak iyi geldi böyle bir yazıyla geçmişi hatırlamak. Bu tarz kişisel hatıralarımı daha fazla kaydetmek istiyorum. Eğer becerebilirsem ikinci çeyrekte büyük büyük babamın Ermeni olayları döneminde yaşadıklarını yazmak istiyorum. Annemden ve diğer yakınlarımdan veri toplamaya başladım bile :)

Symfony ve Monadlarla ilgili iki yazıyı da tamamlayıp ikinci çeyrek ortalarına doğru bitirmek istiyorum.

Gitar değerlendirmesi

Bu konuda sadece ocak ayının ilk 10 günü düzenli pratik yapabildim, işlerin kötü gitmesi (bahaneden bol ne var) sebebiyle kendimi gitar işine veremedim ve bir köşeye kaldırdım. Hedeflerim arasından çıkartıyorum. Başka bahara kaldı gitar işi.

Sosyal medya değerlendirmesi

Günlük 20dk sosyal medya kısıtıma uyamadım. Bu sebeple ikinci çeyrek boyunca bilgisayarımdan twitter, facebook, mastodon, reddit uygulamalarına girişlerimi kısıtlamak üzere bi yol arayacağım. Biraz zor olacak ama , her sosyal medya ihtiyacı duyduğumda blog'a birşeyler karalayarak bu durumu aşmaya çalışacağım. Çünkü gerçekten üretkenliği öldüren birşey sosyal medya.

Projeler değerlendirmesi

Bilimma react frontend, webfinger php impl., activitypub php impl... Bu üç iş için de tek satır kod yazamadım. Bunun için ayırmam gereken zamanda sanırım fazlasıyla Haskell'e ve Nix'e odaklandım. İşletim sistemimi tamamen Nixos'a çevirdim. Haskell ile spotifyctl adında bir projeye başladım. Onun da henüz %40lık kısmı bitti. İkinci çeyrekte deneyokulu frontend'i hariç başka hiç bir projeye başlamayacağım.

Etkinlikler değerlendirmesi

En başarılı olabildiğim hedeflerim bunlar sanırım. GDGCloudAnkara olarak Ocak ve Mart aylarında birer etkinlik organize edebildik. 9 Nisan'da ise online bir etkiliğimiz daha olacak. *

AnkaraPHP konusunda bir ilerleme katemedik, Symfony ile ilgili yazıyı yazdıktan sonra online bir etkinlik olarak workshop'u ikinci çeyrekte gerçekleştirmeyi planlıyorum.

Covid-19 sebebiyle WebEnd konusunda gerçekleştirmeyi planladığım etkinliği uzunca bir süre askıya almaya karar verdim. Online olarak bir sürü etkinlik arasında kaybolması muhtemel olduğu için bu kadar efor harcamak konusundan emin değili.

Haskell Türkiye olarak online bir meetup yaptık, hem çok keyifli hem de Haskell'e giriş yapmak isteyenler için çok güzel bir kayıt oldu.


İlk çeyrek için çok güzel olmasa da, çok kötü de olmayan bir çaba gösterdim. Covid-19 vakası sebebiyle ve öncesinde yaşadığım kişisel problemlerin birleşmesiyle baya yorucu geçti ilk çeyrek. Ancak olabildiğince motive kalmaya ve üretmeye devam etmekten başka yapılacak birşey yok. Haskell konusunda ilerlemek beni çok motive etti. Diğer yandan Nix konusunda da ilerleme katediyor olmak tuz-biber oldu. Hem Javascript hem PHP'ye bakışım çok değişti. Fonksiyonel ve deklatif dünya OOP ve imperatif dünyadan çok çok çok daha doğru gözüküyor. Bu yönde olağanca kuvvetimle ilerlemeye devam edeceğim.

Aşağıdaki listeyi de 2020 İkinci Çeyrek Hedef Listesi olarak kayıt ediyorum. Bu defa hedef tamamlama oranımı daha yükselteceğim.

Kitap Hedefi

  • Isaac Asimov – The Complete Robot (%5)
  • Philip Kotler – Pazarlama 4.0 (%11)
  • Hitchcock & Truffaut (%53)
  • Brian Cox & Jeff Forshaw – Neden E=mc2? (%13)

Yazı Hedefi

  • Ermeni Kardeşlerim – Gölgedeki çocuklar
  • Fully Featured Symfony Blog in Minutes (%80)
  • Monads in Haskell

Proje hedefleri

  • Bilimma frontend
  • Spotifyctl
  • Webfinger impl.
  • ActivityPub impl.

#tr #kişisel

2004 yılında liseye başladım. Lise sistemi o sıra şimdikinden farklıydı. Lise üç yıllıktı ve çoğu liseye, ortaokul puanın ve/veya torpilin yetiyorsa, ayrıca istediğin bölümde başlayabiliyordun. Ortaokul biterken öğretmenlerimiz bizi farklı sınavlara gönderiyorlardı. Kimin vesilesiyle hatırlamıyorum hem anadolu lisesi sınavlarına hem bursluluk sınavlarına girmiştim. Sonuçlar geldiğinde hem bir anadolu teknik liseye puanım yetiyordu hem de burs kazanmıştım. Fena bir öğrenci sayılmazdım. Yeni yeni yazılım geliştirmeye giriştiğim dönemlerdi. İnternet kafelerde, o zamanlar varolan site.mynet.com üzerindeki html editörünü keşfetmiş, HTML öğrenmiş sayılırdım. Bi' yandan asp yazmayı deneyip, diğer yandan Hakkı Öcal'ın dünyada ki en kötü çeviriye sahip PHP kitabını okuyarak, PHP öğrenmeye çalışıyordum. Bir yandan da Photoshop ve Flash ile ilgili ne bulabiliyorsam okuyor öğrenmeye çalışıyordum. İnternet kafeler o zamanlar yaşımız küçük olduğu için internete bağlanmamıza müsade etmediklerinde bilgisayardaki kayıtlı HTML dosyaları düzenleyip değiştirerek eğleniyordum.

Anadolu lisesine kaydımı yaptırdıktan sonra internet kafeye gelip, arkadaşlarıma ilk yıl hazırlık sınıfı okuyacağım için artık İngilizce öğreneceğime dair ne kadar hevesli olduğumu anlatıp duruyordum. Ne de olsa artık daha fazla şey öğrenebilecektim İngilizce bileceğim için.

Hem burs alıp hem anadolu lisesinde hazırlık okuyarak benim için potansiyel ve imkan dolu bir yolculuğa çıktım. Ancak ne yazık ki, ergenlik dönemini şiddetli geçirdiğimden ve baba figürünün yoksunluğundan her şeyi elime yüzüme bulaştırıp okuldan da, öğretmenlerden de soğudum. Okula gitmek yerine internet kafede daha fazla şey öğrenmeye çalışarak, aslen bir isyana giriştim. İsyan dediğim de, sunulanı reddedip – ki daha fazla potansiyeli olmasına rağmen- keyfimce öğrenmekti. Okuldaki öğretmenlerin benden nefret ettiğini düşünüyordum ilkokuldan beridir. Umutla başladığım lisedeki öğretmenlerin de dayak ve korkutmaları da bu düşünceleri pekiştirdi. O liseyi bitiremedim, okuldan atılmadım ancak devamsızlıktan ve sınavlarda yeterli olamadığım için sınıfta kaldım.

Tekrar düşününce anadolu lisesindeki öğretmenlerimi yanlış anladığıma inanmayı tercih ediyorum.

2005 yılında aynı okulu tekrar okumak istemedim, zaten eve uzak olduğu için bahanem de vardı. Eve yakın olan bir endüstri meslek lisesine geçiş yaptım. Yeni liseme gittiğimde, anadolu lisesinden gelmiş olduğum için her ne kadar sınıfta kalmış olsam da, orta öğretim puanıma da güvenerek bilgisayar veya elektrik-elektronik okumak istedim. Okula devam etmeye kararlıydım böyle olursa.

Okul kaydına annemle gittik. Annem aşırı mahçup bir kadın, hakkını araması gerektiğini, gerektiği zaman sert konuşabilmeyi emekliliğine yakın öğrenebildi. Kayıt sırasında istediğim bölümü Atilla ismindeki okul müdürüne söyledim. Olumlu gibiydi, ardından isteğe bağlı-zorunlu okul aile birliğine maddi yardım istedi. Fabrika işçisi olan annemin de o kadar parası yoktu. Müdürün tepkisi değişti ve istediğim bölümlerin dolu olduğunu, sadece mobilya bölümünde yer olduğunu söyledi. Annem de, ben de itiraz edemedik, öyle bir hakkımız olduğunun farkında da değildik zaten. Kaydı yaptırıp ayrıldık.

Okul başladıktan 3 hafta sonraya kadar bilgisayar ve elektronik bölümlerine yeni kayıtlar alındığına tanık oldukça, daha da duyarsızlaştım dünyaya karşı. Zaten içine kapalı biriydim, daha da ilerledi bu durum.

Okulun ilk yılı benim için fazlasıyla basit geçti. Hiç ekstra efor sarfetmesem de takdirname alarak bitirdim ilk yılı. Matematik ve Fizik en sevdiğim derslerdi. Çok arkadaşım da olmadığından dersleri iyi dinliyordum ve şansıma iki hocamız da çok ilgiliydi bana karşı. Sonra değiştiler tabi ki ve hem fizik hem matematik uzaklaşmaya başladı benden.

İkinci sınıfta hem biraz daha büyümüş olmak hem yeni arkadaşlar edinmiş olmak gibi sebeplerden dersleri biraz boşladım. Teşekkürle ikinci sınıfın ilk dönemi, zorla da ikinci dönemi bitirdim.

Bu süreçte hala öğrenmeye devam ediyor ve PHP bilgimi ilerletiyordum. Mobilya okuduğum için Autocad ve 3DsMax öğrenmeye başlamıştım ve iyi gidiyordum. Katı modelleme konusunu da çok sevmiştim. Çok fazla internet kafeye gittiğim için, annem tedirgin oluyordu serseri olacağımdan. Okuma yazma dahi bilmeyen bir kadına o yaştaki ben'in, yaptığı ve yapmak istediği şeylerin kötü şeyler olmadığını anlatmayı başaramadım. Annem beni internet kafeden uzaklaştırabilmek için bir bilgisayar aldı. Hatırladıkça heyecanım tekrar beliriyor. Acayip mutlu olmuştum. Yıllardır öğrenmek için çabaladığım, öğrenmek için internet kafelerde sabahladığım, bir sürü internet kafeden bozduğum için kovulduğum şey olan “bilgisayar” artık bana ait olabilmişti. Aynı heyecanı, sanıyorum başka hiç bir şey için yaşamadım.

Atölye derslerim iyi gitmiyordu, sık sık dayak yiyordum. Ergenliğim ilerlemiş, asiliğim artmıştı. Okulu bitirmeyi düşünmüyordum. Annemin tek umudu benim okulu bitirmem ve iş sahibi olabilmemdi. Tek başına zorluklarla okutabildiği oğlunun, elinden kayıp gitmesini istemiyordu.

Tüm dersleri boşlayıp, okuldan kaçmaya, haytalık yapmaya, kız liselerinde takılmaya, kavgalara karışmaya dalmışken, okuldan atılmak üzere olduğum haberi anneme gitti. Annem okula geldi, geriye dönük rapor önerdiler, sağlık ocaklarına gittik, benim hatamı telafi etmeye uğraştık.

Bir yandan da bilgisayar bölümü hocalarıyla sohbet etmek istiyor, ne öğrenebilirsem öğrenmek istiyordum. Kendi bölümünden daha çok bilgisayar bölümünde vakit geçirip hocaların başını ağrıyordum. Görkem denen bir öğretmenciği gözümde biraz fazla büyütüp, bana gerçekten fayda sağlayabileceğini düşündüğümden onun yaptığı işlerle ilgileniyordum.

PHP ile yaptığı bir içerik yönetim sistemini anlatıyor, böbürleniyor, ne kadar kaliteli ve güvenli bir sistem yapıp okulun web sitesini yayına aldığını anlatıyordu. Detay vermeden yapıyordu bunu. Kıymet verdiğim bu hocanın işini inceliyordum gece yarılarına kadar. Hatta bulduğum hataları bildirip gözüne girmeye çalışıyordum. Yalandan aferimler alıyordum haliyle. Ancak o zaman bile ne kadar samimiyetsiz olduğunu farkedebiliyordum. Fakat bunun artniyetden olduğunu düşünmüyordum.

Daha ileri gitmek, güvenlik açıkları aramak istedim. Hocaya bunu söyledim, onayını aldım. Bir kaç gece uğraştıktan sonra bir rfi açığı buldum. Sunucuya eriştim, yedek aldım. Heyecanla ertesi günü bekledim, hocanın gözüne gireceğini sanarak okula gittim göğsümü gere gere.

Bilgisayar bölümünden bir öğrenci arkadaşımla da o gece yaptığım deneyi paylaşmıştım. Bu çocuk, hocaya nasıl anlattı bilmiyorum. Okula girdiğimde, Görkem hoca beni yakalayabilmek için nöbetçi yazılmış ve dersim olan sınıfın önünde beni bekliyordu. Gülümseyerek hocaya doğru yaklaştım, müjdeyi verecektim, ne kadar başarılı bir öğrencisi olduğumu söyleyecekti.

Sisteme hiç bir zarar vermemiş, büyük bir açık bulmuştum. Bana göre bu takdire lâyik bir hareketti. Ancak beni görür görmez üzerime koştu, ve tabi ki beni iyice bir hırpaladı.

Disipline vermeye çalıştı, okulun bitmesine iki ay varken elinden geleni yapacağını söyleyen tehditler savurdu. Mobilya atölyeme çağrıldım, kendi hocalarım beni bir odaya çekti ve “Bu adam sana niye böyle davranıyor, seni çekemiyor olabilir mi?” dediler. Tabi ki öyle bir şey düşünmüyordum, çünkü olayı anlayamıyordum bile. Hayır tabi ki dedim ve olay kapandı.

Sonrasında bilgisayar bölümünden uzak durdum, teknik resim dersi ödevlerini autocad ve 3dsmax'de modelleyerek, özenle fotoğrafçıdan, fotoğraf kağıdına çıktısını alarak hocalarıma götürüyordum.

Sonrasında lise bitti. Üniversite'ye gitmek istiyordum, sınava girmiştim ancak o kadar dersi boşlayınca, endüstri meslek lisesinden çıktıysanız, meslek okulu dışında bir yere, hele de bölüm değiştirerek gitmeniz pek kolay değildi. Annemin hatırı için Dokuz Eylül Üniversitesi Meslek Yüksek Okulundaki mobilya bölümüne ikinci öğretim olarak yazıldım.

Üniversite hayatım da beklendiği gibi pek parlak geçmedi. Artık profesyonel olarak yazılım geliştiriciliği yapmaya başlamıştım. İzmir'de bilenler bilir, bir Junior için hayat pek zor olabiliyor. Çalıştığım çoğu yerden maaş alamıyordum ancak yeni yerler bularak çalışmaya devam ediyordum.

Okuldaki derslere vakit ayırmakla ilgilenmiyordum. İngilizce'yi her ne kadar boşlamış olsam da, üniversitede sınavlardan, derslere girmeden AA alabiliyordum. Diğer derslerde de durum çok farklı değildi. Sınıfımdakileri kopya vererek, hatta direk kağıt değiştirme şeklinde aynı sınavı 3-4 kez tekrardan geçerek eğleniyordum. Bilgisayar dersi için hocadan her ne kadar rica ettimse de dersine girmediğim için sınava almayacağını söyledi. Almadı :)

Bu okulun bitmeyeceğini biliyordum, ancak şansımı denemek istemiştim. Bilgisayar dersinde böyle bir şey olunca da bitmeyeceği kesindi. Zaten inatçıydım, sen almazsan ben de gelmem deyip bilgisayar dersinden kalmayı kesinleştirdim. Atölye sınavlarına katılmıyordum. Zaten yeterince iyi kullanmayı bildiğim aletlerle tekrar saçma sınavlara tabi tutulmak ergenlik damarıma dokunuyordu(!). Ancak atölye hocalarım okulu bırakacağım güne kadar, defalarca tekrar tekrar sınava girebileceğimi, hiç bir şey yapmasam da geçireceklerini söylediler. Ama hakkım olmayanı almamak konusunda da inatçıydım.

Çok saçma bir şekilde şu tripteydim: “Ben o sınava gelirsem geçerim, geçemezsem vereceğiniz puanı istemiyorum. Ama sınava gelmeyeceğim”. Sebep? Sebep yok...

Bu tavrımı hala anlamlandırabilmiş değilim.

Okulu bırakma kararımı net verdiğimde Matematik dersindeydik. Matematik dersleri karma yapılıyordu, katılım zorunluluğu yoktu ancak o gün katılmak istedim. Sınıfta arka sıralara yerleştik 4-5 kişiydik mobilya bölümünden. Matematiği sevdiğimden bahsetmiştim. Derse katılım göstermek istedim o gün. Sorulara cevap vermek istiyordum, soru sormak istiyordum fakat hoca uzun süre görmezden geldi. Dersin ortalarında tekrar el kaldırmak istediğimde, “Siz boşverin matematiği, odununuzla ilgilenin” dedi. Arkadaşlarımı arkama takıp sınıftan çıktım, sonrasında da okula bir daha dönmedim.

Okulu bırakmıştım, sırada askerlik vardı. Hemen tecilimi bozdurup askere yazıldım. Askerdeyken tekrar öss'ye girdim, Hatay Mustafa Kemal Üniversitesinde, Ağ Teknoloji bölümü yazabilecek kadar puan aldım. Yazdım, ancak kayda gitmedim. Askerden sonraki maddi sıkıntılar sebebiyle, annemi bırakıp okumaya gitmeye gönlüm el vermedi. Kalıp hayatıma devam ettim, sonrasında da, tekrar okula dönme fırsatı zaten elime geçmedi.

#tr #kişisel #okul

4 çeyrekte hedeflerimi not ederek, 3 ayda bir kontrol edip bu yılı daha efektif geçirmeyi hedefliyorum. Her çeyrekte bu yazıyı güncelleyerek ilerleyeceğim. Her çeyrek bittiğinde sonraki çeyreğin hedeflerini buraya ekleyeceğim.

İlk çeyrek

İlk çeyreğin bitiş tarihi 31 mart gece yarısı.

  • Bitireceğim kitaplar:

    • Isaac Asimov – The Complete Robot (%3)
    • Philip Kotler – Pazarlama 4.0 (%10)
    • Bülent Eczacıbaşı – İşim Gücüm Budur Benim (%75)
    • Hitchcock & Truffaut (%50)
    • Brian Cox & Jeff Forshaw – Neden E=mc2? (%10)
  • Yayınlayacağım yazılar:

    • Fully Featured Symfony Blog in Minutes (%80)
    • Monads in Haskell
  • Bitireceğim eğitimler:

    • Udemy Satış Eğitimi (%29)
    • Udemy Complexity Theory Basics
    • Udemy Userspots Kullanıcı Deneyimi 101 (%27)
  • Günde ortalama 20dk gitar pratiği yapacağım.

  • Günde en fazla 20dk sosyal medyaya ayıracağım.

  • Günde en fazla 20dk sektör takibi için ayıracağım (reddit, hn vs.)

  • Tamamlayacağım projeler

    • Bilimma react frontend'ini yayına açacağım.
    • Webfinger php implementasyonunu tamamlayacağım.
    • ActivityPub php implementasyonuna başlangıç yapmış olacağım.
  • Etkinlikler

    • Her ay bir GDG Cloud Ankara etkinliği organize edeceğim.
    • Bir adet AnkaraPHP ile Symfony workshop'u organize edeceğim.
    • Webend için mekan, zaman ve konsepti netleştirmiş olacağım. (kuvvetle muhtemel 3. çeyrek)

Bu çeyrek boyunca, daha fazla öğrenmek ve üretmek için çabalacağım.

#tr #kişisel

bu yazı ilk olarak medium üzerinde yayınlanmıştır

Hunharca tartışılan Türkiye’de yeni mezun bilgisayarcı (burada yazar yazılım mühendisi olmak isteyen tüm çaylakları kastetmektedir) kişiler için başlangıç maaşının ne olması gerektiği konusunda iki kelam etmeye çalışacağım.

Yeni Mezun

Yeni mezun derken ikinci harf olan e’yi uzatmanız önemli. Yeni Meeezun, derken neden bahsediyoruz bunu bir sınıflandıralım. Okuduğu okuldan bağımsız olarak amacı yazılım geliştirme uzmanlığı olan, “Ben de kod yazmak istiyorum” diyen değil “Ben de kod yazarak para kazanmak istiyorum” diyen kişilerdir. İlla ki okullu da olması gerekmez bu şahsın. Yazılımcı olarak ilk deneyimini kastediyoruz. Okullu olanlar burada kalkıp ben onca sene okudum niye aynı sayıyorsunuz demesin. Çünkü okuduğunuz okullarda aldığınız eğitimden daha iyi seviyede olan alaylılar da mevcut. Yani okul sizin yazılım bilginize “fazladan” bir şey katmaz. Size mühendislik disiplini katar, bu da aşağıda bahsedeceğim formülün bir başka değişkenidir. Ancak her okulluya da aynı muamele yapılamayacağı için, okullu ve alaylı aynı potada eriyecek yazı boyunca.

İlk İş

‘Yazılım’ sektörü dışında dahi ilk işine başlayan kişi eğer öğrenimi sırasında herhangi bir sektör içi tecrübesi yoksa en iyi ihtimalle (devlet memurluğu dışında) ilk başlayacağı iş için asgari ücret neyse o ücreti kazanmaya başlayacaktır. Burada fen veya sosyal bilimler alanında eğitim görmüş ve araştırmacı diyebileceğimiz kişileri ayrı tutuyorum. Çünkü bu kişiler için iş olayları çok daha farklı cereyan etmektedir. Yazılım sektöründe ise iş biraz daha karışık. Kişinin sektör tecrübesi olmasa dahi, açık kaynak dünyaya katkı sağlamış olabilir ve/veya kişisel projeleri mevcut olabilir. Bu sayede direkt olarak sektör içinde olmasa dahi yetkinlik kazanmış bulunabilir. Bu sebeple ilk iş tabiri yazılımcı için biraz bulanıktır.

Bu sebeple zaten bu kadar çok kafadan (biri ben) bu kadar çok farklı ses çıkmaktadır. Ancak sığ kişiler tümünü aynı kefeye koydukları için çok fazla yanlış fikir oluşuyor. Zaten bu yazının ana sebebi bu.

Peki Maaş Ne?

Evet, esas soruya cevap vermedim hala. Çünkü yukarıda da dediğim gibi basitçe şu olmalıdır gibi bir durum mevcut değil. Eres olarak bizim kişisel deneyimlerimize dayalı bir formulümüz mevcut, bizim gibi bir sürü farklı şirketin de kendi deneyimlerine dayalı fiyat politikaları mevcut.

Bizim Formül

Maaş bizim için zaman değeridir en başta. Bir çalışana ödeyeceğimiz ücret ne kadar zamanını alacağımızla başlıyor. İlk değişkenimiz satın aldığımız zaman. Buradaki zamanı ön tanımlı olarak 1 aylık çalışma süresine yapacağı işten bağımsız olarak asgari ücret olarak ekliyoruz. Asgari ücretten başlamış oluyor hesabımız kısaca.

Ardından bu kişinin bize katacağı ve bizden alacağı zamanı hesaba katıyoruz. Şöyle ki bu kişinin yeterliliği sıfır noktasında değilse, yani atadığımız işleri çözebilmek için bir başka çalışanın vaktinden çalacak yani iş öğrenecekse değer katarken, bu kişinin ortalama aylık çalabileceği vakti hesaba katıyoruz. Burada hem kişinin yeterlilik seviyesi, hem öğrenme kapasitesi etkili. Aynı bilgi seviyesine sahip iki kişiden birisi tek seferde anlatılanı anlayabilir; farz edelim aylık, usta yazılımcıdan çalacağı vakit %5'tir, ancak diğer bir kişi hem anlatıma hem uygulamalı gösterime ihtiyaç duyar, bu kişinin ise çalacağı vakit %20 olacaktır. Çıkan yüzde oranını ilk değer olan asgari ücretten düşüyoruz. Ancak eğer kişi herhangi bir kişiden zaman çalmayacak ve self-learning ile kendisi çözüp üzerine verilen işleri rahatlıkla çözecek ve ustasına fayda sağlayarak iş çözebilecek ve bize ekstra zaman kazandırabilecekse, tahminen sağlayacağı iş gücünü ustasına göre %10 diyelim örneğin, asgari ücretin üzerine ekliyoruz.

Temelde bu şekilde kişinin sağlayacağı katkı oranını hesaba katarak, kısaca tamamen ticari düşünerek başlangıç ücretini belirliyoruz. Ancak bu noktada bahsetmediğim içgüdüsel değişkenler de mevcut. Tecrübesiz kişiyi işe alarak şirketlerin aldığı riskler de mevcut. Bahsettiğim şekilde asgari ücretten başlatıyoruz ve bunu geleceğe yatırım olarak düşünerek yapıyoruz. Yani asgari ücret ile başlayan kişi hiçbir şey yapmadan da üç ay boyunca maaş alıp sonra vazgeçtim ben diyip gidebilir, ya da çok fazla diğer personelden vakit çalıp edinimlerini sağlayıp tamam ben alcağımı aldım deyip gidebilir. Yani şirkete tam fayda sağlayacağı noktada bırakıp gidebilir. Bu durumda şirket zarara uğraşmış olacaktır.

Mülakatlarda bu gibi durumlar içgüdüsel olarak tahmin edilmeye ve ilk işi olacak kişi için risk analizi yapılır, bu da belli bir yüzde olarak maaş belirlemede kullanılır.

Son olarak bir de (sonunda) kişinin maaş beklentisi vardır. Bu sadece kişi hakkında yukarıda bahsettiğim risk analizi hesabı için kullanılacak bir bilgi sunar. Bu demek değil ki az maaş isteyin risksiz görünün. Dengeyi yakalaması önemlidir kişinin. Kendi yeterliliğinin çok altında maaş isteyen birisi de risklidir şirket için, aksine kendinin farkında olmayan bir kişi de 6 ay sonra kaçma ihtimalini bulundurabilir. Yani maaş beklentinizi kendinize göre “benim zamanımın şu anda değeri bu kadardır” der gibi söylemeniz gerekiyor. Bu da hesaba dahil ediliyor.

Yukarıdaki hesap dışında çok sık karşılaşılmasa da ekstrem durumlar mevcut. Örneğin henüz mezun olmadan iş teklifi götürebildiğimiz insanlar da mevcut. Şöyle ki kişisel olarak işini fazlasıyla sevmiş ve para için yapmasa bile işler çıkartmış açık kaynak olsun olmasın işlemiş kişiler her şirket için olduğu gibi bizim için de değerlidir. Bu gibi kişilere tamamen (gerçeklikten uzaklaşmadan) kendilerinin belirlediği maaşları ödüyoruz. Üstelik tam zamanlı çalışan olup olmamak da değil, outsource veya remote olarak da çalışabiliyoruz. Tabii bunlar yaptıkları iş konusunda para için hiç iş yapmamış olsa dahi parlak gelecek vaadeden kişilerdir.

Net bir şey söyle

Net tek rakam asgari ücrettir, bunun üstünde bir kişiye sırf o işe girmek istediği için “minimum şu kadar ücret ödenmelidir” demek abesle iştigaldir. Çünkü her insanın amaçları, seviyesi, yetkinliği, kazandırdıkları farklıdır. Çıkıp boş konuşarak şu maaştan aşağı başlamayın diyerek hadsizlik etmek kimsenin hakkı değildir.

Neden?

Herkes aynı işi aynı şekilde yapmaz, o yüzden herkesi aynı kefeye koyamazsınız, sırf aynı mesleği icra etmeye niyetlendi diye. Sadece bir alt limit belirlersiniz ki bu noktada bu asgari ücrettir. Bu da her sektöre uygulanır sadece yazılımcılara özel değildir. Sektöre yeni girmiş birisi sadece günlük harçlığı karşılığında Serdar Doğruyol'la beraber çalışmak ve onun zamanına karşılık kendi zamanını vermek isteyebilir ki denk değildir bu sebeple üstteki formülde olduğu gibi Serdar’dan, Fatih Arslan'dan yahut Gökhan Şengün'den uzmanlıkları hakkında günlük bir saat bilgi almak 3–5 ay boyunca alacağı maaşdan çok değerli olabilir.

Bir de Serdar'ın, tartışma hakkında en beğendiğim yorumunu şuraya iliştireyim.

Daha da ötesinde kalkıp “başlangıç maaşı şu kadar olmalıdır” diyenlere itibar etmeyiniz. İşinizi ne kadar iyi yapıyorsanız o kadar iyi kazanacağınızdan emin olun. Kendinizi bilin, 6 ayda bitiremeyeceğiniz 50.000 liralık proje için aylık 5.000 lira isterseniz kimse sizi ciddiye almayacaktır. Aynı şekilde şirkete müthiş katkı sağlayacağınızı iddia edip “asgari ücret yeter abi” dediğinizde de kimse sizi ciddiye almayacaktır.

Kendinizi bilin, işinizi iyi yapın. Henüz yola yeni çıkıyorsunuz, ilk derdiniz maaş olursa o yol hayal ettiğiniz yere çıkmayacaktır.

#tr #oneri

Son bir kaç aydır Haskell öğrenmeye çalışıyorum. Neden böyle bir maceraya giriştiğimle ilgili bir yazı yazmak istiyorum ilerde.

Şimdilik öğrendiğimi düşündüğüm konuları hem not etmek, hem de türkçe kaynak oluşturmuş olabilmek adına, olabildiğince bloguma eklemeye çalışacağım.

Functor, Haskell'de bir TypeClass olarak tanımlanmıştır. Yaptığı iş, kapsayıcıya/kapsama (context) müdahale etmeden, içerdeki veride işlem yapabilmeye olanak sağlamaktır.

Basitçe toplama işlemi için (+3) 2 dediğimizde, 2 ile 3 ile toplayan fonksiyonu işleme sokarak 5 sonucuna ulaşmış oluyoruz. + iki argüman bekleyen bir fonksiyon olduğu için birinci fonksiyonu vererek 3 ile toplayan fonksiyona çevirme işlemine currying deniyor. Başka bir yazıda detaylıca gireceğim.

Ancak contexte müdahale etmeden işlem yapmak istediğimiz zamanlar olacaktır. Örneğin; Haskell'de Maybe adında bir type mevcut. Just ile kapsanmış bir değer yahut Nothing değerine sahip olabilir. Eğer elimizde Maybe Int türünde bir Just 2 değeri varsa bunu (+3) fonksiyonumuza nasıl verebiliriz? + fonksiyonu iki argüman bekliyor, ikisi de Num olmalı. Ancak birisi doğruyken diğeri bir kapsayıcı içerisinde.

Üstelik biz işlem sonucunda elimizdeki Just 2 değerinin türünün değişmesini istemiyoruz.

Çok şanslıyız çünkü Maybe türü bir Functor.

Peki bir Functorı nasıl işleme sokabiliriz? Elimizdeki Functorlar ile işlem yapmamız için çok güzel bir fonksiyon var ve adı fmap.

Bir Functor ile işlem yapmak istediğimizde, fmap fonksiyonunu kullanabiliriz. Örneğin; fmap (+3) (Just 2) dediğimizde bize sonuç olarak Just 5 verecek ve kapsayıcımız bozulmamış olacak.

Maybe türü için Functor tanımlaması ise şöyle yapılmış durumda:

instance Functor Maybe where
    fmap func (Just val) = Just (func val)
    fmap func Nothing = Nothing

Gördüğünüz gibi net bir şekilde Functor typeclassından tanımlanmış instancelar ile Functorların fmap fonksiyonu ile nasıl çalışabileceği belirlenmiş durumda. Tüm Functorlar için instancelar bu şekilde tanımlanmıştır. Maybe için eğer beklenen değer Nothing gelirse verilen fonksiyon uygulanmadan Nothing dönmektedir.

Ayrıca Haskell'de listeler de birer Functor instanceına sahiptir. Bunu da diğer yazıda paylaşacağım.

#haskell #tr #functor #functionalprogramming #fonksiyonelprogramlama

Unix tabanlı işletim sistemi kullanıp nimetlerinden faydalanmayan çok insan görüyorum. Özellikle araştırmacı olup windows'a yahut macos'un arayüzüne mahkum olanlar için hızlıca unix felsefesinden bahsederek nasıl işlerinizi daha etkili bir şekilde halledebileceğinizi anlatmaya çalışacağım.

Unix Felsefesi

Unix felsefesi formal bir felsefe değildir. Tecrübeyle geliştirilmiş bir felsefedir. Kusursuz uygulama nasıl yapılır diye bir şey söylemez ya da bir uygulamayı nasıl yapmanız gerektiğiyle ilgilenmez. Unix felsefesi tüm sistemi oluşturan parçalara odaklanır ve bütünleşme üzerine fikirler yürütür.

Unix felsefesinin temelleri şöyledir¹:

  • Bir uygulama sadece tek bir şeyi iyi yapmalıdır. Bir iş için yeni bir uygulama yapmak, eski uygulamaya özellik ekleyip karmaşıklaştırmaktan daha iyidir.
  • Bir uygulamanın vereceği çıktı, diğer bir uygulama için girdi verisi olarak kullanılabilmelidir. Çıktıyı gereksiz detay bilgileri ile kirletmeyin. (Detay bilgi dönmesi gerekebilen uygulamalar için -v parametresi ile verbose mod desteği ekleyerek uygulamanın arzu edilirse detaylı çalışmasını sağlayabilirsiniz. Ya da başka bir parametre ile.)
  • Bir uygulama interaktif girdi beklememelidir. Girdilerini parametre ile ve/veya stdin (başka bir program çıktısı) üzerinden alabilmelidir.

Pipeline

Temel unix felsefesini oluşturan kuralların işleyebilmesi için bilinmesi gereken en önemli şey “Pipe”(|) işaretinin yaptığı iştir. Çünkü bir programın başka bir programdan girdi alarak ilerleyebilmesinin, yani birleştirilebilir olmasının yöntemidir. Türkçe klavyeler için alt işareti ile beraber - işaretine basarak ulaşabilirsiniz. Tam olarak yaptığı iş, solundaki program ne dönerse bunu al sağdaki arkadaşın girdisi olarak kullan.

En basit uygulamalardan birisi ls ile bir örnek yapmak için wc uygulamasını kullanabilirsiniz. ls bulunduğunuz klasördeki veya verdiğiniz klasördeki dosya ve klasörleri listeler, wc ise verilen girdide kelime sayma işlemi yapmanızı sağlar.

ls /usr/bin/|wc -l

Yukarıdaki örnek benim bilgisayarımdaki /usr/bin klasöründe 2369 adet dosya olduğunu söyleyebiliyor. ls e parametre olarak verdiğim klasör her satıra bir dosya-klasör çıktısı olacak şekilde bir metin üretiyor. wc ise -l parametresi ile satırların sayısını istediğimi söylüyor. Sonuçta bana klasörde kaç dosya olduğunu söyleyen bir uygulama elde etmiş oluyorum. İki programın da yapmak için planlanmadığı bir program çıktısı oluştu.

Birisi dosya-klasör gösteren, diğeri ise verdiğin metinde sayma yaparım diyen iki programı birleştirerek, istediğin klasördeki dosya-klasör sayımı yapmamı sağlayan bir program programlayabilmiş oluyorum.

Unix felsefesinin en temelindeki fikir budur.

Mantıksal işlemler

Terminal üzerinde mantıksal işlem yapabilmenize imkan sağlayabilen oparatörler mevcut. AND ve OR işlemler yapmak istediğiniz zaman && ve || operatörlerini kullanabilirsiniz. Yan yana iki uygulama çalıştırmak istiyorsanız ve birbirlerinden bağımsız hareket etsin isterseniz de ; operatörünü kullanabilirsiniz.

Örneğin: cd /missing/dir && ls komutunu çalıştırırsanız ilk komut çalışmayacağı için ikinci komut es geçilecektir. Ancak cd /missing/dir || ls dediğinizde soldaki komut çalışmasa bile ls komutu çalışacaktır.

MAN

Tabi ki unix tabanlı işletim sistemlerinde bu kadar küçük parçalardan oluşan yüzlerce-binlerce küçük uygulama bulunmaktadır. Hepsinin nasıl çalıştığını bilmeniz mümkün değil. Bu yüzden man adında bir uygulama daha mevcut. Geliştirilen uygulamalar için hazırlanmış yardım dökümanlarını görüntülemek için kullanabilirsiniz.

Örnek olarak man ls yazıp çalıştırırsanız, size ls uygulaması hakkında tüm detayı verecektir. Hangi parametreyi alır, hangi işleri yapar, nasıl kullanılır gibi.

Eğer küçük bir hilekarsanız, “bu dökümanlar çok uzun, nasıl kullanıldığını bilsem yeter” derseniz diye tembel yazılımcıların oluşturduğu hile servislerini kullanabilirsiniz. Örnek olarak cheat.sh size yardımcı olabilir. Bunun için curl adındaki, internetten veri almanıza olanak sağlayan bir uygulamayı kullanabilirsiniz.

curl cheat.sh/ls komutunda olduğu gibi adres satırının sonuna öğrenmek istediğiniz uygulamanın adını koymanız yeterlidir. cheat.sh/ls adresine tarayıcınızdan da ulaşabilirsiniz.

$ curl cheat.sh/

# Displays everything in the target directory
ls path/to/the/target/directory

# Displays everything including hidden files
ls -a

# Displays all files, along with the size (with unit suffixes) and timestamp
ls -lh 

# Display files, sorted by size
ls -S

# Display directories only
ls -d */

# Display directories only, include hidden
ls -d .*/ */

Nasıl kullanayım?

Bu noktaya kadar aslında öğrenmeniz gereken her şeyi öğrendiniz. /usr/bin ve /usr/local/bin klasörleri altındaki çoğu uygulamayı bu yöntemle istediğiniz amaçlar için kullanabilirsiniz.

Örneğin ben sunucumdaki anlık bağlantı sayısını görüntülemek için aşağıdaki gibi bir kod inşa edebilirim:

curl -s http://sunucu_ip/nginx_status|head -n 1|sed -e 's/Active connections: //g'

curl ile sunucumdan anlık veriyi çekiyorum, bana detaylı bir veri çıkartıyor.

Active connections: 300
server accepts handled requests
 1544990299 1544990299 1308915160
Reading: 0 Writing: 2 Waiting: 286

Bu veri içerisinden ben head uygulaması ile sadece en üstteki satıra ihtiyacımı belirtiyorum. Buradan dönen sonucu da sed adlı kelime işlemci ile Active connections: yazan kısmı temizleyip sadece sayıya ulaşabiliyorum ki, 20 snyde bir çalışıp çıktısını bilgisayarımın bir köşesinde sürekli göreceğim için elimde sadece sayı olsun.

Araştırmacılar için çok fazla potansiyel sunan unix dünyası, işlerinizi çok hızlı bir şekilde yapmanızı sağlayacaktır. Her araştırma alanı için mevcut olan bir çok unix-felsefesini benimsemiş uygulama mevcut. Örneğin Zorro adındaki uygulama fasta formatında dna verileri için biyologların anlayacağı bir işlem yapıp sonucunu metin olarak dönüyor. Temel kuralları uyguladığı için zorro ile pipelining yaparak birleştirebileceğiniz diğer programlar işlerinizi daha kolay yapabilir hale geleceksiniz.

Buna benzer uygulamaları alanınıza göre zamanla öğrenerek, işlerinizi daha kolay halledebilir hale geleceksiniz.

Alan bağımsız

Tabi alanınızdan bağımsız olarak kurcalamanızı önereceğim bazı, her unix türevinde bulunan uygulamalar mevcut. Her uygulamada man için hazırlanmış dökümanlar olmayabiliyor. Ancak her uygulama -h parametresi ile çalıştırıldığında temel bir yardım dökümanı sunuyor.

cd klasör değiştirmenizi, ls dizin içeriği görüntülemenizi, pwd nerede olduğunuzu bilmenizi sağlar. mkdir,touch,cp,rm,mv,ln dosyalara ve klasörlere müdahale etmenizi sağlar. head,tail,less,more,cat dosyaların içeriklerini almanızı sağlar. curl,wget internetteki dosyalara erişmenize yardım eder.

uniq,sort,wc,diff,cmp,cut,sed metinlerle işlem yapmanızı sağlarken awk,grep ise metinler içerisinde desen aramanızı ve/veya işlem yapmanıza olanak sağlar.

/usr/bin ve /usr/local/bin klasörünüzü kurcalayarak diğer uygulamalar da ulaşabilirsiniz.

1: https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch01s06.html

#unix #tr #bash #linux-101