Murat Uysal

girişimci / matematik mühendisi / yazılım uzmanı / hislerim ve deneyimlerimden yazılar

Database Tasarlarken Tablo İsimlendirme Nasıl Olmalı ?

Merhabalar,

Uzun yıllar kod yaza yaza birçok metot deneye deneye sonunda artık karar kıldığım bir veritabanı tablo isimlendirme yapısına kavuştum. Bu yapıyı uzun zamandır kullanıyorum ve gerçekten veri tabanı tarafından işlerimi kolaylaştıran yönleri olduğunu görüyorum. Bu deneyimimi sizlerle paylaşmak istedim arkadaşlar.


Veri tabanında isimlendirme konusu sandığınızdan çok daha önemli bir konudur. Programlama sırasında size kolaylık sağlaması dışında büyük ekiplerin ortak bir projede çalışırken de adaptasyonu kolay olmalı ve isimlendirmeler manalı olmalıdır.


Metotları açıklamak için örnek Müşteri, Müşteri Türü, Sipariş Türleri ve Siparişler şeklinde 4 tabloya ihtiyaç olduğunu düşünelim. 

En temel konu öncelikle tablonun isimlendirmesi olacaktır. Bu tablolara ne isimler verirdiniz ?

Veritabanı Tablo İsimlendirmesi 

Yaygın kullanılan yöntem 
Customers
CustomerTypes
OrderTypes
Orders 

şeklindedir. Özellikle MS-SQL geliştirme yapan coğu kişi entity framework ve progralama ortamında alışkın olduğu isimlendirme gereği bunu kullanır. Elbette kullanılabilir, ancak benim bu isimlendirmede gördüğüm birkaç sıkıntı var.

Öncelikle bu şekilde isimlendirdiğinizde, bunun entity framework tarafında daha alışılmış durduğunu kabul ediyorum. Ancak buna rağmen kodlama ortamında eğer büyük bir proje geliştiriyorsanız kullandığınız ara yardımcı modeller çok fazla olmaktadır. Örneğin OrderManager gibi veya AccountManager gibi şeyler yazıp bunları kullanıyoruz. 

Kodlama büyüdükçe o kodların arasında zaten business işlerimizin yürüdüğü modeller ile veritabanı modelleri birbiri ile aynı olduğu zaman çok ciddi benzerlik olması bana kalırsa bir sorun. Bunun yerine rahatça bir nesnenin DB objesi olduğunu anlamak büyük bir avantajdır. İşte bu nedenle ben öncelikle isimlendirmede tamamen büyük harf kullanmanın daha pratik olduğuna karar vermiş durumdayım.

1- Tekil İsimlendirme

Mantık olarak baktığınızda birçok müşteri verisini tutan tablonun isminin CUSTOMERS tablosu olması daha anlamlı aslında. Evet bu aslında gerçekten de daha mantıklı ama sorunlara sebep olduğu için iyi bir yol değil. 

Nasıl bir sorun derseniz, FISH tablosunu örneğin FISHES gibi her tabloda ingilizce kuralına göre çoğulunu türetmek biraz zorlayıcı. Bunda ne zorluk var demeyiniz, öyle uzun ve karmaşık sorgular yazarken buna odaklı olmadığınız için FISHES yazmak yerine FISHS şeklinde hatalı tahminleme ile kodlama yapabiliyoruz. Niçin bu zorluğa girelim ki, doğrudan tekil isim kullanma kuralı uygulanırsa bu sorun tamamen ortadan kalkıyor.

2- İngilizce İsimlendirme

Öncelikle pratik olsa idi Türkçe isimlendirme yapmanızı çok isterdim. Bu konuda epey gayret göstermiş birisi olarak yakın zamanda Türkçe isimlendirme ile devam ettiğim bir projemde de yaşadığım sıkıntılar sonucu İngilizce isimlendirmeye geçiş yaptım.

En büyük sorun tabi ki Türkçe karakter sorunu yaşamak oluyor. Dahası yazılım projeleri bugün belki büyük bir projeniz olmasa bile ilerisini kim bilebilir ki. Ekibiniz büyüdüğünde yabancı birçok yazılımcı ortak dili ingilizcedir Dolayısı ile ingilizce olması konusunda artık en küçük bir tereddütüm bile kalmamıştır size de tavsiyem budur.

3- Tamamen Büyük Harf ve '_' ile kelimeleri ayırın

CUSTOMER, CUSTOMERTYPE, ORDERTYPE ve ORDER şeklinde isimlendirmek kesinlikle daha kullanışlı. Bu aslında hak ettiği değeri vermesi adına da güzel bir kullanım. En iyi programı yazabilirsiniz ama veriyi iyi yönetmezseniz o yazılım doğru sonuçlar üretemez.

Yani tamamı büyük harf olması hem diğer nesnelerden öğeyi ayırdığı gibi ne denli önemli olduğu hakkında da bir güç kazandırıyor. 

Ama şimdi de bilmem fark ettiğiniz mi büyük küçük harf ayrımı olmadığı için otomatik olarak 2 kelimeden oluşan tabloların kelimelerini ayırmak zorlaştı! 

İşte bu sorunu da gidermek için kelimeler arasına '_' ekliyoruz. Yani nihai nokta şu şekilde oluyor.

CUSTOMER
CUSTOMER_TYPE
ORDER_TYPE
ORDER  

Bakın ne kadar anlaşılır ve anlamlı hale geldi. Bu yazım şekli aslında özellikle Oracle üzerinde çalıştığımda gelişti aslına bakarsanız. Kesinlikle çok daha kullanışlı.


4- Kelimelerin yalın halini kullanın

Veri tabanlarında birçok kayıt ile ilgili ilişkili başka kayıtlar tutulmaktadır. Bunlardan örneğin müşteri sisteme erişimlerini log tuttuğunuz bir tablo isimlendirecek olalım. Ne yapardınız ? 

