Startup Şehri San Francisco

22 May

Her yıl dünya üzerinde gerçekleşen yenilikçi girişimlerin (startups) yaklaşık yüzde 90’ı Amerika’nın San Francisco şehrinde bulunmaktadır. Yani şehir tam bir startup cenneti,  teknoloji girişimcileri için kutsal bir yer diyebiliriz. Her yıl binlerce startup kurucusu yeni bir hayalin peşinde çalışmalarına başlayıp en öne geçebilmek için çalışmaktadır. Bu durum ekosistemi, hayatta kalmak için son derece zor bir hale getirmektedir.

Bu kadar yoğun bir teknoloji girişiminin bulunduğu şirketler şehri, yeni girişimcilere gelecek ile ilgili bazı ipuçları da vermektedir. Şehir hem bir database hem de bir kılavuzdur.

Neden bir database?

Çünkü şehirde hangi şirketlerin bulunduğu, ne gibi işlerle uğraştıkları, hangi teknolojileri kullandıkları hakkında bilgiler mevcuttur.

Neden bir kılavuz?

Şirketlerin kullandıkları teknolojiler incelendiğinde bizlere yeni girişimleri hayata geçirirken, çantamıza neleri koymamız gerektiği hakkında bilgi vermekte ve bize yön göstermektedir. Yani teknoloji dünyasının ne yöne doğru yatkın olduğu görülebilmektedir. Örneğin ağırlıklı olarak hangi programlama dillerinin kullanıldığı incelendiğinde Amerika da çalışmak isteyen bir yazılımcı yatırım yapması gerektiği programlama dilini kolayca belirleyebilir.

Hayat Şartları

Şehre yeni gelen biri için geçinebilme maliyetleri inanılmaz yüksektir. Mesela studio dairelerin kirası $2500 civarıdır. Ofis kiralarını artık sis düşünün. Geçim sıkıntısının yanında şirketinizi, diğer şirketler ile rekabet edecek seviyelerde tutmak gibi zorluklarla da uğraşmak gerekmektedir.

Melek Yatırımcılar

Twitter ve Uber gibi şirketlerin doğum yeri olan şehirde, büyüyen startup’lar melek yatırımcılar tarafından desteklenmektedir. USA’da çalışmış bir kaynaktan duyduğum kadarıyla, belli kesimlerin amacına hizmet etmeyen girişimler, ağzıyla kuş tutsa bile yatırım alamaz ve yok olur gider. Dediğim gibi bu kısım bana da pek yanlış gelmeyen bir yorumdur.

Bu bilgileri San Francisco da yaşayarak değil orayı merak edip araştırırken elde etmiştim. Siz okuyucularla da paylaşmak istedim. Umarım faydalı olmuştur.

Kaynaklar:

  • https://thenextweb.com/podium/2019/08/13/a-san-francisco-startup-guide-for-international-entrepreneurs/
  • https://thenextweb.com/podium/2019/08/13/a-san-francisco-startup-guide-for-international-entrepreneurs/
  • https://fi.co/insight/san-francisco-startup-resource-list-550-accelerators-investors-and-more

Danimarkalı Programcılar

2 Oca

Bir konu hakkında okuduğum bilgilerin temeline inmeyi ve o konunun yazarları hakkında bilgiler edinmeyi alışkanlık haline getirdim. Okuduğum yazı ve makalelerde karşılaştığım programcıların özelliklerini ve çalışma alanlarını incelediğimde karşıma çıkan bazı ortak özellikler farkettim. Bu nedenle, bu yazıda Danimarka kökenli programcılardan ve bu programcıların dikkatimi çeken ortak özelliklerden bahsetmek istedim.

Bjarne Stroustrup
1950 doğumlu olan Bjarne Stroustrup, Columbia Üniversitesi’nde profesördür. New York’ta Morgan Stenley’in genel müdürüdür. C++ programlama dilini tasarlamış ve uygulaya geçirmiştir. C++ ile birlikte Object Oriented Programming felsefesinin temelini atmıştır.

Anders Hejlsberg
1989 yılında Borland firmasında Turbo Pascal ve sonrasında Delphi programlama dillerini geliştirdi. 1996 yılında Borland firmasından ayrılarak Microsoft ile çalışmaya başlamıştır. Microsoft tarafında C# programlama dilini geliştirmektedir.

