İşinize yarayacak HomeBrew paketleri

HomeBrew, Linux’ta kullanmaya alışkın olduğunuz yazılımları (paketleri) MacOs’ta kolayca kurmaya yarıyor. Örneğin MacOs’ta nginx ve PHP-FPM kurmak oldukça zahmetli, ama HomeBrew kullanarak bir komutla kolayca halledebiliyorsunuz.

HomeBrew’i kurmak için terminalde bir komut vermek yeterli. Kurulum komutu değişebilir o yüzden buraya koymuyorum, sitesinden kopyalayıp çalıştırın.

Günlük hayatta kullandığım birkaç HomeBrew paketini buraya yazıyorum. Bunları kullanmanızı size de tavsiye ederim. Başka paketlerle ilgili bilgi isterseniz de brew info ve brew search komutlarını kullanabilirsiniz.

colordiff, bildiğimiz diff komutunun renkli hali. Bunun için bir de alias yaratırsanız tüm diff komutlarını renkli hale getirebilirsiniz.

doctl, DigitalOcean için komut satırı arayüzü sağlıyor. Hâttâ DigitalOcean web sitesinde bulunmayan boyutta makineler de oluşturabiliyorsunuz. Benzer şekilde, AWS kullanıyorsanız awscli programı var.

7zip en yüksek sıkıştırma oranına sahip program. Rardan bile daha iyi sıkıştırıyor. p7zip paketiyle MacOs’a 7zip kurabilirsiniz.

Tarayıcıdan dosya indirmeyi hiç sevmiyorum. İnternet bağlantımda bir titreme olduğunda bütün indirmeyi sıfırdan başlatmak gerekiyor. Komut satırından wget kullanarak bu sorunu çözüyorum.

Youtube videolarını indirmek için bir uygulama satın almaya gerek yok. youtube-dl paketi fazlasıyla yeterli. Adresi veriyorsunuz, gerisini o hallediyor. İndirdiğiniz ya da başka herhangi bir videoyu başka formata çevirmek ya da içinden mp3 çıkarmak için de ffmpeg programını kullanabilirsiniz.

Kullandığımız Linux makinalarda, işlemci durumunu görmek için htop kullanırım. Aynı programı HomeBrew ile MacOs’a kurabiliyorum.

HomeBrew ile bazı programları da doğrudan kurmak mümkün. Mesela Sequel Pro kurmak için Caskroom/cask/sequel-pro paketini kullanabilirsiniz. Benzer şekilde cask mantığıyla Slack, Whatsapp, Google Chrome, Firefox, Transmission ve Dropbox gibi çok sayıda yazılımı kurabilirsiniz.

Yazılım geliştirirken kullandığım nodejs, nginx, redis ve mysql paketlerini de HomeBrew ile kuruyorum. HomeBrew ayrıca brew services komutuyla nginx gibi servisleri de yönetmenize olanak veriyor. Merak ediyorsanız, php 7.1 sürümünü de (fpm servisiyle birlikte) HomeBrew ile kurabilirsiniz.

 

 

Genel kategorisine gönderildi Etiketler: , ,

En iyi Sublime Text eklentileri

Sublime Text, çok güzel bir kod editörü. Kullanımın önüne çıkmayan, basit bir arayüzü var. Ama bir o kadar da güçlü. Fareden ziyade klavyeyle yol alıyorsunuz, o yüzden programa alıştıktan sonra işinizi çok hızlı yapabiliyorsunuz. Ek not, eğer bir programcı olarak işinizde daha iyi olmak, daha hızlı ve verimli çalışmak istiyorsanız, fareden uzak durmayı öğrenmelisiniz.

Çıplak, yeni kurulmuş haliyle, çoğu işinizi eksiksiz giderebilirsiniz. Editöre iyice alıştıktan sonra da çok sayıda eklentiyle Sublime Text’i çok daha güçlü hale getirmek mümkün. Bu yazıda kullandığım eklentilerden bahsedeceğim.

İlk olarak Package Control eklentisi. Bu eklenti olmadan diğer eklentileri kurmak pek uzun ve zahmetli olmasa da, kurarken hata yapmak çok kolay. NodeJS için npm neyse, Python için pip neyse, Sublime Text için de Package Control o. Size kolayca eklenti kurma ve kaldırma imkânı veriyor. Hâttâ bu eklenti sayesinde Sublime Text’e kurabildiğiniz eklentiler o kadar çoktur ki, Sublime Text’in son sürümlerinde “Package Control eklentisini kur” komutu hazır geliyor.

AdvancedNewFile, fareye dokunmadan, istediğiniz dizinde kolayca dosya oluşturmaya olanak veriyor. Tek kısayolla, dosyayı oluşturmak istediğiniz yolu yazarak, kolayca yeni dosyalar oluşturabiliyorsunuz. Eklenti ayrıca dosya kopyalama ve taşıma işlerini de kolaylaştırıyor.

Eğer sık sık Apache yapılandırma dosyaları editliyorsanız, ApacheConf.tmLanguage eklentisini mutlaka edinmelisiniz. Bu eklentiyle Apache yapılandırma dosyalarınız renkleniyor.

Benim gibi, neredeyse her projede Bootstrap kullanıyorsanız, Bootstrap’de çok kullanılan yapıları hızlıca oluşturabilmek çok işinize yarayacaktır. Bootstrap 3 Snippets eklentisi bunu sağlıyor. bs3-modal yazarak kolayca diyalog kutusu oluşturabiliyorsunuz örneğin.

Sublime Text, standart uygulamasında, sadece içinde bulunduğunuz parantezlerin altını çiziyor. Eğer daha dış parantezlerin ve tırnakların da altları çizilsin istiyorsanız, aradığınız eklenti BracketHighlighter. Böylece istediğiniz parantezin veya tırnağın altını istediğiniz şekilde çizdirebiliyorsunuz.

Sublime Text metinlere büyük harf, küçük harf gibi değişimler uygulamanıza olanak veriyor ama programcıya asıl lazım olan dönüşümler alt_çizgili, PascalStili ve camelCase arasında geçiş yapabilmek. Bu işler için Case Conversion eklentisini kullanabilirsiniz.