CUSTOMERS_ENTERANCE_LOGS, CUSTOMER_ACCESS_LOGS, CUSTOMER_ACCESSES v.s...

Bir sürü seçenek doğuyor aklınızda. Bu metot risklidir çünkü, sürekli benzer bir kurallandırma koyup isimlendirme yapamazsınız.

Yani bir isim tamlaması kuralı belirleyip hepsine aynı şekilde uygulama şansınız olmayacağı için belirsizlik nedenidir.

Bakış açısı şu olmalıdır. Bu tabloda kayıt edilecek şey nedir sorusuna verilen en yalın isimler tablo adı olmalıdır.

Bu örnekte mesela, 'Müşteri Sistem Erişimleri' yani müşteri sisteme her login olduğunda sistem bir kayıt atacak ve bu sayede aslında sistemin güvenliğini sağlamak için bir tablodur bu.

Bu tablonun adı 'CUSTOMER_ACCESS' olması yeterlidir aslında. Bu isimlendirme herşeyi anlatır ancak hala bir sorun vardır.



5- Modül ön ekini kullanın

Bir önceki önerimde belirlediğimiz tabloyu düşünelim. Bu 'CUSTOMER_ACCESS' tablosunun ana amacı nedir ? 

Tabi ki güvenlik amacı ile müşterinin kayıtlarının tutulmasıdır. Böylece bir müşteri yerine başkaları giriş yapmış olma durumu takip edebilmesi sağlanır. Yani ana amacı güvenliktir ve görev yaptığı modül güvenlik ile ilgilidir. 

İşte bu örnekte mesela  'SECURITY_CUSTOMER_ACCESS' isimlendirmesini kullanmak daha akıllıca olacaktır.

Tabloları incelerken veritabanı üzerinde çok daha anlamlı şekilde isimlerine göre modüler bazla sıralandığını görebilirsiniz.

Bir diğer faydası da kodlarken örneğin dbo.SECUR... gibi bir yazım sonrası size programın önerdiği listede bu modüldeki tüm tabloları sunabilme gücüdür. 



Tablo isimlendirmesi konusunda önerilerim bu şekildedir arkasdaşlar.

Bir sonraki yazımda kolon isimlendirmeleri konusu ile karşınızda olana dek kendinize iyi bakın.



Kobo e-book ve sonrasında Agebook farkı

Merhabalar,

Maalesef kobo e-book biraz hassas çıktı. Çok basit bir düşme sonrasında ekranı çok küçük bir çatlak aldı. Çatlak sonrası dokunmatik bozuldu. Ekranın bir kısmında çalışır bir kısmında çalışmaz duruma gelmişti ama çalışan kısım ile kullanabilmeye devam ediyordum.

Sonra giderek dokunmatik tamamen çalışmaz hale geldi. Burdan çıkardığım ders şu,

- Bir e-book alıyorsan, dokunmatik olsa bile mutlaka manuel tuşları da olmalıdır. 

Sonra dedim ki tamir ettireyim, yüksek 699 TL aldığım cihaza 500 TL civarı ekran değişimi istediler. Ondan da vazgeçtim. Sonra sahibinden.com a girdim ve 2. el cihazları araştırdım.

Agebook 6 Plus isminde bir cihaz gördüm. Kriterim en ucuza bu işi halletmek idi. Çünkü boşa giden 700 TL sonrası daha fazla para kaybetmek istememiştim.

Agebook 6 Plus'ı küçük bir pazarlık sonrası anlaşıp aldım. İstanbuldan bir arkadaşım elden aldı ürünü kontrol ederek ve bana kargoladı. Sonunda kavuşmuştum.

Tabi Kobo 700 TL maliyetine rağmen toplamta 2 ay filan kullanabilmiştim. Haliyle bu sefer ekonomik bir ürün seçmiştim ve işin ilginç tarafı buna rağmen diğerinden çok çok fazlasını sunan bir cihaz aldım.


Bu sayfada detayları bulabilirsiniz.

Neler mi iyi

- Cihaz kasası kesinlikle daha sağlam, bunu hissettiriyor.
- SD kart girişi dışarıda olduğu için istediğiniz kadar farklı kartı kullanma şansınız var.
- 32 GB a kadar destekliyor. 
- Dokunmatik ancak kalemi ile yapabiliyorsunuz. 
- Kalem ile kendi el yazınız ile not alıp kayıt edebiliryorsunuz.
- En güzel diğer özelliği, okuduğunuz kitapta kalem ile önemli gördüğünüz yerlere işaretlemeler yapabiliyorsunuz.
- MP3 çalabilirsiniz. Arka fonda güzel bir müzik ile kitap okuma imkanı veriyor.
- Ses kayıt özelliği var. Özellikle bazı yerleri sesli okumak isterseniz kayıt edebiliyorsunuz.
- Dokunmatik bozulsa bile, tüm işlemleri yapabileceğiniz manuel tuşları var.
- İngilizce dökümanları seslendirme özelliği var.

Eksi yönü
- Ekran aydınlatması yok

Tüm bu özellikleri düşününce, tek eksisi aydınlatma oluyor ve inanın o da hiç sorun değil.


İlk e-book modelim kobo idi bu nedenle hepsini bu kadar düz ve özelliksiz sanıyordum.

Ancak şunu anladım, kobo pek sağlam ve iyi bir ürün değilmiş. Fiyatını kesinlikle hak etmedi, hiç memnun kalmadım.

Bir e-book alırsanız neleri öncelikli olarak bakmalısınız?

1- SD kart dışarıdan takılabilir olmalıdır.
2- Manuel yönlendirme tuşları olmalıdır. 
3- Kalem ile not alınabilir olmalıdır. ( bu özellik biraz lüks ama çok iyi bir özellik )