David Heinemeier Hansson
1979 doğumlu olan Hansson, Ruby on Rails programlama dilinin çatısını oluşturmuştur.

Lars Bak
Javacript ve Sanal makineler üzerinde uzman olan Lar Bak, Google tarafından üretilmiş olan Chrome tarayıcısında da kullanılan olan V8 Javascript motorunu geliştirmiştir.

Rasmus Lerdorf
Rasmus Lerdorf, PHP web programlama dilinin mucidi ve Apache sunucu projesi mühendislerindendir. Danimarka kökenli Kanadalıdır.

Yukarıda bahsedilen programcıların tümünün ortak özelliği, Danimarka kökenli olmaları ve çok önemli programlama dillerini geliştirmiş olmalarıdır.

Programlama dillerinin temelinde Biçimsel diller ve Automata teorisi yatmaktadır. Danimarkalı programcıları bir dil geliştirmeye iten şey nihayetinde bu teorinin iyi benimsenmiş olması olabilir. Bundan daha da önemlisi, İskandinav(Danimarka, İsveç ve Norveç) ülkelerinin dünyaca ünlü gelişmiş bir eğitim sistemine sahip olmaları olabilir.

Blog sayfam 4 yaşında

19 Ağu

Bugün 19 Ağustos 2015. Blog sayfam 4 yaşında. Geride bıraktığımız senelerde birçok yeni konuyu paylaşma fırsatı buldum. Olumlu olumsuz birçok eleştiri aldım. Bir o kadar yeni arkadaş edinme fırsatı buldum. Özelden gelen sorulara elimden geldiğince cevap vermeye ve sizlere yardımcı olmaya çalıştım. Özetle işin hakkını vermeye çalıştım.

Yazsam da yazmasam da zaman her türlü geçiyor. Yazmayı ve paylaşım yapmayı, geçen zamanı boş geçirmemek adına faydalı bir aktivite olarak görüyorum.

Sayfamı oluştururken belli bir yazı hedefi oluşturmadım. Fakat epeyce yazı ve yorum birikimi oldu. Bu bağlamda beni sürekli gelişime iten okuyucularıma da sonsuz teşekkürlerimi sunuyorum.

Önümüzdeki yılda yeni yazılarda buluşmak dileğiyle…

ThoughtWorks ve Martin Fowler İstanbul’daydı

14 Eyl

ThoughtWorks-Martin-Fowler-550Yazılım sektörünün önde gelen isimlerinden biri olan yazılım Martin Fowler, hepsiburada.com şirketinin sponsorluğunda düzenlenen “Contunious Delivery and Design”  isimli etkinlik için 10-11 Eylül tarihlerinde İstanbul’daydı.

Martin Fowler’ın üzerinde çalıştığı kurumsal mimari ve prensipler birçok yazılımcı tarafından kabul görmüş ve standart olarak uygulanır hale gelmiştir. Bu da Fowler’ı sektörde öne çıkarmıştır. Kendisi şu anda ThoughtWorks adlı bir yazılım danışmanlık şirketinde “Chief Scientist” pozisyonunda çalışmaktadır. Yazdığı kitaplar ve verdiği seminerlerde çok önemli konulara değinir. Bu yüzden İstanbul’daki etkinliğe katılmak istedim. Etkinliğe yaptığım ilk başvuruda yer olmadığı şeklinde olumsuz cevap gelmişti ancak 4 gün kala yer açıldı diye bir davetiye aldım ve katıldım.

Etkinlikte ThoughtWorks şirketinin İstanbul ofisinin açılmış olduğu duyuruldu. Aynı zamanda hepsiburada.com şirketi, çevik(Agile) süreçlerin ve sektördeki yenilikçi birçok deneyimin uygulanması için ThoughtWorks ile beraber çalıştığını duyurdu.

Fowler’ın sunumunda genel olarak çevik süreçlerin işleyişi üzerinde duruldu. Günümüzde artık yazılım ürünlerinin girdileri arasında insan iş gücü maliyetinin sadece yazılımı ilk oluştururken değil daha sonraki aşamalarda dönüşüm ve bakımların yapılmasının da dahil olduğu ortaya çıkmaktadır. Dönüşümün rahatça yapılabilmesi ve kaynakların israfını önlemek için çevik prensiplerin uygulanmasının gerekliliği vurgulanmıştır.