Tek ve çift tırnaklar arasında geçiş yapmak için ChangeQuotes eklentisi mükemmel. Tek tuşa bunu yapabiliyorsunuz. Üstelik eklenti (nispeten) akıllı ve içeride kalan tek ve çift tırnaklara kaçış da uygulayabiliyor. Benzer bir işlem de true/false, 1/0, left/right gibi geçişler. Bunlar için de ToggleWords eklentisini kullanıyorum.

CSS, Less veya Sass dosyalarında renk kodlarının renklendirilmesi için Color Highlighter eklentisini kullanabilirsiniz. Bu eklentiyle örneğin rgb(0,0,0) metninin zemin renginin siyah olmasını sağlayabiliyorsunuz. Ayrıca Less dosyalarında normal metin renklendirmesi için de LESS adında bir eklenti var.

Mac ve Dash kullanıyorsanız (Mac kullanan programcılar için Dash harika bir uygulamadır) DashDoc tam size göre. Üzerinde bulunduğunuz kelimeyi Dash’de aramanızı sağlıyor. Mac değil Windows kullanıcıları için Dash uygulamasının benzeri Zeal ve Velocity uygulamaları vardır. DashDoc bunlarla da çalışabiliyor.

Yazdığınız her fonksiyon için, o fonksiyonun ne yaptığını, aldığı parametreleri ve ne döndürdüğünü açıklamanız gerekir. DocBlockr tam da bu iş için yazılmış bir eklenti. Fonksiyonu yazın, sonra bir üst satıra geçip /** yazın ve sekme tuşuna basın. DocBlockr size fonksiyonu, parametreleri ve çıktıyı yazmanız için metni hemen hazırlıyor.

Emmet olmazsa olmazlardan. HTML yazarken çok işe yarıyor. Yazdığınız kısa metinleri gayet kapsamlı HTMLe dönüştürüyor. Bir sürü editörde karşılığı olan bir eklenti. Detaylarını öğrenmek için buraya buyrun.

Ben sürekli aynı font, tema ve renklerle çalışmayı sevmem. Ara sıra değiştirmem gerekir. FontCycler size bir tuş kombinasyonuyla kendi seçtiğiniz fontlar (ve boyutlar) arasında geçme olanağı veriyor. Envy Code R (serifsiz) ve Operator Mono (serifli) arasında geçiş yapmak için kullanıyorum. Bu iki fontu gönül rahatlığıyla hepinize tavsiye ederim.

jQuery .post, .ajax gibi fonksiyonları sık sık kullanıyorsanız, jQuery eklentisi size bu tür çağrıları çok hızlı yazma imkânı veriyor.

HTML dosyalarının HEAD kısmına neler yazabileceğinizi biliyor musunuz? HTML Head Snippets eklentisini kurup deneyene kadar bu konuda ne kadar çok seçenek olduğunu hiç bilmiyordum.

List stylesheet variables eklentisi, CSS ve komşularında (Less, Sass, Stylus, .. ) yazdığınız değişkenleri topluca görmenize olanak veriyor. Böylece CSS dosyalarında çalışmak oldukça kolaylaşıyor.

Eğer PHP yazıyorsanız ve HTML oluşturmak için Twig şablon motorunu kullanıyorsanız, PHP-Twig eklentisi size hem ilgili tamamlayıcıları hem de .twig dosyalarında renklendirme sağlıyor.

Ben sürekli JSON dosyalarla çalışıyorum. Özellikle projelerimde dışarıdan JSON çekmek gerektiğinde, bu JSON dosyalarını okunaklı hale getirmek de önemli hale geliyor. Pretty JSON, dosyaları ya da seçtiğiniz kısımlarını güzelleştirme (prettify) denen işleme tabi tutuyor, dosya daha okunaklı hale geliyor.

Özellikle CSS yazarken, bazen yazdığım sayıları birkaç sayı aşağı ya da birkaç sayı yukarı değiştirmem gerekiyor. Normalde bunu yapmak için sayıyı editlemek gerekiyor. Ama eğer Inc-Dec-Value eklentisini kurduysanız, bunu sadece alt-aşağı veya alt-yukarı tuşlarıyla yapabilirsiniz. Deneyin, kullanımı çok kolaydır.

Benim kendi renk şemamı oluşturmak gibi bir düşüncem var. Bugüne kadar kullandığım hiçbir renk şeması tam olarak bana istediğimi vermiyor. Ama renk şeması oluşturmak da çok zor iş. Noktalama işaretlerinden ayrılmış kelimelere kadar çok fazla olasılık var. ScopeHunter, üzerinde durduğunuz karakter ya da kelimenin Sublime Text renk şeması dosyasında nasıl ifade edilmesi gerektiğini tek bir kısayolla size veriyor. Sonra da tmTheme Editor uygulamasıyla istediğiniz gibi renk şeması oluşturabilirsiniz. Ha bir de yüzlerce renk şemasının listelendiği ColorSublime sitesi ve eklentisi var.

Windows’da WinSCP, Mac’te Transmit gibi uygulamalar gayet güzel, ama sunucuya dosya yükleyebilmek için başka uygulamalara geçmeyi hiç sevmiyorum. WinSCP ve Transmit yerine Sublime Text’te SFTP eklentisini kullanarak dosyaları bir tuş kısayoluyla sunucuya yükleyebiliyorum, iki taraflı senkronizasyon yapabiliyorum. Eklenti ücretlidir, ama verdiğiniz paraya değer. Package Control eklentisini yazan adamın eklentisidir.

Solarized renk şemaları, aynı renkler kullanılarak hem koyu renk zemin, hem açık renk zemin oluşturmak için kullanılır. Bir sürü editör için bu renk şemaları vardır ve yazılı olmayan bir tür endüstri standardıdır. Solarized Color Scheme size bu ikisini tek pakette verir.

Program yazarken terminal, veritabanı istemcisi, Git istemcisi ve editör arasında gidip gelmekten nefret ederim. Yukarıda SFTP eklentisinden, aşağıda Terminal ve SublimeGit eklentilerinden bahsettim. Böylece (S)FTP ve Git işlerini Sublime Text içinde yapabiliyorum. SQL işlerini de SQLTools eklentisiyle yapıyorum. Projelerden bağımsız sunucu tanımlıyorsunuz ve tablo yapılarına bakma, sorgu çalıştırma, sorgu kaydetme/geri çağırma gibi işlemleri Sublime Text içinden, çok hızlı bir şekilde yapmak mümkün oluyor. Eklenti MySQL, PostgreSQL, Firebird, Oracle, Sqlite veritabanlarını destekliyor.

Sublime Text çok güzel bir editör ve yazdığınız kodda bazı değişken ve fonksiyonları otomatik tamamlayabiliyor, ama bu konuda yeterince yetenekli değil. Bu noktada SublimeCodeIntel eklentisi devreye giriyor. Çok sayıda dil desteklediği için hepsini buraya yazmayacağım. Normal çalışma düzeninizi bozmadan editörü daha IDEvari yapıyor. Tavsiye ederim.

Başlangıç düzeyini geçen her programcı, bir sürüm takip sistemi kullanmalı. Aksi taktirde yaptığınız değişiklikleri takip edemez, bir hata yaparsanız gerektiğinde geri almak için çok uğraşırsınız. Günümüzde en çok kullanılan sürüm takip sistemi de Git. SublimeGit eklentisi de Git ile yaptığınız tüm işleri Sublime Text’ten çıkmadan yapmanıza olanak veriyor. Komut satırından, çoğu Git arayüzü programdan daha yetenekli, daha pratik. Tavsiye ederim.

Zaman zaman, dosyalar üzerinde terminalde birşeyler yapmak gerekiyor. Terminale geçip dosyanın olduğu dizine gitmek çok uzun iş. Terminal eklentisi tam da burada devreye giriyor. Tek tuş kombinasyonuyla doğrudan açık dosyanın olduğu dizine geçebiliyorsunuz.

Sublime Text editörünüzün kullandığınız Mac ile aynı temada olmasını istiyorsanız, El Capitan tam size göre. Windows kullanıyorsanız da Mac uygulamalarının nasıl göründüğü hakkında bilgi verir.

Oldukça güzel ve okunaklı bir tema da Primer teması. Beraberinde bir de renk şeması geliyor ve ben hem tema hem renk şeması olarak Primer kullanıyorum.

Sublime Text için temalar ilk çıktığından beri en kaliteli ve güzel temalardan biri de Soda teması. Bugün retina ekran destekleyen tüm temalar, dosyalara farklı simgeler atayan tüm temalar hep bu temayı örnek alarak yapıldı.

Gri ve griye çalan mavi tonlarını seviyorsanız, SpaceGray temasını mutlaka deneyin derim. Pişman olmayacaksınız.

Renk şeması olarak Oceanic, Oceanic Next, Dayle Rees eklentilerini tavsiye edebilirim.

Eğer VueJs ile kod yazıyorsanız, Sublime Text öntanımlı olarak VueJS destekli gelmiyor. Bu desteği tamamlamak için Vue Syntax Highlight ve Vuejs Snippets eklentilerine ihtiyacınız var.

Sublime Text ile kod yazma hızınızı hatırı sayılır şekilde artırabilirsiniz. Bu eklentilerle de eksiklerini tamamlayabilirsiniz.

 

Genel kategorisine gönderildi Etiketler: , ,

Dunning-Kruger etkisi ve kendini dev aynasında görmek

Hasan Başusta ve Hakan Akben’in kendini abartan insanlar üzerine olan videosunu izledikten sonra bu konudaki yorumlarımı yazmak istedim. Hakan ve Hasan Dunning-Kruger etkisinden cahil cesareti olarak bahsediyor, ama bence durum biraz farklı.

Cahil cesareti ile Dunning-Kruger etkisi farklı şeyler. Dunning-Kruger etkisi bence cahil cesaretine değil kendini dev aynasında görmeye daha yakın. Cahil cesareti bilgi sahibi olmadığı mevzulara atlamayı ifade ediyor, Dunning-Kruger etkisi ise yeterince bilgi sahibi olmadığı mevzularda kendini olduğundan iyi görmeyi.

Hakan ve Hasan videoyu cep telefonuyla çektiklerinden ve bunun cahil cesareti olduğundan bahsediyor. Oysa cep telefonundan video çekmelerinin ne cahil cesaretiyle, ne de Dunning-Kruger etkisiyle ilgisi yok. Aksine, onlar o telefonla video çekerken biliyorlar ki daha iyisi mümkün. O nedenle de Dunning-Kruger etkisinin dışında kalıyorlar.

Bilgi sahibi olmadığı bir mevzuda işe girmek/girişmek (yani “işi işte öğrenmek”) de Dunning-Kruger etkisinin dışında. Çünkü o işe girerken/girişirken o konuda/işte bilgi sahibi değilsin, işi işte öğreneceksin.

İş dünyasında ise Dunning-Kruger etkisi, ağzı iyi laf yapma, ve iş tecrübesi birleşince ilginç şeyler oluyor. Açıklayayım:

Kendini dev aynasında gören insan her işe atlıyor, görmeyen ise “ben bu işi hakkıyla yapmak için yeterince iyi değilim” diye düşünerek seçici davranıyor. O nedenle kendini dev aynasında gören insan “girişken”, diğeri “pısırık” (daha yumuşak bir kelime bulamadım) görünüyor. Kendini abartan insan “ben bu işin her türlü altından kalkarım” derken, abartmayan “elimden geleni yaparım” diyor, bunları dinleyerek karar veren de kendini abartanı tercih ediyor.

Ağzı iyi laf yapan insanlar “sadece işini yapan” insanlardan daha popüler oluyor. Çünkü o insan herkesle muhabbet ediyor, diğeri ise vaktini muhabbete değil işe ayırıyor.

İş tecrübesi düşük olan da yüksek olandan daha çok çalışmak zorunda kalıyor. Aynı miktarda işi yapmak için tecrübesiz olan örneğin 2 saat çalışıyor, ama tecrübeli olan yarım saat. Yöneticiler (genel olarak) çalışanları tecrübelerine göre değerlendirmek ve yönetmek konusunda çok beceriksiz olduğu için de iş tecrübesi düşük olan daha çok çalışıyormuş gibi görünüyor.

İşin ilginç yanı, bu üç kümenin kesişme alanının çok büyük olması. O nedenle çoğu tecrübeli insan yükselemiyor, çoğu tecrübesiz insan ise tecrübeli insanların başına müdür vb oluyor. İçgüdüsel olarak da kendisi gibi olanları kendine daha yakın görüyor, al sana kısır döngü.

Genel kategorisine gönderildi Etiketler: , ,

Yazılımcı nasıl olmalıdır?

  1. Sektörüyle ilgili çoğu konuda fikir sahibi olabilecek kadar bilgi sahibi olmalıdır. Herşeyi PHP ve MySQL ile halletmeye kalkmamalıdır. Nerede (örn.) Redis kullanması gerektiğini bilmelidir.
  2. Yazılımın gelecek dönem ihtiyaçlarını önceden düşünmelidir. Çünkü yazılımı yaptıran kişi onları düşünecek kadar donanımlı olmadığı gibi, son gün bütün yapıyı değiştirmesini gerektirecek kadar fikir değiştirmeye müsaittir. Proje sahibine veya işveren çoklu dil desteğine ihtiyaç var mı diye sorduğunuzda hayır cevabı alırsınız ama projenin son testleri yapılırken “İngilizce de olsun” deyiverir.
  3. Sabırlı olmalıdır. İnsanlar ihtiyaçları olmayan şeyler isterler. Bunlara sabırla o istedikleri şeylere ihtiyacı olmadığını anlatmalıdır.
  4. Sabırlı olmalıdır. İnsanlar her gün karar değiştirirler. Bunu kaldırabilmelidir.
  5. Biraz öğretmen ruhlu olmalıdır. Proje sahiplerini doğru noktalara, doğru yönlendirmelidir.
  6. Teknik hiçbir bilgisi olmayan insanları anlayabilmelidir. Çoğu zaman insanlar isterler ama istediklerini anlatamazlar.
Genel kategorisine gönderildi Etiketler:

Kendi vikimi açıyorum

Uzun süredir bloguma ya da değil bir sürü yazı yazdım, tecrübelerimi çeşitli ortamlarda paylaştım. Ama bunlar hep cümleler (Twitter) ya da yazılar (blog) şeklinde oldu.

Oysa insan aklı birbirinden bağımsız yazılardan oluşmuyor. Aksine, birbirleriyle çeşitli şekillerde bağlı parçalardan oluşuyor. Aynı web sayfaları gibi. Her fikir, her tecrübe, her bilgi, başka fikirlere, tecrübelere ve fikirlere bağlı.

Blog yazmanın bir de şöyle bir zorluğu var. Herhangi bir konudaki bütün fikirlerinizi oturup bir kerede yazmanız çok zor. Eğer herşeyi bir kerede yazmaya karar verirseniz bir blog yazısının hazırlanması en azından saatler sürüyor.

Bu iki durum kafamda netleştiğinden beri paylaşmanın en doğru şeklinin blog yazıları değil viki sayfaları olduğuna karar verdim. O yüzden artık http://www.begiter.net/viki adresinde topluyorum yazılarımı. Bloga da yazacağım ama bloga yazdıklarımı da vikide toplayacağım.

Böylece zihnimin bir kısmını yazıya da dökmüş olacağım. Vikime beklerim.

Genel kategorisine gönderildi

İşlerimi nasıl organize edeceğim?

Yaptığınız iş ne olursa olsun, masabaşı çalışanların her an yapmaları gereken bir sürü işleri vardır. Bazen irili ufaklı o kadar çok iş olur ki, listeye bakmak bile stres yaratır. Bir kısmını yaparsınız, siz iki tane yaparken listeye üç tane daha eklenir. Özellikle yazılımcı olarak bu hissi çok iyi biliyorum 🙂

Peki bu kadar çok işin altından nasıl kalkacağız? Zamanımızı nasıl değerlendireceğiz? Bu işleri nasıl organize edeceğiz, hangi sırayla yapacağız?

Ben kendi düzenimi anlatayım. Anlatırken kendime de bir nevi kılavuz hazırlamış oluyorum. Tabii zaman ve iş (iş parçaları) yönetimi üzerine dolu dolu kitaplar var, ben hepsini okumadım, ama yıllardır organize olmaya çalışa çalışa insan birşey öğreniyor.

  1. Aşağıda anlattığım düzeni kurmama olanak veren bir yazılım yok, o yüzden şimdilik kağıt kalemle devam ediyorum. Ama bu düzenek için bir yazılım hazırlıkları içerisindeyim. Bitirince buradan duyuracağım.
  2. İşlere çok boyutlu olarak bakabilmek gerekiyor. Bir iş önemli olabilir ama ondan daha acil bir iş varsa acil olana öncelik vermek gerekecektir.
  3. Sadece bu da yetmiyor. O anki zihinsel ve fiziksel durumunuzu da dikkate almanız gerekiyor. Eğer kendinizi yorgun hissediyorsanız önemli bir iş yapmamak en iyisi.
  4. Benim anahtar sıralamam aciliyet, önem, bağlı iş sayısı, büyüklük (boyut da diyebilirsiniz), ve son olarak süre şeklinde. İşlerimi düzenlerken her işin aciliyetini, önemini, büyüklüğünü ve süresini belirliyor, ona bağlı kaç iş olduğunu çıkarıyorum. Sonra işlerimi bu başlıklara göre sıralıyorum.
  5. Genel planda her işimi bu başlıklarıyla birlikte yazıyorum. Her hafta başında hazırladığım haftalık planda o hafta yapılacak işleri belirliyorum. Haftalık planda önemli ve öncelikli işleri vurguluyorum, böylece o haftanın olmazsa olmazlarını belirlemiş oluyorum.
  6. Her gün, güne başlamadan önce haftalık plandan o gün yapacaklarımı ayıklayıp onları öncelik ve önem gibi detaylarını yazmadan ayrı bir listeye kopyalıyorum. Ayıklarken her işin aciliyetine ve önemine baktığım gibi, bağlı kaç işleri olduğuna da bakıyorum ve bağlı işleri de alıyorum. Böylece elimde o gün temizlemem gereken bir liste oluyor.
  7. Her gün kendime temizlemem gereken bir liste oluşturarak bir ilerleme ve başarı hissi de oluşturmuş oluyorum. Eğer bu hissi elde edemezsem genel plandaki iş listesi hiç bitmeyecekmiş gibime geliyor ve bende stres yaratıyor.
  8. Bazıları bu birşeyler başarmış olma hissinin gerçek bir başarı olmadığını, sahte olduğunu söyler. Oysa kendinizi organize edip temizleyecek bir iş listesi oluşturmazsanız bu sefer de hiçbirşey başaramıyor olma hissiyle karşı karşıya kalırsınız ve bütün gün çalışırsınız ama raporlayacak birşeyiniz olmaz. Çünkü gelen her topu geri gönderiyorsunuzdur, ama hiç golünüz yoktur.
  9. Eğer zihnen ve bedenen iyi durumdaysam acil, önemli, büyük ve uzun işleri önce yapıyorum. Ama zihnen ve bedenen yoğunlaşmaya hazır değilsem daha az önemli, küçük ve kısa işleri önce hallediyorum. O işleri temizlerken de zihnen hazır hale geliyorum, böylece listenin sonundan değil başından devam ediyorum.
  10. Doğal olarak acil işler acil olmayan işlerden önce geliyor. Çok acil işler (hemen işleri) en tepeye yerleşiyor.
  11. Benzer şekilde en önemli işler en tepeye, önemli işler bir alta, çok önemli olmayan işler daha alta, önemsiz işler en alta.
  12. Ona bağlı iş sayısı konusuna gelince. Bazen bir işin yapılabilmesi için önce başka bir işin bitmesi gerekir. Örneğin bir müşterinize bir fiyat listesini gönderebilmeniz için önce o fiyat listesinin size gelmesi gerek. Bunun için biriyden o listeyi istemeniz gerekiyordur. Bu bir zincir. Bu örnekte Cengiz’le görüşme işine bağlı iş sayısı iki. Aciliyet ve önemden sonra benim için bağlı iş sayısı geliyor. Bir işe bağlı ne kadar çok iş varsa o iş o kadar yukarı çıkıyor. Örneğimizde Cengiz’le görüşme işi müşteriye fiyat listesini göndermekten daha üst sırada çünkü ona bağlı daha fazla iş var.
  13. Ardından büyüklük geliyor. Burada iki yaklaşım mümkün. Bu başlığı büyüklük olarak alırsanız, daha büyük işleri daha üste koymak gerekir. Eğer küçüklük olarak alırsanız, daha küçük işleri daha üste koymak gerekir. Bu ikisinden hangisini uygulamak gerektiğini uzun uzadıya tartışabiliriz ama pek bir anlamı olmayacaktır, çünkü bu tamamen kişisel bir tercih. Yani şu doğrudur demek mümkün değil. Tabii bir de üçüncü seçeneğiniz var, bir büyük bir küçük ya da benzeri bir mantıkla sıralamak. Her üçünün de iyi ve kötü yanları var.
  14. Daha büyük işler daha fazla zihinsel faaliyet gerektirir ama bitirdiğinizde üstünüzden büyük bir yük kalkmış olur. Daha küçük işleri kısa sürede bitirip temizlemek daha kolaydır ama küçük işler azaldıkça geriye daha stresli ve büyük işler kalır. Bir büyük bir küçük iş alınca da zihnen dinç olduğunuz bir zaman dilimini küçük bir işe harcama ya da zihnen yorgun olduğunuz bir zaman dilimini büyük bir işi kotarmaya çalışarak harcama gibi bir risk söz konusu. Buna ben direkt zihnen o an nasıl olduğuma bakarak karar veriyorum.
  15. Gelelim süre meselesine. Yapacağınız işler için tahmini süreler belirlemeniz gerekiyor. Benim dilimlerim 5dk – 15dk – 30dk – 45dk – 1s – 2s – 3s – 4s – 6s – 8s şeklinde. Böylece hem işlerin büyüklükleri netleşmiş oluyor, hem de hangi işin ne kadar süreceğine göre onları aşağı yukarı oynatabiliyorum. Zihinsel duruma ve zaman müsaitliğime göre işleri düzenliyorum. Yemeğe yarım saat varken bir saat sürecek bir işe başlamıyorum, çünkü o işi böldüğümde iş bir saatten fazla sürüyor. İlgili programları, sayfaları açmak vb, bunlar size farkettirmeden zamanınızdan yiyen şeyler.
  16. Bir de Pomodoro tekniği var. Duymadıysanız (ya da adından başka birşey bilmiyorsanız), özü şudur: 25 dakikanızı yoğun şekilde tek bir işe harcayın. Ondan sonra 5 dakika dinlenin. Bu süreleri uzatıp kısaltmak mümkün ama özünde aralara dinlenme serpiştirilmiş yoğun çalışma dilimleri var. Ben pomodoro kullanmıyorum (kullanamıyorum) çünkü iş hayatında günde 50 kere bölünüyorum, o yüzden takip edemeyeceğim bir çalışma biçimine uyum sağlamaya çalışmadım hiç. Eğer siz o 25er dakikalık dilimleri telefon, Facebook, müdür, sık sık girip baktığınız mobil oyun vb tarafından bölünmeden ayırabiliyorsanız, Pomodoro’ya bir şans verin derim. Yalnız şuna dikkat edin, Pomodoro 25 dakika çalışıp 5 dakika dinlenmekten ibaret değildir. O 25 dakika boyunca hangi işle uğraşacağınızı önceden belirlemeniz gerekir.

Son olarak şunu da belirtmek lazım. Bir mesai günü 8 saat değildir. Bu cümle hem patronlar hem de çalışanlar için çok önemli.

Gününüzü planlarken 8 saat olarak planlamayın, 6 saat olarak planlayın. Aralara dinlenme zamanları koymanız gerekir. Zaten arta kalan zaman bir şekilde uçup gidecek.

Bilin ki çalışanlarınızın hiçbiri günde 8 saat çalışmıyor. Zihnen ve bedenen mümkün değil. Mutlaka dinlenmeleri gerekir. Arada iş arkadaşlarıyla sohbet etmeleri, kendi sağlıkları için ara sıra kalkıp egzersizler yapmaları gerekir. Siz onları 5 saat çalışıyormuş gibi hesaplayın. Zaten daha fazla çalışırlarsa bir süre sonra pilleri zayıflar, sonunda da biter. Motoru yakmak veya tükenmişlik sendromu olarak bilinen durum yaşanır.

Genel kategorisine gönderildi Etiketler: , ,

Web projesi yöneticilerine tavsiyelerim

Bugüne kadar yüzlerce web projesi yönetmedim. Beş tanesini yönettiysem, 30 tanesinde yönetildim. Zaman içinde web projelerinde ne gibi yanlışlar yapıldığını öğrendim. Bunlardan yola çıkarak neler yapılmasının iyi olacağını yazdım.

Yazdıklarım sadece proje yönetimiyle ya da web projeleriyle ilgili değil. İnsan ilişkilerinden de bahsediyorum. Yazılımcı ve tasarımcılara nasıl davranmanız gerektiğinden de.

  • Daha önce web projeleri yönetmediysen teknik bir yönetici / karar mercii / ekip abisi olacak birine ihtiyacın var. Hakkında kapsamlı bilgi sahibi olmadığın bir konuda ekip arkadaşlarının söylediklerinin doğruluğundan emin olamazsın. Javascript bilmiyorsan yazılımcın Javascript’le bu olmaz dediğinde hareket alanın kısıtlanır. Bilen, dürüst birini teknik yönetici / karar noktası / ekip abisi yaparsan bu konuda aklında şüphe kalmaz.
  • Ama onun söylediklerini dinlemeyeceksen öyle birini işe alıp onun vaktini çalma. Tecrübesine ve sözüne güveneceğin biriyle anlaş. Teknik bilgisi benden çok çok düşük bir üstüm vardı ve teknik konularda ben onu ikna etmeye çalışarak zaman kaybediyordum. Oysa benim sözüme güvenip ona göre hareket etmesi gerekirdi. Teknik yöneticine bu neden böyle diye sorma demiyorum. Sor, ama ona da güven.
  • Ekibine paranın alabileceği en iyi bilgisayarları al (Macbook Pro Retinalar, iMac Retina’lar). Gerekli yazılıma ve servislere para harcamaktan çekinme. Yazılımcıya hakkını vermek iyi maaştan ibaret birşey değil. Bilgisayarını da ona göre vermen gerekir. 30un üstüne çıkamayan bir arabayla taksicilik yapılmaz.
  • Ekibin başında duracak teknik lider sunucu yönetiminden de anlarsa çok iyi olur. Masrafları azaltmış olursun. Ya da profesyonel birinden dışarıdan destek alın. Eğer çok fazla (misal 20 tane) sunucun yoksa tam zamanlı sistem yöneticisi almaya gerek yok bence.
  • Teknoloji tercihleriniz ne olursa olsun paylaşımlı barındırma hizmeti ve yurtiçinden VPS alma. Hüsran yaşarsın.
  • Bir web uygulaması projesi için programlama dili tercihi, veri depolama tercihleri, sunucu tercihleri gibi tercihler önem arzeder. Bu konularda tecrübeli birini bulmalısın. Webe uygulama yazıyorsan (örn. bir sosyal paylaşım sitesi) tercihlerini doğru yapmadığında sonradan düzeltmek çok zordur.
  • Mutlaka bir sürüm yönetim sistemi kullanın. Yazılımcılarınızı bu konuda eğitin.
  • Kod yazmaya ya test ya davranış yazarak başlayın. Plansız iş beladır. Direkt koda girişmeyin. Herkes test ya da davranış yazabilirse ne ala ama Türkiye şartlarında çok zor. Ekipte bu konularda bilgili biri mutlaka olmalı. Ekip abisi dediğim olay. Ekip dışından da danışman şeklinde olabilir ama bunu her ekip kaldıramaz.
  • Yazılan kodları gözden geçiren biri mutlaka olsun. Teknik yönetici olması şart değil, ama ekip içinde konulan yazım kurallarını da kontrol edebilecek, yazılım geliştirme iç politikalarını uygulayacak biri olmalı.
  • Kod yazım kurallarınız önceden belli olsun. Kod yazım kuralları derken neyi kastediyorum? Düz yazı yazarken cümle sonlarına nokta konur mesela. O noktalar okuduğunu daha kolay anlamanı sağlar. Girinti ne olacak? Sekme mi, iki boşluk mu, dört boşluk mu? Yoksa 3 boşluk mu? Süslü parantezler nereden açılacak, nerede kapatılacak?
  • Yazılım ekibi sadece bir kişi olsa bile sürüm yönetim sistemleri, test ya da davranış yazımı gibi konularda tecrübeli olması iyidir. Vakti varsa test ya da davranış yazarak başlamalıdır.
  • Tam zamanlı tasarımcıya çoğu zaman ihtiyaç yoktur. HTML/CSS yazmak için bir personele ihtiyaç vardır, veya tüm teknik proje tek kişiye emanetse HTML/ CSS/ JS bilgi ve becerisi iyi olmalıdır.
  • Çalışma saatleri şirkete doğru esnemesin. Esneyecekse de yazılımcıya doğru esnesin. Şirkete doğru karşılıksız esnemesi hak yemekten başka birşey değildir. Programcının psikolojisine etkisi de cabası.
  • Kod yazma işi daha çok mesai harcayınca daha çok iş bitirilen türden bir iş değildir. Aksine, çalışma süresi uzadıkça verim düşer. Yazılımcı ne kadar dinlenirse o kadar canlı ve verimli olur.
  • Yazılımcılardan alacağınız bitirme zamanlarının (termin diyenler de var) neredeyse hiçbir zaman tutmayacağını bilin. Sadece yıllardır kod yazan ve projeye hakim olan bir geliştirici süreyi doğru tahmin edebilir. O da bazen.
  • Yazılımcılardan aldığınız süreleri yazılımcılara karşı baskı malzemesi olarak kullanmayın. Aslında bu yazılımcılara değil tüm çalışanlara karşı geçerlidir.
  • Tasarımcınıza hem şirketinizin kurumsal kimliği, hem de gerekli durumda her proje için; beklentilerinizi, belirli tercihleriniz varsa font, yazı boyutu, ferahlık gibi tercihlerinizi önceden belirtin.
  • Tasarımcıların tasarımlarını beğenmemek ve değişiklik yapmalarını istemek tasarımcılara saygısızlıktır. Hele hele renk gibi küçük şeylere takılıyorsanız. Eğer tasarımcıya ne istediğinizi önceden adamakıllı anlatmadıysanız istediğiniz gibi olmadığı için onlara kızmaya hakkınız yok.
  • Tasarımcınıza da, yazılımcınıza da güvenmelisiniz. Güvenmediğiniz bir personelle çalışamazsınız, çalışmayın. Ya da personelinize güvenin. Güveninizi kötüye kullananlara karşı gözünüz açık olsun yeter.
  • Görsel tasarım ile CSS çok farklı şeylerdir. Bir personelden ikisini de beklemek haksızlıktır. İkisini de yapabiliyorsa (hem güzel ve kullanışlı görsel tasarımlar çıkarıyor hem de bunun HTML/CSS’ini yazabiliyorsa) bu güzel birşey ama normalde bu iki iş iki farklı kişi(lik) gerektirir.
  • Muhabbeti iyi, dışadönük (İngilizce extrovert derler) personelle muhabbetinizin iyi olması çok normaldir, ama özellikle yazılımcılarda çoğu dışadönüklere garip gelen içedönük (introvert) kişiler olacaktır. İki tarafla da iyi anlaşmalısınız. Biriyle muhabbetiniz fazla iyi olursa o artık sizin çalışanınız değildir. Hiç muhabbet etmediğiniz biri de kendini dışarıda bırakılmış hissedebilir.
  • İnsanlar web projeleri planlarken yüzlerce özellik eklerler, oysa bir web projesinin hayata başlaması için sadece 3 özelliği olmalıdır. Her döngüde sadece 3 özellik ekleyerek ilerlemelisiniz. Projenin yönetilebilir olması için bu şarttır.
  • Projenizle ilgili herşeyi belgelendirmelisiniz. İmzalanan anlaşmalar, ödenen faturalardan bahsetmiyorum. Projenin ana fikrinden, çözdüğü sorundan, hedef kitlesinden, özelliklerinden bahsediyorum. Bunların hepsini yazmalısınız. Personelin sorumluluklarından, geliştirme sürecinde izlenmesi gereken adımlardan, hangi teknolojinin neden tercih edildiğinden bahsediyorum. Projeye sonradan katılan herkesin sorabileceği soruları önceden cevaplarsanız, projenin geleceğini önceden görme şansınızı da artırmış olursunuz. Ben her proje için içeriği dışarıya açık olmayan bir wiki kullanıyorum.
Genel kategorisine gönderildi Etiketler: , ,

Mobilde altalanadı kullanmak

Önce ne kastettiğimi açıklayayım.

Kullanıcılar bir sayfayı ziyaret ettiklerinde, mobil bir cihazdan bağlandılarsa farklı, bir bilgisayardan bağlandılarsa farklı sayfalar görürler / görmeliler.

Bilgisayar ekranlarının büyüklüğü ve internet bağlantı hızları düşünüldüğünde, sitenize bilgisayardan giren bir kişiye birkaç megabayt içerik yükleyip göstermek, ekranı bir sürü şeyle doldurmak sorun değildir; ama 3G ile bağlanan, hele de küçücük bir ekranı olan kullanıcıya az ve öz içerik göstermeniz gerekir. Masaüstü sayfaya 10 tane reklam koyabilirsiniz ama mobilde 2 reklam bile fazla gelebilir.

O nedenle çoğu site mobil kullanıcıları alt alanadına yönlendirir. necmettinblog.com yerine m.necmettinblog.com gibi. Tabii m olmak zorunda değil, mobile da olabilir, başka birşey de. O site sahibine kalmış bir durum. Önemli olan, bağlantıları de aynı şekilde düzenleyip, m. diye başlayan adresten girdiğinizde içerideki bağlantılar da m. diye başlatır ve mobil sayfalarda devam etmenizi sağlar.

Daha çok haber ve içerik siteleri tarafından kullanılan bu yaklaşımın avantajları olduğu gibi dezavantajları da var.

Avantajı, kullanıcı mobilde yaşadığı tecrübeye devam eder. Siteyi cep telefonundan kullanmaya devam ettiği süre zarfında daha az reklamlı, içerik ağırlıklı, cep telefonu ekranından okuyabileceği sayfalarla karşılaşır, site onun için daha kullanışlı olur.

Dezavantajı ise kullanıcıyı mobil tecrübeye bağlaması. Aynı adresi bilgisayarınızdan açtığınızda sizi yine mobil site karşılıyor, içeriğin çekiciliği bir anda kayboluyor.

Örnek bir ekran görüntüsü:

Bu içerik bu haliyle masaüstünde hiç çekici değil. Masaüstü versiyonuna geçmek istiyorum ama onu da nasıl yapacağım belli değil. İkonların bazılarının anlamlarını da çıkaramıyorum.

Yani eğer mobil kullanıcılarınızı ayrı bir alt alanadına veya adrese yönlendiriyorsanız mutlaka belirgin ve anlaşılır bir “masaüstü versiyonu” bağlantısı koymalısınız.

Bana göre iki içeriği de aynı adresten sunman daha kullanışlıdır. Mobilde farklı bir tecrübe sunmak için Twitter Bootstrap gibi çatılardan faydalanabilirsiniz.

 

Genel kategorisine gönderildi Etiketler: , ,

Nöropazarlama mı, alışkanlık mı?

Ali Gökhan Yalçın Bey, ilginç konulara değindiği blogunda bugün derin pazarlamaya değinmiş. Yazısını okurken aklıma gelen minikleri bir araya topladım:

Hiç sevmediğiniz, yeni popüler olmuş bir şarkı düşünün. Radyoda, televizyonda, sağda-solda sürekli bu şarkıya maruz kalacaksınız. Bir hafta sonra bir de bakacaksınız ki şarkıya olan tahammülsüzlüğünüz azalmış. Aradan bir hafta daha geçecek, şarkıyı sevmeye başlayacaksınız.

Telefonda oyun oynuyorsunuz. Günde 20 kere açtığınız o oyun, her seferinde size başka bir oyunun reklamını en az bir kere gösteriyor. Üç gün boyunca aynı oyunun reklamını görüyorsunuz. Başlarda oyununuzu böldüğü için o reklama sinir olurken, sonra bir de bakmışsınız ki o oyunu indirmiş, oynuyorsunuz.

Bazı radyo kanalları normal yayınlarının içinde kendi isimlerini o kadar çok kullanıyorlar ki, her şarkıya en az bir “bilmemne efeem” düşüyor.

İnsanı bir konuda alışkanlık sahibi olmaya zorlayan herşeyi birer nöropazarlama yöntemi olarak görüyorum.

Yazıda Amerika’da yapılan bir çalışmadan bahsetmiş Gökhan Bey. Bu “tad ayırma” çalışmaları genelde Amerika’da yapılıyor sanki. Bu tad ayırma çalışmaları hakkındaki düşüncelerim de şöyle:

Amerikalıların tad ayırma konusundaki çalışmalarına güvenmiyorum. Adamlarda tadları birbirinden ayıracak damak yok. Yan/yapay tatlandırıcılar olmadan yaptıkları yemekler ot gibi, baharat nedir bilmiyorlar. Akçaağaç şurubu olmadan krep (bizde akıtma derler) bile yiyemiyorlar.

Ha bir de tad ayırma konusunda gelişmiş bir damağa sahip olmayan insanların “şunu içmeden kendime gelemiyorum” demesine pek güvenmemek lazım. Aslında öyle diyenlerin hiçbirine güvenmemek lazım ya, neyse.

Genel kategorisine gönderildi

Jargon kelimelerle konuşmanın zararları

Ne yazık ki iş dünyasında çoğu zaman bol jargonlu konuşmak iyi bir şeymiş gibi görünür.

Sanılır ki, bol jargonlu ve yabancı dil kelimelerle konuşunca daha zeki, daha bilgili görülmenizi sağlar.

Eğer konuştuğunuz kişiler sizi ilk kez dinliyorsa, doğrudur. Ama eğer konuşma şeklinizi biliyorlarsa büyük ihtimalle hakkınızdaki fikirleri daha olumsuza doğru gidecektir.

Ama bol jargonlu konuşmanın daha olumsuz bir etkisi daha vardır.

Birini dinlerken beyniniz şu şekilde çalışır:

  1. Tek tek kelimelerin anlamlarını topla ve hafızaya al.
  2. Kelimeler arasındaki ilişkileri inceleyerek ilgili kelimeleri birbiriyle grupla.
  3. Kelimelerin anlamlarına bakarak parçaların anlamlarını oluştur.
  4. Yorumladığın parçaları birleştir.
  5. Anlamı toparla.

Tabii bu verdiğim sıralamanın bilimsel bir yanı yok. Bu benim yorumum.

Normal konuşma sırasında ne zaman biri birşey söylese beynimiz her cümleyi bu aşamalardan geçirip söylenen şeyi anlamlandırıyor.

Ek bilgi olarak duyduğumuz herhangi birşeyi yorumlayıp yanıt vermek için kabul edilebilir sürenin 1 saniye olduğunu ve saydığım aşamaların her birinin 200 milisaniye olduğunu kabul edelim. Gerçekte öyle olup olmadığına takılmayın, öyle olduğunu farzedin.

Asıl mevzuya geçebilmek için bahsetmem gereken son bir detay var. Konuşurken kullanılan kelimelerin genel kullanım frekansları. Bir kelimeyi ne kadar sık kullanıyorsanız (söylemek ve dinlemek dahil) anlamanız da o kadar kolay oluyor. Aynı mantıkla, bir kelimeyi ne kadar seyrek kullanırsanız anlamanız da o kadar zor oluyor.

Şimdi yazının başlığına dönüyorum. Jargonla konuşmanın zararları. Buraya kadar anlattıklarımı takip ettiyseniz bundan sonrası o parçaları birleştirmekten ibaret.

Bu kadar ön hazırlıktan sonra, asıl mevzu birkaç cümlede bitecek. 🙂

Eğer jargon kullanım frekansınız™düşükse, bahsettiğim bir saniyenin büyük bir kısmını ilk aşamada harcıyorsunuz ve beyniniz kabul edilebilir yorumlama süresi™ni aştıysa, cümleyi arkaya atıp yoluna devam ediyor. Diğer bir deyişle, cümleyi anlamıyorsunuz.

Sürekli jargon kullanımına alışkınsanız yorumlama konusunda sıkıntı yaşamıyorsunuz tabii.

Mesela bir programcı için değişken, fonksiyon ve sınıf kelimeleri üzerinde düşünülmesi gereken kavramlar değildir. Bir reklamcı için izlenim (impression) kavramı da öyledir.

Fakat bir programcı için izlenim kavramı üzerinde düşünülmesi gereken birşeydir.

Yani insanlar yabancı oldukları konularda anlamakta ve anlatmakta zorlanacaklarından rahat bölge™lerinden (İngilizce comfort zone) çıkmak zorundadır.

Bütün bu saydıklarımdan şu çıkarımlara ulaşmanızı umdum:

  1. Ne kadar çok jargon kullanırsanız anlaşılmanız o kadar zorlaşır.
  2. Yabancı olduğunuz her kelime söyleneni anlamanızı zorlaştırır.
  3. Herkesin sizi anlaması için jargonlardan uzak durun.
  4. Bol jargon kullananlar dışarıdan bakınca kendini beğenmiş görünür. 🙂
Genel kategorisine gönderildi