Bu özelliklerin olmadığı bir ürünü almamanızı öneririm.

Agebook ise gerçekten tavsiye ettiğim bir üründür. 2. el temiz olanını bulursanız alabilirsiniz.

Sevgi ve selamlar.

Ted konuşmasında, ted'e gıcık olmak samimiyeti

Merhabalar,

Bugün konum, İlker Canikligil. Kendisini denk gele bir Tedx konuşması sayesinde tanıdım.

Aslında düşünceleri hiç bana uygun birisi değil normalde, peki neden ondan bahsediyoruz bugün? 

Tahmini 2 yıl ve öncesine kadar asla umursamazdım, düşüncelerinin çok büyük hatalarla dolu olduğunu düşünürdüm.

Ama şuan bulunduğum konumda, İlker bey duygularımın tercümanı olur derecesinde bana makul gelmekte :)

Neden mi dersiniz diyeceğim ama, belki de demezsiniz bence :) 

Aslında bu konuda sayın Kadir Köymen'i  bu kadar seven biri olarak onun tam aksini söyleyen İlker bey'in düşüncelerini nasıl beğenmeye başladığıma kendim bile inanamıyorum. Doğrudan kaçamazsınız, doğru doğrudur ve İlker bey'in söyledikleri acı ama doğru :(

Evet o bir kötümser, ve kötümser olmamak gerektiği ile ilgili genel kanıyı yıkmış birisidir artık benim için. 

Bu konuyu detaylandırmayı gereksiz görüyorum, öyle güzel anlatmış ki, size bu videoyu tavsiye ederek yazılımı bitiriyorum.

İlker Canikligil beyi mutlaka takip edin derim :)  Bu dünyanın en iyimser kötümser'i bence kendisi :)

Yeni kitaplarım

Merhabalar herkese

Korona yüzünden uzaktan çalışmak ve evde kalmak aslında benim için hiç de rahatsız olduğum bir konu değil. Rahat rahat projelerimi geliştiriyorum. Rahat rahat da kitaplarımı okuyorum. Ve şimdi size ilginç bazı yeni kitaplarımdan bahsedeyim.

Kitap 1- Su Ürünlerinin Muhabeseleştirilmesi ve Finansal Raporlaması

Evet ilginç demiştim :) ama aslında hiç şaşıracak birşey yok.
Toplamda 2 yıldır bir yazılım altyapısı geliştirmeye devam etmekteyim ve o altyapı ile fishermanager.com dan görebileceğiniz yazılımı gellştiriyorum.

İşte bu kitap benim için iyi bir referans olacak. Çok detaylı ve anlaşılır bir kitap. Hemen okumaya başladım.


Kitap 2: Yapay Zeka ve Opimizasyon Algoritmaları  | Derviş Karaboğa

Bir başka güzel kitabım da bu. Gerçekten öylesine ilginç konulardan bahsediyor ki, hemen alıyıp bitiresim geldi.

Karıncaların bir engel ile karşılaştığında, hedefe gitmeleri ile ilgili algoritmayı kısa bir okuyunca bile etkilendim.

Şiddetle tavsiye ederim.


Kitap 3- Big Data Bilginin Gücü - Halil Aksu

Bunu da öyle aldım, ama güzel olduğunu düşnüyorum :)


Framework derken ?

Her yazılım şirketinde framework lafını çok sık duyarsınız.

Küçük veya büyük her tür sistem bazı hazır kütüphanelere ihtiyaç duyar. Bunları her lazım olduğunda tek tek uyarlamak zorunda kalınırsa, müşterinin ihtiyaçlarına çözüm sunmak zorlaşır. İşte bu sebeple her şirket bir framework geliştirmiştir.

Amaç tabi ki işi kolaylaştırmak olsa da, maalesef pratikte tersi olmaktadır. Çünkü şirketin oluşturduğu framework yeterince akıllı olmadığında, ve talepleri karşılamak zorunda kalan acımasız yazılımcı arkadaşlarımın insiyatıfinde kalırsa :) işte işler çığırından çıkmaya başlamaktadır.

Normalde standart bir düzen sağlaması gerekir iken, framework birçok yazılımcıya göre esner hale getirillmesi tercih edilir. Ve günün sonunda, anlamsız bir kod yığını ile iş çıkarması zor günler geçirir yazılım şirketleri.

Bazı şirketler de kendimiz uğraşmayalım, bunların hazırlarını alıp kulanalım der. Mesela DevExpress, Telerik gibi tool'dan öte tam bir sistem olmayı hedeflemiş yazılımlar vardır. Özellikle Devexpress'in XAF platformunu deneyimlemiştim, gerçekten çok başarılı bence de. Ama bu da iyi bir çözüm mü derseniz, maalesef yine değil yine değil... Bu durumda da gerçekten ilgili platform için kapalı bir kutu alıp kullanmaya başlamış olursunuz ki bu da ayrı bir risktir.

Peki gerçekte bir framework nasıl olmalı ki bu sorunlar yaşanmasın ? İşte bu sorunun yanıtı epey uzun aslında. En kısa hali ile izah etmeye çalışacağım.

Öncelikle framework niçin vardır ? Tek ana sebebi vardır, müşterinin hızlı değişen taleplerine aynı hızda cevap verebilmek için güçlü yazılım geliştirme sağlaması. Daha öte kapsamlı bir tanıma hiç gerek yok. 

Bu soruya doğru cevap verebilmek için önce yazılımlarda neler gelişir ve değişir bunları ele almalıyız.

1- Yazılımlar veritabanı üzerindeki birçok tabloya veri yazarlar ve bunlar arasında süreci işletirler. Her işte olabileceği gibi, müşteri iş süreçleri değiştiğinde, aynı şekilde bu süreç  değişiklikleri bu yazılıma yansıtılabilmelidir.