Uygulanan prensipler ve yenilikçi bazı teknik çözümlere başlıklar halinde değinilmiştir. Bunlar:

  • Continuous delivery
  • Continuous deployment
  • CAP Teorem
  • NoSQL
  • Microservices

Etkinlikte söz alan diğer konuşmacılar:

  • David Elliman
  • Emre Ekmekçi
  • Cengiz Han
  • İsa Göksu
  • Ben Kappler

Etkinlikte ayak üstü sohbetlerde çeşitli şirketlerin çalışanlarıyla sohbet imkanım oldu. Merak ettiğim bir numaralı konu olan çevik süreçlerin uygulanıp uygulanmadığıydı ve  sordum. Genel olarak aldığım cevap “Türkiş Agile” yapıyoruz  oldu. Yani işin başında prensipleri uygulamaya karar verip işler yetişmediğinde hadi bakalım eski düzene dön şeklinde devam eden bir sürecin uygulandığını öğrendim. Aslında farkındalığın olması bile iyi bir seviye. Bir gün mutlaka taşlar yerine oturacaktır. Martin Fowler’ın da dediği gibi yazılımda tecrübe çalışırken öğrenme şeklinde olur.

Dünyaca ünlü yazılım şirketlerin ülkemize ilgi göstermeye başlamasını şahsen çok önemsiyorum. Yıllar önce kurulan şirketlerin coğrafyamızda bu günlerde yüzünü göstermeye başlaması sanırım bir şeylerin değiştiğinin göstergesidir. Bugün Martin Fowler geldi. Kim bilir yarın Robert Cecil Martin, başka bir gün Kent Beck, Eric Evens, Erich Gamma gelir.

Blog Sayfam 3 Yaşında

19 Ağu

Bugün 19 Ağustos 2014. Bilgisayarımın tozlu arşivlerinde kaybolup gitmesin diye paylaşmayı amaçladığım yazılarımı yayınladığım sayfam www.bayramucuncu.com artık 3 yaşında. Geride bıraktığım üç yılda sayfamı takip eden okuyuculara teşekkürlerimi sunuyorum.

Gün geçtikçe artan ziyaretçi sayısı, yazılarımı her yönüyle iyileştirmeye itiyor beni. Türkçe dil kurallarına uygun, doyurucu, sade ve anlaşılabilir içerik oluşturmaya artık daha çok dikkat etmeye başladım. Her ne kadar dikkat etsem de sürç-i lisan eylediysek affola.

Önümüzdeki yılda yeni yazılarda buluşmak dileğiyle hoşçakalın.

Blog sayfam 2 yaşında

19 Ağu

19.08.2011 tarihinde web dünyasına açtığım blog sayfam artık 2 yaşında. 2 yıl önce kişisel bilgisayarımda metin dosyalarında biriken notlarıma her yerden ulaşabilmek ve onları unuttuğumda hatırlayabilmek için açtığım bir sayfadır blog sayfam. Zamanla gelen olumlu yorumlar bana yazılar yazmanın insanlara da faydalı bir aktivite olduğunu öğretmiş oldu. Bunun mutluluğunu da burada ayrıca paylaşmak istedim. Okuyuculardan gelen bir teşekkür bile içimde yeni yazılar yazma isteği uyandırıyor. İkinci yılı geride bıraktığım bu günlerde tüm okuyucularıma da teşekkürlerimi sunuyorum.

Programcılıkta isimlendirmenin önemi

7 Ağu

Bu blog yazıma konu olarak programcılıkta isimlendirmenin önemini seçtim ancak mesele aslında bir kitap yazdıracak kadar mühimdir. Hatta bu konuyu kitaplarına konu almış programcılar da mevcuttur.

Bilgisayar bilimine yıllarını vermiş kişilerden bu konunun aslında zorlayıcı bile olduğunu duyunca insan bir kez daha durup düşünüyor. Phil Karlton şu sözlerle isimlendirmenin zorluğundan bahsetmiştir: “There are only two hard things in Computer Science: cache invalidation and naming things”. Yani bilgisayar biliminde en zor iki şeyden biri isimlendirmelerdir.

Bilgisayar bilimine programlama branşı açısından baktığımızda mimari tarafında, kodlama sırasında ve veri tabanlarında yapılan isimlendirmeler, bir sistemin anlaşılabilir olması açısından çok önemlidir. Anlaşılabilirliğin sağlanması için programcılar olarak niyetimizi ortaya koyan isimlendirmeler yapmalıyız. Doğru isimler bulmak, iş modeline göre veya sistemin büyüklüğüne göre zorlaşabilir. Yazılım ve mimari genişledikçe verilen isimler birbirine benzemeye başlayabilir. Benzerliklerin artması ise kafa karışıklığına yol açar.

Doğru isimleri bulduğumuzda ise dikkat etmemiz gereken bir diğer husus, okunabilirlik kurallarına uymaktır. Yani yazdığımız isimler okunuş açısından gözü rahatsız etmemeli ve kısaltmalardan arındırılmış olmalıdır.

Oluşturulan sistemin her elemanına verilen isim özenle seçilmelidir. Sistemin elemanı bir mimari katman olabileceği gibi bir sınıfa ait bir üye de olabilir, bir veritabanı tablosu da olabilir.

Kendi tecrübelerim adına söyleyeyim, kodlama sırasında sınıflara veya sınıf üyelerine verdiğim isimler kafamda oturuncaya kadar onları birçok kez yazıp değiştirdiğim olur. İsmiyle özdeşleşmeyen nesnelere kafayı takarım desem hiç yanlış olmaz. Bu alışkanlığa nereden kapıldığımı da söyleyeyim, ta ki programlamada isimlendirme teamüllerini (Naming Conventions) okudum ve uygulamaya başladım, bu alışkanlık o gün bugündür benimle beraberdir. Aslında bu şikayet ettiğim değil sevindiğim bir durumdur. Alışkanlıklarım kodlama ile başladı, proje isimleri ile devam etti, veritabanı tablo isimleri derken dosya isimlerini bile özenle seçer hale geldim.

Programcılıkta isimlendirme meselesine gerçekten dikkat edilmesi gerekir. Çünkü isimlendirme, programcılıkta artık bir standart halini almıştır. İşin üstatları olarak bilinen birçok programcı buna dikkat ediyor. Önder yazılım firmaları ve programcıların oluşturduğu açık kaynak(open source) kodları açıp incelediğimizde bunu rahatlıkla görebiliriz. Amacının dışında bir isimlendirmenin olmadığını hemen fark edebiliriz. Düzenli ve sistemli bir çalışmanın isimlendirmelere de yansıdığını hemen anlayabiliriz. Yani isimlendirme kuralları düzenli, okunabilir ve anlaşılabilir sistemler için bir standart olmuştur.

Eğer standartlara uygun bir Framework, API v.s yazmak istiyorsak dikkat edeceğimiz noktalardan biri isimlendirmelerdir.

İlham kaynağım:
MSND Naming Conventions
Clean Code

Yeni Dizüstü Bilgisayarımı Satın Aldım

21 May

2008 yılından bu yana kahrımı çeken emektar laptopuma veda zamanı geldi çattı. Çünkü onu emekli edip yeni dizüstü bilgisayarımı satın aldım. Emektar makinam Datron marka olup TW7A modelinde ve zamanının 2.4Ghz  hızında en iyi işlemcilerine sahipti. Markasının Datron olması sebebiyle ben ona “Patron” diyordum.

Yeni makinam ise ASUS N56VZ. Son bir kaç haftadır bilgisayar araştırıyordum. Onu mu alsam bunu mu alsam derken en iyisi ben bu ASUS’u alayım diye karar kıldım. Asus için yakıştırmam ise “AL SUS” oldu. Gerçekten bu yakıştırmayı hakeden bir ürün. Şiddetle tavsiye ederim. Ürünü bir mağazanın “portakal rengi” indirim günlerinde inanılmaz bir fiyata yakaldım ve hemen satın aldım.

Emektar ve Yeni İşçi
Emektar ve Yeni İşçi

Özellik Karşılaştırması