2- Validasyon yapısı değişebilir. Örneğin bir formda girdiğiniz sipariş no SİP-31233 formatında iken, S-1212 formatına geçebilir. Bu durumda çok hızlı şekilde ve 'TÜM İLGİLİ SAYFALARDA' tek bir noktada değiştirerek bu süreç değişikliği yansıyabilmelidir.

3- Parametrik ayarlamalar ile kurgulanabilmeli, gerektiğinde parametre değiştiği anda tüm sistem yeni parametreye göre çalışabilmelidir. Dil desteği default Türkçe iken, İngilice yapılabileceği gibi, veya bir kullanıcı e-posta doğrulaması olarak üye olurken, bunu iptal edilmek istenmesi gibi... Tek bir paramere ile bu tip şeyler değişebilmeli.

4- Özel yeni formlar hızlıca oluşturulabilmelidir. Müşteri yeni bir özellik kazandırmak isteyeblir ve bu durumda, form validasyon kuralları ile oluşturulmalı ve ilgili tablo ile doğrudan konuşan BUG içermeyen formlar oluşturulabilmelidir.

5- Özgürce kod revizyonu yapılabilmelidir. Framework size kolaylık sağlamalı, istediğiniz zaman framework dışında kalıp sadece faydalı yönlerini kullanıp bağımsız çalışma üretebilmelisiniz.

En ana başlıklar ile bunlar bir framework ü en iyi tanımlayan özelliklerdir diye düşünüyorum.

( devamı gelecek )

User experience catch : 'Are you sure to delete' popup yerine güzel bir metot

Bugün zapier.com da bir işlem yapmakta idim. Hatalı kayıt oluşturdum ve silmem gerekti.

O sırada yaşadığım bir kullanıcı deneyimi nedeniyle sizinle paylaşmak istedim.

Veri Silme Onayı

Önemli verileri sildiğinizde, tüm uygulamalar size emin misiniz diye sorar.

Çünkü işlem önemlidir ve geri alınamayabilir.

Aşağıdaki aramada görüleceği üzere genelde kötü bir popup alert box açılır. 

Ekranın ortasında kafamıza vurur gibidir ve beni pek bir iğreti yapar.

Hepsi bir tarafa, bu iğrenç görünümün bir sebebi de vardır, çünkü dikkat çekmektir amaç :(





Peki bu senaryodaki hata nedir ?


1- Öncelikle bir veri gerçekten silinmemelidir. Windows da olduğu gibi geri dönüşüm kutusuna atılmalıdır. Kalıcı silme işlemi ikinci bir adım olmalıdır.

2- En güzel gösterimi nasıl olur derseniz, zapier.com bunu göstermiştir.

Aşağıdaki gibi trash buton görünüyor listede.


Tıkladıktan sonra diğer bir aşamaya geçiyoruz.

Rahatsız edici popup olmadan harika bir onay mekanizası bence, ya sizce :)

Önerdiğiniz böyle başarılı uygulamalar varsa iletişim formundan paylaşabilirsiniz burada örnekleyelbilirim. 

Göz sağlığı için bir yazılım uzmanı nelere dikkat etmeli

Merhabalar değerli okurlarım,

Evde kalıp karantina halinde beklerken, bir yandan da COVID-19 haberleri dinleyip bunaldığımız bir dönemde farklı bir sağlık konusu ile sizlerin karşısındayım.

Göz sağlığı elbette hangi meslek olursa olsun çok önemlidir. Ancak konu günde 10 saate yakın ekrana bakmak zorunda olduğunuz bir iş olunca iş biraz daha ciddileşiyor. 

Bugün bu yazıda sizlere, göz sağlığınızı korumak için basit ama inanılmaz etkili yöntemlerden bahsedeceğim.

Öncelikle bu konuda hala hiçbir numaralı gözlük kullanmama gerek kalmayan bir yazılımcı olarak, bu konuda hem kendimi şanslı, hem de biraz başarılı buluyorum. İşte sizlere önerdiğim metotlar burada,

Koyu Renk Tema Kullanımı

Son yıllarda moda haline gelmiş olsa da, ben uzun yıllardır herşeyin DARK diye genelde adlandırılan temasını kullanırım. Göz sağlığında en negatif etki, ışık oranından dolayı oluşmakta gözü bu ışık oranı yormaktadır. Örneğin,

1-  Windows temaları içerisinde BLACK Mode isimli temayı kullanmalısınız. Işık oranını azaltmanın en etkili yollarından birisidir.



Bir diğer önemli konu da, windows masaüstü arka planınızı güzel görseller eklemek yerine, sonuçta iş bilgisayarı olarak görüyorsanız, düz renk yapmanızı öneririm.

Aşağıda gördüğünüz gibi, düz renk ve siyah yapmanız büyük fayda sağlayacaktır. 
( Not: Bu aynı zamanda bilgisayarda ram konusunda da küçük bir kazanç sağlayacağı için bilgisayarınızın daha hızlı çalışmasını sağlayacaktır. )



2- Gmail iş dünyasında çok kullanılan bir mail servisi. Bu nedenle onu da aynı şekilde dark tema seçmenizde büyük fayda var.



Mavi Işığa Karşı Gece Modu Özelliği

Gözlere en büyük  zararı veren bir diğer şey ise, mavi ışık oranıdır. Bunu azaltmak için windows da özel bir ışıklandırma modu var 'Gece Işığı' modu. Bunun adı gece ışığı modu olsa da, eğer iş amaçlı uzun saatler bilgisayar ekranı karşısında kalmak zorunda iseniz, mutlaka bu modu kullanmalısınız.

Bu ışığın ayarlanması sayesinde, çok ciddi anlamda mavi ışık oranı düşmektedir.


Crizal Prevencia marka özel gözlük

Benim gözümde bozukluk yok, bu nedenle bir gözlük kullanmıyorum. Ancak yine de özel bir gözlük kullanmamızda fayda olacaktır. Bu gözlüğün özelliği mavi ışığı kıran özel bir mercek olmalıdır.

Bu amaçla henüz yeni satın aldığım bir gözlüğü kullanmaya başlayacağım. Crizal Prevencia marka olması nedeniyle büyük anlamlı bir değişiklik olucak benim için. Bir diğer iyi tarafı da numarasız bu gözlüğü kullanma şansımızın olması. 

Crizal Prevencia isimli marka, dünyada bu alanda en başarılı şirket. Bu nedenle de mercek fiyatları gerçekten diğerlerine göre iki katı fiyatına yakın. Ancak gözler çok değerli ve bu rakamlar yine de ucuz  kaldığını düşünüyorum.

Bİrçok mercek kullanabilirsiniz aynı görev için üretilen, ancak bu markayı özellikle tavsiye ediyorum. İsme özel sertifika ile satılan ve inanılmaz özellikleri olan mükemmel bir ürün. Aşağıdaki videosunu inceleyebilirsiniz.



Bugün biraz daha farklı bir konu ile karşınızda idim.

Sormak istediğiniz bir konu olursa, bana site üzerindeki iletişim formu üzerinden ulaşabiilirsiniz.

Herkse sağlıklı günler dilerim.


Yazılım Mühendisliği : Direksiyonu arka koltuktaki arabaları üretmek

Selamlar,

Epey ara verdim yazı yazmaya :) ama bugün harika bir konu ile karşınızdayım. 

Konumuz, ne zaman ihtiyaç duysak bir türlü düzgün çalışmayan hata veren bizi strese sokan yazılımlar :) Haydi başlıyoruz :)

Bir devlet dairesine gidersiniz. Basit bir işleminiz var yapıp çıkacaksınız. Ama saatlerce sıra beklersiniz. Tam size sıra gelir ve memurun yüzünde sahte bir üzgünlük ifadesi ile "sistem gitti" derler. Bunu ilk defa yaşadığınızda "ee ne yapalım" deyip moralinizi bozmayabilirsiniz. Ama sıranın ilerlemediğini gördüğünüzde anlarsınız ki aslında herşey o sistem. O memurlar hepsi birer aracı, gerçek iş başkadır.

Üstüne birde kendimizce olup bitenlere yorum yaparız. Devlet işi tabi ne olucak düzgün yapmamışlar diye düşünür, hatta belki çoğunun alışkın olduğu üzere tek suçlu hükümetmiş gibi ordan olayı kolayca siyasete de bağlayabilirsiniz :)

Devlet dairesinde bir nebze kabul edebileceğiniz bu durum, bir de bakarsınız ülkenin en iyi bankalarının bir şubesinde işlem yaparken de başınıza gelir. Neyse dersiniz, demek ki ucuza kaçmışlar. Bankanın tek derdi para ondan dolayı kötü yazılım almışlar ve çöküyor çalışmıyor diye düşünürsünüz belki :) Bu durumun tam aksine olmasına rağmen böyle sanarsınız :) 

Sonra bir işe girersiniz, belki muhasebe belki IK uzmanı. Girdiğiniz şirkette muhakkak bir sistem vardır. Ve ne hikmetse IT konusunda uzman bir ekip olmasına gayet de saygın ve işinde uzman insanlar çalışmasına rağmen, o sistem bir türlü düzgün çalışmamaya ısrar eder. Sonra birçok şirket değiştirirsiniz, belki yükselirsiniz yönetici olursunuz. Hiçbirşey değişmez, hatalar bırakmaz yakanızı hata konusunda çok kararlıdır sistemler :)

Hata deyince de, basit hatalar da değildir hani. Raporlar hatalı olur, girilen veriler hatalı kayıt edilir. Bazı mailler hatalı kişilere yollanır. Yanlışlıkla sildiğiniz bir kaydı geri alamazsınız veri kaybolur. En çok olanı da, durduk yere hiçbirşey yapılmayan erkan çalışmıyordur. Hata vermiyorsa da, en azından basit bir işlemi yaparken, ömrünüzden ömür götüren yazılımlar ile çalışırsınız, kabullenir ve öyle çalışmak zorundasınızdır. Nice yazılım mühendisinin kulağını çınlatırsınız :) Tüm akrabaları konuya dahil olmak zorunda kalır bu kulak çınlatmaları nedeniyle :) 

Dışardan sıradan işler yapan insanlar da bakıp sizi bilgisayar kullanıyor görenler de imrenirler, mükemmel bilimsel şeyler yapıyorsunuz sanarlar. Halbuki basit hesap makinesi düzeyinde formlara veri giriyorsunuzdur. Elbette istisnalar kaideyi bozmaz ama acı bir gerçek buna epey yakındır :)

Peki neden oluyor bu yahu ? Bunca yıl mühendislik okuyan insanlar, nasıl bir araya gelip bu kadar saçma hatalar ile dolu bir ürün çıkarabiliyorlar ? Sahi nedir bu işin sebebi diyorsanız, işte size mükemmel bir cevap veriyorum. 

Önce kabul etmeliyiz ki, ben size bunu söylediğimde, bu soru sizin için çok mantıklı görünüyor. Gerçekten düşündürücü bir çelişki gibi duruyor. 

En acı tarafı ise, işin iç yüzünü bilen biri olarak maalesef bu durumun hiç de anormal olmadığını söylemek zorundayım :(

Aksine de bilişim dünyasındaki uzmanlar gerçekten çok yetenekliler ki bu kadarlık sorun çıkıyor diye düşünmekteyim :) 

Öyle olmasa idi bugün olandan çok daha öte sorunlar olurdu emin olabilirsiniz. 

Bunu söylediğimde size mantıklı gelmeyecek elbette. Ama aşağıda vereceğim örneklerden sonra ne demek istediğimi anlayacaksınız.