Emektar DATRON Yeni ASUS
intel centrino 2.4 Ghz İntel i7 3630QM 2.4 Ghz
250 GB HDD 1 TB HDD
2GB RAM 16 GB RAM
512 MB Ekran kartı 4 GB Ekran Kartı
DVD Yazıcı Blue Ray Yazıcı

Visual Studio 2012 Update Enkazı

28 Mar

Visual studio ürün ailesine dahil edilen 2012 sürümünü çoğumuz kurup çalışmaya başlamışızdır. Bu versiyonda dikkatimi en çok cezbeden nokta Update süreleriydi. Daha Visual Studio ürününü yükler yüklemez bir Update uyarısı verdi. Yeni ürünün yeni güncellemesini yüklemek istedim. Aman Allah’ım! Tam üç saat. Tabi bu internet hızı ile alakalı bir durum mu yoksa bilgisayar donanımı ile alakalı mı diye bir düşünce sardı beni hemen. Derken güncelleme işlemi hayırlısıyla sona erdi.

Visual Studio Update
Visual Studio Update

Aradan bir iki ay geçti, Visual Studio’yu başlattığımda bu sefer de Update1 diye bir uyarı belirdi Windows’un sağ alt köşesinde. Eyvah! dedim içinden. Gene kabus başladı. Tam 2 saatte Update1 için zaman harcadım.

Bu kadar uzun süren Update yapacaklarına yeni versiyon çıkarsalar daha isabetli olurdu bence. Çünkü Visual Studio ürününü sıfırdan yükleme süresi zaten yarım saat. Bu yarım saat üzerine 5 saatlik güncelleme yükü çok can sıkıcı oluyor. Bu kadar can sıkıcı olmasaydı bu yazıyı ele almazdım inanın.

Ürünün önceki sürümlerinde böyle bir durumla karşılaşmamıştık. Umarım buna bir önlem alırlar ve Update 2 çıkmadan ürün yenilenir. Yeni bir güncellemeye ayıracak vaktim yok.

Bir sonraki yazıda görüşmek üzere.

Antipattern Nedir?

2 Mar

Antipattern kavramını yazılım geliştirme sürecinde programcıların günü kurtarmak adına uyguladıkları kötü çözümler olarak adlandırabiliriz.

Antipattern denilen düzensiz işleyişlerin bilgi ve tecrübe eksikliğinden kaynaklandığını söyleyebiliriz. Bilgi ve tecrübe eksikliği yazılım geliştiricide veya takım yöneticisinde olabilir. Sonuçta kötü etkilenen, yazılım süreci olmaktadır.

Yazılım geliştirirken yapılan Antipattern hataları sonucunda biriken problemler, yazılım ilerledikçe çığırından çıkmaya başlar. Yazılıma eklenmesi istenen yeni özellikler ekibin başına dert olmaya başlar. Hatalar artar, sinirler bozulur ve neticede ortaya konulan ürünün müşteriyi yeterince tatmin etmediği anlaşılır. Müşteri isteklerini yerine getirmeyen yazılım ise başarısızdır.

Kodlama sırasında sık karşılaşılan bazı antipattern kavramlarını şu şekilde belirtebiliriz.

  • Analysis Paralysis: Proje analizine harcanan fazla zaman.
  • Overengineering: Bir problemi olduğundan daha zor olarak algılamak.
  • Smoke and Mirrros: Yanıltıcı araçlar kullanmak.
  • God Object: Çok fazla üye içeren nesneler.
  • Golden Hammer: Bir çözümü birçok probleme uygulamaya çalışmak.
  • Hard Coding: Koda gömülen ve değiştirilemeyen değişkenler.
  • Boat Anchor: Kullanılmayan ancak lazım olur diye tanımlanan kodlar.

Daha fazla antipattern için buradan faydalanabilirsiniz.

Bu örneklere baktığımda yazılım geliştirme sürecini bu sıkıntılardan kurtaracak olan can simidinin çevik süreçler olduğunu görüyorum.

Gerçek anlamda uygulanan çevik sürecin hem tasarım aşamasında uygulanan yöntemler hem kodlama aşamasında uygulanan Test Driven Development tekniği hem de yazılıma uygulanan doğru tasarım desenleri ile antipattern denen illetten kurtulmanın mümkün olacağını düşünüyorum.