Bu sorunun temelinde müşteri'nin her istediğinin yapılabileceği veya yapılması gerektiği inancı var diyebilirim.

Bu hata 2 yönlüdür. 

Bazen müşteri çok ukala olup parasını veriyorum böyle istiyorum böyle olmalı diyebilir. 

Bazen de proje analizini yapan kişi müşteriyi kaybetmemek adına kabul etmemesi gereken talepleri kabul edebilir. 

Her durumda da sonuç başarısız bir proje nedeniyle birbirini suçlayan müşteri ve yazılım şirketi sarmalı arasında beynindeki tüm nöronları harcayan fedakar yazılım mühendisi arkadaşlara olan olur :) yani bize :)

Ne demek mi istiyorum, şu esrarengiz araba siparişini bir okuyun :)

Direksiyonu Arka Koltuktaki Araba Siparişi

Mercedes veya Audi gibi bir otomobil devi şirketi düşününün. Araba yapmayı bildiğinden şüphe eder misiniz ? Tabi ki hayır. Ve eğer siz gidip ürettiği bir arabayı satın alırsanız, memnun da kalırsınız sorun yaşamazsınız. Yaşarsanız da firma size bunu telafi eder, çünkü kendi insiyatifidir. 

Aynı şekilde yüksek ihtimalle siz hazır bir yazılım alırsanız daha az sorun yaşarsınız. Bu sebeple de SaaS yazılımı kullanmanızı öneririm. Gönül böyle istese de, maalesef çoğu yerde herkesin başka türlü iş yapması nedeniyle özel yazılım geliştirme bir gereksinimdir. 

Şimdi örneği uyarlayalım. Siz Audi'ye  gidip bir araba siparişi vereceksiniz. Patronsunuz ve o işi yıllarca yaptınız. Mesleğinizde size kimse bişey diyemez özgüveniniz tam ve bir yazılım yapılacak. Bu örnekte bir patron gözüyle mantıklı bir yazılım siparişi hazırlayacağım.

Altını çiziyorum, sorunu çözmek için mantıklı duran müşteri beklentileri başlıyor :)

1- Direksiyon arkada olsun :)

Müşteri : Benim hep şöförüm vardı bugüne kadar. Bu araba ile personel giderlerini azaltmak amaçlı(yazılımlarda yegane hedeftir ) şöför yerine aracı ben kullanabilmeliyim. Ancak ben hep arka koltukta oturduğum için, direksiyonun arka koltukta olması gerekiyor. 

Proje Yöneticisi : Tabi efendim, hatta arkadaki 2 koltuğa da direksiyon koyalım :)
İç ses : Para var huzur var, iste tabi. Dua et ki ay sonu maaşları ödemek için bu işi almamız lazım :)

2- 5000 km yol gidebilecek yakıt taşıma özelliği :)

Müşteri : Yakıt bittiğinde şoförüm yakıt alır ben hiç uğraşmazdım. Böyle bir vaktim olmadığı için aracın en az 1 hafta yakıtı gidebilmeli, Tahmini de 5.000 km yol yapıyorum haftada, bu kadar yolu gidebilecek yakıt alabilmesi lazım. 

Proje Yöneticisi : Tabi efendim, yaparız, hatta yaptık biz bunu bu konuda çok iyiyiz. Ekibimizde bu işte uzman insanlar var.
İç ses : Yuh be, ne üşengeç adam, keyfe bak nasıl yaparız ki, hemen ekibe whatsapp dan yazayım baksınlar yahu çattık be :)

3- Ön kamera desteği 

Müşteri : Koltuk ve direksiyon arkada olacağı için, önü iyi göremeyebilirim bu nedenle aracın önünde gelişmiş bir kamera olmalı. 

Proje Yöneticisi: Tabi ki, Go Pro kameralar ile ilgili birçok uygulama yaptık, apileri üzerinden verileri alabiliriz.
İç ses : Youtuber olucak sanki, gelişmiş kamera istiyormuş, hayret bişey yahu, bu proje bitmez buraya yazıyorum :)

4- Araç içi 120 inç ekran

Müşteri : Şoförüm varken bilgisayarımdan çalışabiliyordum. Yine yapabilmem için yolu iyi görmem gerek bu nedenle kocaman 120 inç ekran istiyorum ki rahat kullanabileyim.

Proje yöneticisi : 140 inç daha iyi olabilir ( o işi almayı kafaya takmış adam :) ) efendim ama 120 de enerji tasarrufu için doğru tercih olur tamamdır notlarıma aldım :)
İç ses: Ben bu adamı boğarım, Elon Musk'ta bu hayal gücü yok saçmalamanın zirvesine ulaştı, bittik biz nasıl yapıcaz biz bu projeyi


Nasıl gidiyor :) harika bir istek listesi dimi. Muhtemelen bir otomobil şirketine bunu sipariş vermeyi deneseniz, nasıl bir tepki alacağınızı tahmin bile edemiyorum :)

Şimdi benim abarttığımı düşünebilirsiniz ve inanın abartmış olmayı en çok ben isterdim. 

Maalesef bize gelen talepler bizim gözümüzden bu kadar absürt bu kadar anlamsız ve buna rağmen itina ile yapmak zorundayız :(

Şimdi örneğimin gerçekte yazılım sektöründe karşılığı nasıl onu ifade edeyim.

Amaç personel giderlerini kısmak, baktığınızda bir şoför'e vereceğiniz maaştan tasarruf edeceksiniz. Bu nedenle nasıl olur da şoför olmadan bu yolculuğu yaparım düşüncesi var. İşte bu genelde yazılım projelerinin ana amacıdır.

Daha az çalışan veya daha verimli bir üretim hedefller ve yukarıdaki istekler baktığınızda gerçekten bu araba siparişini mantıklı kılabilir. Kırılım noktası ise, patronun bir araç yapmanın temel kurallarını yazılım sektörünü bilmediği için bu örnekte uygun düşsün diye bilmediğini varsayıyor olmalıyız.  Şimdi istekleri inceleyelim.

1- Direksiyon arkada olsun :)

Bu genelde, şirketlerin "kendi işini" iyi bildikleri için yazılım ile personel giderlerini azaltmak amacı ile yazılımdan beklenmemesi gereken şeyleri ifade ediyor. Karmaşık ve zor sorunların çözümünde yazılım kullanılmalı ama, bu örnekteki gibi bazen yazılım ile, daha karmaşıklaştırmaktadırlar. Genelde de müşteri parasını veriyorum istediğim olmalı diye düşünür, şirket de işi kaybetmemek için kabul eder.

2- 5000 km yol gidebilecek yakıt taşıma özelliği :)

5.000 km yol gidip hiç benzin istasyonunda durmak istememek :) bunu gerçekten bir arabada başarmanızın yolu elbette var ve bu seçenekler 2 adetle sınırlı. Ya depoyu bagaj ve koltuk kısımları da dahil yakıt deposu yaparsınız, ya da yakıtı kimyasal anlamda arge yaparak o kadar yol yapacak hale getirirsiniz. Daha da zoru, aracın motorunu geliştirmeniz gerekir. Bilin bakalım hangisi seçiliyor :) Tabi ki depo büyütülür. Müşteriye diğer seçeneklerdeki arge için bir fatura çıkaramayacağınız için, tek çözüm depoyu büyütmektir ve bunu yanlış olduğunu bile bile yapmaktayız :)

3- Ön kamera desteği 

İlk istek zaten bir mühendisin kabul edeceği bişey değil. Direksiyon arka koltukta olması :) Hayal bile edemedim. Ne oldu, arkada diye de bu sefer önü görme sorunu çıktı ve yüksek kalite bir kamera gereksinimi oldu. Peki kamera öyle olursa ne olur, maliyet çok fazla artar. Peki bunu düşürmek gerektiği için, şirket neyi seçer, tabi ki kalitesiz kamera :) Kamera iyi olmazsa önü göremeyen şoför tabi ki kaza yapmaz mı, yapar. Sorumlusu kim, tabi ki arabayı yapan şirket :) Şirkete konu gelirse ne olur, o kamerayı hangi mühendis taktı, yani yazılım mühendisi :)

4- Araç içi 120 inç ekran

120 inç ekran isteği :) evet abarttım ama acı ama gerçek sektörde istekler böyle :) O ekranı orta göbeğe koyabilir misiniz. Tabi ki hayır, sığmaz, ne yapmak lazım, tavanı delelim fikri önerilir. Su girer der iyi bir mühendis :) Bir başkası harika bir çözüm bulur, o zaman der, 120 değil de, 60 + 60 yapalım, yanyana sıkıştırıp koyarız belki. Denerler olur, bunu öneren mühendis şanslı ise takdir alır veya bir üstü kendi fikri gibi sunar o terfi alır. Arabaya  2 ekran konur müşteriye teslim edilir. Herkes memnundur :) 

Ama gün gelir patron arabayı kullanmaya başlar, bir bakar ki 2 ekran da aynı görüntüyü gösteriyor . Yani ikisi tek bir ekran gibi davranmaz yolu iyi göremez, kaza yapar. Araç pert olur, kasko da yapım hatası der, karşılamaz. Onca iş de boşa gider. 

Proje yöneticisi ise şaşırmış gibi yapar, sorunu hemen çözmek için çalışmaya başlar, şirkete yeni bir fatura gönderilir :) Tabi o kadar iş yaptılar, sorunu çözdüler dimi :)

Sektörün bitmeyen çilesi...

Sonuç  
Müşteri: 120 ekran istemişti oldu mu oldu :) 
Şirket : 120 ekran istediğini yerine getirdi mi getirdi :) ekran çalışıyor mu çalışıyor :). 

Müşteri de şirket de doğru yapmıştır güya :) 

Ama sorunlardan sonra müşteri isyan eder, şirketten şikayetçi olur. 

Yetenekli Mühendis : şirketin en dahi insanı, 60+60 gibi imkansız bir hayal gücü ile( bu örnekte öyle değil ama, mühendis arkadaşlar bizim işimizde bunu gerçekten yapıyor örnek anlaşılsın diye basit tuttum ) işi çözmesine rağmen, işten atılır :)


İşte bu yüzdendir o yazılımlar çalışmaz, sistem çöker, hatalar verir....

Doğru yazılım mühendisi, müşterisinin arka koltukta direksiyon talebinin neden yapılmaması gerektiğini açıklayandır, onu olduğu gibi kabul eden değildir...

Doğru müşteri, ne istediğini anlatan değil, neyi çözmek istediğini anlatıp, çözüm önerisini işin uzmanına bırakabilendir...

Doğru şirket ise, sırf para kazanacağım diye, böyle saçma bir istekler listesi için bir ürün üreten değil, bunun yerine müşterisine "Tesla" almasını önerendir... 

Nokta :)


Almanca öğrenmek için en iyi uygulamalar ve metotlar

Merhabalar,

İngilizce bilmemenin ayıp olduğu ve hatta giderek ingilizceye ilaveten 1 dil bilmenin de ayıp olacağı döneme doğru ilerliyoruz.

Bunun çok haklı bir gerekçesi de var. Artık dil öğrenmek gün içinde işlerinize devam ederken sağlayabileceğiniz birşey.

Artık elimizde harika uygulamalar ve bildiğiniz gibi Youtube gibi büyük bir kaynak var.

BUSUU

Yapısı itibari ile bir dershaneye kayıt olmuş gibi bir sisteme sahip. Üniteler seviyeler belli ve adım adım ilerliyorsunuz.

Arada bir nevi öğretmeniniz karşınıza çıkıp bilgi veriyor, devam ediyorsunuz ve ilgili konuyu anlamanız için sorular 
çeşitli varyasyonlar ile sorulmaya devam ediyor. Karşınıza çıkan soruları çözdükçe bir bakıyorsunuz bölüm bitmiş.

Her seferinde de harikasın, çok iyi gidiyorsun gibi motive edice mesajlar görmek de harika :)

Bir dershane formatı nedeniyle, işin eğlence yönünden çok disiplinli şekilde bir dili öğrenmeyi sağlayan bir program.

Fiyatına göre yaptığı iş muazzam.

Duolingo

Duolingo tamamen eğlenceyi odak alan bir uygulama. Bu yönü ile çok başarılı buluyorum. Çünkü sıkıcı hiçbir bilgi okumuyorsunuz. 

Bir oyuna girip nasıl oynanır kısmını okuduğunuzu hiç hatırlıyor musunuz ? Bende hatırlamıyorum :) İşte duolingo tam olarak bu.

Play butonuna doğrudan tıkanan oyunlar gibi. Size farkında olmadan dili öğretmeyi başaran bir program. Çok başarılı.

En güzel tarafı ise, aldığınız puanlara göre ligde yükselmeniz. Buna göre daha zorlu rakipler ile yarışmak zorunda kalmanız.



Nasıl kullanmanızı tavsiye ediyorum ?

Ben özellikle her sabah bir dershaneye gider gibi Busuu'yu kullanıyorum. Onunla hangi seviyedeyim ne kadar zaman sonra hangi seviyeye gelebileceğimi görmek bana daha bir motivasyon sağlıyor. Ayrıca kelimeleri iyi bildiklerin, orta seviye ve bilmediklerin şeklinde kategorileştirmesi çok başarılı. Bu yönüyle gerçekten değerli. Her gün en az 30 dk çalışma hedefi belirlerseniz size ne kadar süre sonra hedefinize ulaşacağınızı gösteriyor.

Duolingo ise, gerçekten benim için bir oyun. Amacım yüksek puan almak ve ligimde üst sırada olup üst lige çıkmak ve hava atmak :) Gün içerisinde yorulduğumda ve ara vermek istediğimde, zamanı duolingo ile değerlendiriyorum.

Hem de birçok kategori var. Genelde her seferinde farklı kategoride yarışıyorum. İlk anda kelimeleri hatırlamıyorsunuz. Ancak oynadıkça otomatize hale geliyor. Bir de karşılığında puan alacağınız için daha bir anlamlı oluyor. Yoksa evde oturup kitaptan dil çalışsanız, ne kadar sıkıcı olurdu dimi. Uygulama sayesinde bir amaç için de uğraşmış oluyorsunuz. Ne diyebilirim ki, ben bu uygulamaları yapan insanları çağın Einstein'i olarak görmemiz gerektiğini düşünüyorum. 

Bu uygulamayı yapan kişiler, umarım inançlı insanlardır, epey karlı olacaktır :)

Özetle benim çalışma mekanizmam bu. Bir başka yazımda da diğer uygulamalardan bahsedeceğim. Sevgi ile kalın. 








Berlin'de yaşam

Selamlar,

Uzun bir ara verdim. Çok yazamıyorum çünkü gerçekten hayatımın en entellektüel dönemini geçiriyorum sanırım. 

Günümün özeti şu şekilde, Almanca dil öğrenme ( min. 6 saat ), Haftalık düzenli dil kursları, meetup'lar, 2-3 saat de kitap okuma ( Adam Fewer - Empati ) okuyorum şu anda.  Yani ortalama 11 saat günlük net hiçbir gün ertelemediğim mesaim var. Değerli bir mesai...
 
Haliyle hiçbir şekilde zaman bulamadım ve ancak şuan genel bir özetlemek için bu yazıyı sizinle paylaşmak istedim.

Öncelikle Berlin'i çok sevdim, iklim ise şu ana kadar bana anlatıldığı gibi asla kötü değildi. Hatta kapalı bir hava, ışığı sevmeyen gözlere sahip birisi için çok daha iyi idi. Ve arada sağanak olmayan, kırmadan dökmeden yavaş yavaş yağan yağmur ise bir başka güzel detay. Bence böyle giderse daha ne istenir ki. 

Almanca zor ama ben kafaya taktım bir kere. Kesinlikle öğreneceğim, bu sebeple de yoğun çalışıyorum. Ayrıca Goethe gerçekten iyi bir eğitim veriyor. Yani herşey güzel, yani "Alles Gut" :)

Kitap okuyorum, müzik dinliyorum ve ayrıca tabi ki insanlar ile tanışıyorum. Projelerimi bu kadar dikkatle dinleyen insanları bulacağımdan ümidimi kesmiştim. Ama burada gerçekten açık fikirli parlak insanlarla konuştuğumdan eminim ve şu ana kadar bana çok katkıları oldu. Bu katkı artarak devam ediyor.

https://www.meetup.com sitesini şiddetle tavsiye ederim. Bu site ile gerçekten ilgi alanınıza göre dünya çapında meetup lar bulabiliyorsunuz.

Ayrıca "Jobs" yani Steve Jobs'un hayatını anlatan filmi almanca konuşma ve alt yazılı olarak izliyorum. Hem kelime öğrenme, hem de söylenen almanca kelimeleri anlamak için çok iyi bir pratik olduğunu youtube da izlediğim kanallarda önerdikleri için yapıyorum.

Özetle şuan burada çok yoğunum ama çok huzurlu ve mutlu çalışıyorum. İş bulma konusunda ayrıca bir yazı yazacağım. Bu konuda edindiğim tecrübeleri de paylaşıyor olacağım.

Özetle şuan "Alles Gut" :)