Ana içeriğe atla

Yazılım Üzerine



Merhaba, Naçizane bazı fikirlerimi paylaşmak üzere bu kanal üzerinden iletişim kurmak istedim. Herkese faydalı olmayacağı su götürmez bir gerçek lakin kendimi anlatabileceğim kişiler olduğundan da eminim. Yazılım üzerine konuşmak istiyorum. Birçok usta gibi bende bu işin alaylı olarak yapılabileceğini düşünüyorum ve yaş konusunu önemsenemeyecek kadar küçük bir detay… Yazılım’ın en kısa özeti, veriyi almak, işlemek ve sunmak. Sizi iyi ya da kötü yazılımcı yapacak şey bu döngü içerisinde gerçekleşecek. Veri bazen klavyeden girilen bir değer, bazen bir cihazdan gelen ısı ölçüsü, bir ses, bir görüntü ya da bir tıklama olabilir. Bunu ne kadar sağlıklı, ne kadar anlaşılır ve okunaklı aldığınız kalitenizi belirleyen unsurlar olacaktır. Aynı durum veriyi işlemede ve göstermede de geçerlidir. Gözlemlerim üzerine yazılımcılar ikiye ayrılıyor. Vasıflı eleman olanlar ve hayalperest olanlar. Biz biraz daha hayalperest kısmından bahsedeceğiz. Günümüz teknolojisini anlayabilmek ve günlük sorunlara nasıl çözümler üretebileceğimizi konuşacağız. Bu aşamalar içerisinde de yazılım dünyasına adım atmış olacaksınız. Yazılıma nereden başlamalıyım ile alakalı yüzlerce soru ve cevap bulunmakta, hangi dili seçmeliyim. Web mi yoksa mobil mi? Bu soruları en başta sormuş olmak sizi vasıflı eleman olma yoluna sevk edecek. Biz başka bir konu üzerinden ilerleyeceğiz. Biz işe sorun bularak başlayacağız. Bir sorun bulacak, yazılım ile nasıl çözüm bulacağımıza dair alıştırmalar yapıp, programlamayı öğreneceğiz. Simyacı der ki: ”Bir şeyi bilen her şeyi bilir.” Bizim ulaşmak istediğimiz nokta da burası olacak. Çünkü siz x isimli bir değerin beşer beşer artması gerektiğini biliyorsanız, bunu herhangi bir dilde nasıl yazıldığını öğrenebilirsiniz. Bizim buradaki serüvenimiz, usta şoför olmaktan ziyade yolu öğrenmek olacak. Yolun sonuna geldiğimizde, ilk başladığınızdan daha iyi şoför olacaksınız. Yeni yollar bulacak, yeni yolculuklara çıkacak ve daha iyi şoförler olacağız. Yazılım dili konusu bir otomobilse, algoritmada yoldur. Yazılım dilleri sürekli değişmekte, gelişmekte ama yollar genelde(özellikle altını çizdim.) sabittir. Basic, Qbasic, Pascal, VB.6.0,Action Script zamanının gözde dilleri şimdi rafa kaldırıldı.
Psikolojik olarak kendinizi bazı durumlara hazırlamanız gerekecek, bu durum sadece bizim sektör için geçerli değil ama biz kendi açımızdan durumu değerlendireceğiz. Çözümünü bilmediğimiz bir bulmacanın içerisine giriyoruz. Zamanla bu başlıkların içerisini dolduracağız.

1) Hayatımızı kolaylaştıracak bir çözüm arayacağız. (Kendimize bir sorun bulacağız.)
2) Doğru soruyu sorma ve doğru cevabı bulma araştırmaları yapacağız.
3) Bağış yapma ve açık kaynak kod kullanımı
4) Kitap okuma alışkanlığı
5) Kişisel Motivasyon
6) Donanım seçimleri ve ayarlamalar
7) Algıları açık tutmak
8) Bir şeyler yazmanın yazılım üzerine etkileri
9) Karar verme sürecinin hızlandırılması
10) Yutabileceğimiz Lokmaların hazırlanması ve algoritmalar
11) Küçük Testler, Büyük İşler
12) Artık yazılıma geçebiliriz.
13) Hello World ‘ün önemi
14) Visual Studio nedir?
15) Neden C# ‘ı tercih ediyoruz.
16) Donanım Seçimleri
17) Arayüz tasarımında dikkat edilmesi gerekenler
18) Yolun sonu yolculuk kadar değerli midir?



HAYATIMIZI KOLAYLAŞTIRACAK BİR ÇÖZÜM

Bakmazsanız göremezsiniz. Bakmayı öğrenmemiz lazım, bunun için kendimizi nasıl eğiteceğimizi de öğrenmeliyiz. Kısaca kitap okumalıyız.Günlük işlerimi organize etmek ve hatırlanmaya değer bazı düşüncelerimi kayıt altına almış olduğum bir uygulama var. Trello. Sorun birden bulunabilecek bir şey olmadığı için, gördüğünüzde kaçırmamak gerekiyor. Not tutma alışkanlığını kazanmış olmak burada önem arz ediyor. Daha önceden çözüm bulunmuş bir soruna tekrar çözüm üreteceğiz. Mini bir akıllı ev sistemi yapmayı çok uzun zamandır istiyordum. Bu vesileyle onu da aradan çıkarmak istiyorum. Buradaki sorun analizi ve çözüm üretme sürecim şu şekilde gelişti. Akşamları yatakta kitap okurken ışığı söndürmek için üşenmem, dışarı çıkarken odamın ışığını sürekli açık unutmam. Işıkları, kapıyı vb. nesneleri kapatıp kapatmadığımdan tam emin olamam başlıca sebepler ama uyku halinde yataktan çıkıp ışığı kapatmak projeyi başlatma sebebim desem yalan olmaz. Kısaca bir analiz yapacak olursak, evde tam 12 tane buton var. Bu da kontrol edilmesi gereken 12 nokta demek. Neler yapabileceğimizi ve üzerindeki donanımlardan azami olarak nasıl faydalanabileceğimizi düşünmek için bu fikri aklımızın bir köşesinde tutuyoruz. Bu sürekli gelişmeye açık olacak ve diğer fikirlerden de yararlanacağız. Öncelikle bir kaynak araştırması yapmalıyız. Neler yapılmış, nasıl yapılmış ve daha iyi neler yapılabilir. Bunları projemiz için raporlamamız gerekiyor. Bu araştırmalar esnasında belli donanımları ve yeteneklerini de öğrenmiş olacağız. Bilmediğimiz bir şey aradığımız için, saçma sorular sorabilir ve saçma yanıtlar alabiliriz. Bu konun detaylarını sonraki bölümlerde inceleyeceğiz. Bir çözüm arayışı içerisine girmiş bulunuyoruz. Proje detaylarımızı bir sonraki bölümde devam edeceğiz.



DOĞRU SORU SORMA YÖNTEMLERİ

Soru soracağımız üç farklı durum oluşacak. Bir sözlü olarak çevremizdekilerden fikirler alacağız. İki Google ‘da etkili soru sorma yöntemlerini kullanacağız. Üç ise, bu işi bilen kişilere direkt ulaşarak teknik sorunlar hakkında yardım talebinde bulunacağız.
Sözlü olarak çevrenizdeki kişilere projelerinizi anlatınız. Bunu konudan hiç anlamayan birisine anlatabiliyorsanız, projenize yeterince hâkimsiniz diyebilirim. Teknolojiden hiç anlamayan babaanneniz ne yapmaya çalıştığınızı anlarsa, emin olun ki doğru yolda ilerliyorsunuzdur. Almış olduğunuz fikirler, cevap veren kişilerin yaşam tecrübelerine bağlı olacağı için can kulağı ile dinlemenizi tavsiye ederim. Muazzam fikirler çıkacaktır. İkinci kısım olarak Google bizim için bir nimet bunu kabul etmeliyiz. Örnek projelerimizi buradan bulacağız, teknik sorularımızın hepsini buraya soracağız. Araştırma esnasında kullanacak olduğumuz bir diğer Google hizmeti ise translate olacaktır. Henüz İngilizceye yeterince hâkim değilseniz, bunu oradan çözmeniz gerekecek. Yine de İngilizce konuşma ve anlama yetinizi geliştirme sizi asansör misali birkaç adım yukarı ulaşmanızı sağlayacaktır. Google ‘a doğru soruları sorabildiğiniz takdirde her zaman doğru cevapları alacaksınız. Bunun için ne aradığımızı tam olarak bilmemiz gerekiyor. Tam bilmiyorsak da sizinle aynı yanlış şeyleri arayan kişilerin bağlantıları üzerinden biraz zaman harcayarak doğru yolu bulacağız. Bu sadece biraz zamanımızı alacak. Endişelenmeyin. Bu sörf size çok fazla şey katacak ve bunu zaman kaybı olarak görmemelisiniz. Forumlara üye olmayı, puanlama yapmayı ve yorumlarla diğer kullanıcılara yardımcı olmak gereklidir. Yardım etmezseniz, yardım alamazsınız. Forumlar bizi ilgi alanları aynı olan kişilerle bağlama noktasında gayet başarılar. Burada doğru kişileri bularak sorularımızı yönelteceğiz. Burada dikkat edilmesi gereken birkaç konu var. Soru sormuş olduğunuz kişi size cevap vermek zorunda değil. Öncellikle bunu kabullenmek gerekiyor. Daha sonra soru sormuş olduğunuz kişi, cevap vermediğinde kötülemeyin. Öncelikle kendinize şunu sorun, benim sorum bir cevabı hak ediyor mu? “Hocam, falanca proje yapmak istiyorum. Ne yapmalıyım?” ya da “Oyun geliştirmek istiyorum. Ne yapmalıyım?” sorusuna cevap alamamanız çok doğal değil mi? Bir uzmandan cevap almak istiyorsanız, konunun tüm detaylarını aktarmalı, takıldığınız noktayı net bir şekilde vurgulamalısınız. Bu yazı içerisinde, olabildiğince açıklayıcı, olabildiğince kısa ve akıcı bir dil kullanmanızı tavsiye ederim. Birde sizden yaşça büyük ya da küçük birilerinin, belli bir tecrübesinden faydalanmak istiyorsunuz. Lütfen laubali hareket etmeyin. Saygılı davranın. Google’da cevabını bulabileceğiniz soruları sormayın. Doğru soruyu, doğru kişiye gönderdiğinizden emin olun. Buna rağmen bir cevap alamıyorsanız, şansınıza küsün. Unutmayın, hiçbir zaman cevap vermek zorunda değildi.



BAĞIŞ YAPMA VE AÇIK KAYNAK KOD KULLANIMI

Kullanmış olduğunuz ya da kullanacak olduğunuz açık kaynaklı kodlara her zaman bağış yapmalısınız. Bağışın herhangi bir limiti yoktur. 1 lira da olabilir. 10 lira da olabilir. 100 lira da. Bu sizin bütçenizle alakalı bir durumdur. Bağış yaparak kullanmış olduğunuz açık kaynakların gelişimine katkı sağladığınızı unutmayın. Birer parazit gibi, kopyala yapıştır ile kodları alıp kullanmayın. Korsan yazılım kullanmayın. Açık kaynak kod ücretsiz bir şey değildir. Sadece kodun özgür olmasıdır. Oradaki kodu alabilmeniz demek bunu çalmanız gerektiği anlamına gelmiyor. Bu durumda marketten bir şeyler çalabilecek yetenekleriniz olsa, oradan da bir şeyler çalacaksınızdır. El ile tutulmadığı onun bir emek olmadığı anlamına gelmiyor. Hırsız olmayın. Etik değerlerinizi hiçbir zaman kaybetmeyin. Kodlarınızı paylaşın, diğer meslektaşlarınızın gelişimine katkıda bulunun. IMECE ‘nin gücünü hafife almayın.


KİTAP OKUMA ALIŞKANLIĞI

Kitap okuma alışkanlığını mutlaka kazanmalısınız. Başarılı kişilerin ortak özelliklerinden birisi budur. Kitap okumak için ciddi zaman ayırırlar. Mesleğiniz ile alakalı her gün 50 sayfa okuduğunuzu düşünsenize, bunun size kazandıracak olduğu şeyleri. Ayrıca roman okumakta sizi ciddi geliştirecektir. Hayal gücünüzü artıracak ve olaylara farklı açılardan bakıp, farklı çözümler üretmenizi sağlayacaktır. Zaten bizim işimizde çözüm bulmak değil mi? Onun için kitabınız olmadan bakkala dahi gitmeyin. Çantanızda her zaman bir kitap bulunsun. Sosyal medyada harcadığınız zamanının küçücük bir kısmını kitaplara ayırırsanız, gelişimi çok net fark edeceksiniz. Bill Gates’in ne kadar zengin olduğunu hepimiz biliyoruz. Bill Gates’in zamanının ne kadar değerli olduğunu tahmin ediyorsunuz. Bu adam bile her yıl iki haftasını sadece ama sadece kitap okumaya ayırıyor.(bu yılın diğer zamanlarında kitap okumadığı anlamına gelmiyor.) Başka hiçbir şey yapmıyor. Sektörde ki öncü kişilere baktığınızda her yıl okuma listelerini yayınlıyorlar. https://www.gatesnotes.com/Books#All

When people ask Elon Musk how he learned to build rockets, he has a simple answer.
"I read books," he reportedly likes to say.

 Takip edin, neler okuduklarına dikkat edin. Sizde okuyun. Ayrıca yeni bir programlama dili öğreneceğiz. Bu programlama dili, birileri tarafından hazırlandı. Onun için bu programlama dilinin bir çerçevesi yani sınırları var. Bu sınırlar daha önceden belirlendi. Elinize kitabını alıp okumadan hangi sınırlar içerisinde olduğunuzu asla öğrenemeyeceksiniz. Bazı imkânlı durumlar, sizin için imkânsız olacak. Kullandığınız dilin sınırlarını ve yeteneklerini bilin. Yazılım dili için otomobil demiştik, dağ yolundan gideceksiniz, bir Ferrari kullanmak çok akıl kârı olmayacaktır. Yazılım dili seçimlerimizde hangi yoldan gideceğimizi bilmemiz önemli. Konuya geri dönecek olursak, okumayı bıraktığınız an, gelişiminiz duracaktır. Youtube’da bir yere kadar, çok fazla veri kirliliği var. Her gün en az 50 sayfa okumadan, yatmayın. Hızlı okuma tekniklerine bakabilirsiniz ama yavaş okumak asla bir sorun değildir. Unutmayınız, kaplumbağa yarışta tavşanı geçebiliyor. Bazı konularında özellikle yavaş okunması gerekmektedir. Kitabınızla konuşmalısınız. Notlar alın, altını çizin. 200 sene öncesinden gelen bilge cümleleri okuyunca durun. Üzerine biraz düşünün. Kimseyle yarışmıyorsunuz. Tadını çıkarın. Kitabınızı sindirin. Yazara teşekkür edin. Yorum yapın. Kendinizi geliştirin. Dünyayı değiştirin.


KİŞİSEL MOTİVASON

Kişisel motivasyonunuzu canlı tutabilmek için kendinize bir hedef belirlemelisiniz. Bu hedef doğrultusunda hareket edin. Her hareketinizi bu hedef ile ilişkilendirin. Pozitif olmaya çalışın. M. Kemal ATATÜRK’ün güzel bir sözü vardır. “Ben bir şeyi nasıl başaracağımı düşünmem. Bu hedefte önüme çıkacak olan engelleri düşünürüm. Engelleri kaldırdığımda, başarırım.” Sizde hedefinize ilerlerken önünüze çıkacak engelleri listeleyin, adımlara bölün ve engelleri kaldırın. Başarmanın bin farklı yolu var. En doğru olanı bulabilmeniz için engelleri, çıkacak olan sorunları bilmeniz gerekiyor. Kaldırdığınız engeller, motivasyonunuzu taze tutacaktır. Bir sorunla karşılaşmıyorsanız, kesin yanlış yolda ilerliyorsunuzdur. Murphy kanunlarını sevin. Gelişiminize katkı sağlayacak şeyler, bu sorunlardır. Bildiğiniz üzere Edison, ışığı icat ederken, 2000 binden fazla deneme yapmıştır. Kendisinin olaya bakış açısı muazzamdır. 2000 hatalı işlem olarak görmüyor. Işığın yanmaması için, 2000 farklı yol buldum diyor. Sizde olaylara bu bakış açısıyla yaklaşın. Hatalarınızı tekrar etmemeye çalıştığınız sürece, her farklı yol sizi hedefinize biraz daha yaklaştıracaktır. Mutlu olmak bir seçimdir.


DONANIM SEÇİMLERİ VE AYARLAMALAR

Donanım seçimlerinizi dikkatli yapın. Ucuza kaçmayın. Burada performansını etkileyecek durumlardan bahsediyoruz. Bizim için, klavye, Mouse, sandalye, masa, uygulamalar önemli. Ergonomik ve sağlıklı ürünler alın. Kamyoncular dahi daha iyi hizmet verebilmek için, en iyi kamyonlara sahip olmak istiyorlar. Adım adım donanımlarınızı geliştirin. Neyi neden almak istediğinizi bilin. Hangi amaca hizmet etmesi için alıyorsunuz, aldığınızda size faydaları ne olacak bu soruları cevapladıktan sonra, doğru kararı vermiş olacaksınız. Programlanabilir klavye ve Mouselar benim işimi ziyadesiyle kolaylaştırıyor. Eminim ki sizin için de faydalı olacaktır. Alabildiğiniz en kaliteli ürünleri almayı alışkanlık haline getirin. Bu konuda cimri olmayın. Bu donanımlar sizi hedefinize ulaştıracak olan araçlar. Her alışverişinizde bunu düşünün.


ALGILARI AÇIK TUTMAK

Hedefinizi belirlediğinizde, bunu hayatınızın her alanına yayın. Sohbet aralarında konuyu açın, fikirleri toplayın. Başkalarının davranışlarını gözlemleyin. Her durumda öğrenmeye hazır olun. Hedefinizi belirlediğinizde, algıda seçicilik kavramı içerisinde olacaksınız. İşinize yarayan materyaller, fikirler, kavramlar bir mıknatısmışsınız gibi size doğru akacak. Buna emin olabilirsiniz. Tecrübeyle sabittir. Bu algıları açık tutma konusu sizi, hedefinizi paylaştığınız kişilerle de tanışma fırsatı yaratacaktır. Etrafınıza farklı gözlerle bakıyor olacak, başkalarının göremediği detayları göreceksiniz.


BİR ŞEYLER YAZMANIN YAZILIM ÜZERİNE ETKİLERİ

Yazmak bir nevi paylaşmaktır. Fikirlerinizi yazın, projelerinizi oluşturun. Hikayeleştirin. Senaryolar üretin. Yazarak öğretin. Öğrenmenin en güzel yollarından birisi de öğretmektir. Öğrettiğinizde sizin daha önce sormadığınız sorularla karşılaşacaksınız ve emin olun ki, bu size çok şey katacaktır. Yazarak soru sorma yeteneğinizi, dil kullanımınızı geliştireceksiniz. Disiplin kazanacaksınız. Blog tutun, bırakın insanlar sizi acımasızca eleştirsin. Acı çekmek, başarmanın fıtratında var. Yazılarınızla, tarihe notlar bırakın. Yıllar sonra geri dönüm okumak çok zevkli bir aktivitedir. Bu eğlenceyi hak ediyorsunuz. Yazarak insanlara faydalı olabilirsiniz. Fikir tohumlarınızı ekin. Bırakın başkaları faydalansın. Yazın, konu ayırt etmeksizin yazın. Yazacak hiçbir şey bulamıyorsanız. Oturduğunuz odayı ya da mekanı yazın. Masada ki çizgileri yazın. Etrafınıza bakın, gördüklerinizi değil, birazda görmediklerinizi yazın. Yazmak hayal gücünüzü canlı tutacaktır. Buna ihtiyacımız var. Ayrıca algoritmalarda, yazının ne kadar önemli olduğunu tekrar değineceğiz.


KARAR VERME SÜRECİNİN HIZLANDIRILMASI

Karar verme süreci bazen çok sancılı olabiliyor. Bu durumlarda kendinize bir kırmızıçizgi belirlemelisiniz. Karar vermek için ne çok erken, ne de çok geç olmalıdır. Her iki durumda bizim istemediğimiz bir kavram. Karar alırken, en az iki kere düşünün ama bu iki yüz kez düşünün demek değil. Bazen kararsızlık çukuru sizin tüm motivasyonunuzu emer. Bu tarz durumlar için, çözüme ulaşamadığınızı hissettiğiniz an, elinizdeki mevcut çözümleri bir yere not alın ve içerisinden birisini seçerek yolunuza devam edin. İlerleyen süreç içerisinde daha iyi çözümler bulabilirsiniz ama gereğinden fazla durmamalısınız. Kötü bir karar size tecrübe kazandıracaktır. Fakat kararsızlık çukurunda kaldığınızda size herhangi bir faydası dokunmayacak. Denildiği üzere, kötü bir karar, kararsızlıktan daha iyidir. Çözümler mükemmel olmak zorunda değil, zamanla mükemmelleşecektir. NASA çalışanları bile yanlış kararlar verebiliyorken, her zaman en doğru kararı verebilmek bizim ne haddimize.



YUTABİLECEĞİNİZ LOKMALARIN HAZIRLANMASI VE ALGORİTMALAR

Beş katlı bir binayı birden oluşturamazsınız, taşları teker teker üst üste koymalısınız. Kaldırabileceğinizden daha fazla yükün altına girerek, kendinize gereksiz yere eziyet etmeyin. Bu durum ancak kendinizi kötü hissetmenizi sağlayacaktır. Kendinizi henüz başkaları ile kıyaslamayın. Bazıları bir seferde 10 tuğla taşıyabilirken, siz sadece bir tuğla taşıyor olabilirsiniz. Sınırlarınızı bilin. Kendinizi sakatlamak uğruna büyük lokmalar yutmaya çalışmayın. Kendinizi ve iş yapabilme kabiliyetinizi tanıdığınızda, bir süreç için ne kadar zamana ihtiyacınız olduğunuzu tahmin edebileceksiniz. Bu biraz da zaman yönetimi konusuna giriyor. Belki ilerleyen zamanlarda bu konuya tekrar değiniriz. Projenizi kağıda döktükten sonra, yutabileceğiniz lokmalara bölmelisiniz. Bu her ne kadar basit bir konu gibi görünsede, ciddi bir işlemdir. Yeterince mesai harcadığınıza emin olun. Bu işlem esnasında mümkünse hayal perestliği bir kenara bırakın. Elinizde sihirli bir değnek olmadığını bilin, varsayımlarınız gerçekçi olsun. Ben bunu bir saatte hallederim dediğiniz bazı sorunlar günlerinizi alabilir. Bu durumlarda da masaya tekrar geri dönüp, lokmalarınızı biraz daha küçültün. İşlerinizi daha da detaylandırın. İş yapmaya çalışıyorsunuz. Boğulmaya değil.
Algoritma konusuna gelecek olursak, ben algoritmayı cümle kurabilme yeteneği olarak görüyorum. Ne kadar detaylı cümle kurabiliyorsanız, o kadar iyi algoritmalar oluşturabilirsiniz. Doğru cümleleri kurabilmek için, doğru sorular sormalısınız. Doğru sorular size iyi algoritmalar olarak dönecektir. Yol üzerindeki tüm engelleri aşacak olduğunuz yer algoritmadır. Yeterli zamanı ve çalışmayı her zaman hak eder. Örneğin kahve yapma işini algoritmaya dökmek istediğinizde, kahve var mı? İlk sorudur. Su var mı? Suyun ısıtılabileceği bir kap var mı? Kap 100 dereceye dayanır mı? Ocak var mı? Ocak ‘ta gaz var mı? Ocak ateş alıyor mu? … bu soruları istediğiniz kadar sorabilirsiniz. Bu sorular ne kadar fazla olursa, algoritmanız senaryolara karşı o kadar detaylı cevaplar verebilecektir. Hayat bir algoritmadır, biz hayatımızdaki algoritmalara alışkanlıklar diyoruz. Algoritmaları anladıkça daha çok seveceksiniz. Tekrar etmek gerekirse, doğru algoritma doğru sorulara verilen cevaplarla oluşacak. Bunun içinde bol bol okuyup, bol bol yazmanız gerekiyor.

Teknik olarak algoritma, bir sorun çözmek ve karar vermek amacıyla kullanılan bir dizi metodolojik adımdır. Yazılım dünyasında sıkça duymaya alıştığımız bu terim, daha mantıksal karar vermemizi sağlayan ve hayatımızın her alanında kullanabileceğimiz bir süreçtir. İşleri planlamamızı, organize etmemizi ve doğru kararları alarak çözüme en kısa sürede ulaşmamızı sağlar. Her ne kadar algoritmalar kendilerini tekrar eden yapılardan oluşsalar da, aslında ben hayata anlam kattıklarını düşünüyorum.
Algoritma matematiğin yanında birçok şeydir,
Hayal kurmaktır
Olasılık üretmektir.
Düşünmektir.
Karar almaktır.
Yedek kararlar almaktadır.
Sorunları görmek ve çözüm üretmektir.
Algoritma doğru soruları sorarak doğru cevapları aramaktır. Doğru algoritmayı kurabilmek için, doğru soruları sormak şarttır. Düzgün bir algoritma ile hayatınızda B planına ihtiyacınız olmayacak, Çünkü A planına yeterince güveneceksiniz. Algoritma size gelecekteki tüm olasılıklara karşı bir çözüm sunacaktır. 


KÜÇÜK TESTLER, BÜYÜK İŞLER

Test adımları önemlidir. Verilen kararların doğruluğunu ve uygulanabilirliğini fark etmenizi sağlar. Kararlarınızı değiştirebilir, geliştirebilir ya da uygulayabilirsiniz. Bu durum size hem maliyet hem de zaman tasarrufu sağlar. Test adımlarını oluşturmak, zamanla kazanılabilecek bir tecrübedir. İlk yapmış olduğunuz hataların farkına varın, hata yapmak hiçbir zaman sorun olmamıştır. Aynı hataları tekrar etmek sorun oluşturur. Bizde yazılım ayağını oluştururken, Gantt şeması oluşturacağız ve bu şema içerisinde testlerimizi belirteceğiz. Testler projelerimiz için hayati önem taşımakta, onun için bu işlem için yeterince mesai harcadığımıza emin olacağız.

ARTIK YAZILIMA GEÇEBİLİRİZ

Yazılım direk bilgisayarda başlayan bir konu olmadığı için, bu alandan önce bir şeyler anlatmaya çalıştım. Bu kısımda Gantt şeması oluşturacak ve Scrum kavramına değinerek, projemizi geliştirmeye başlayacağız. Gantt şeması (https://eksisozluk.com/gantt-cizelgesi--404970), 1915 yılında Henry Gantt tarafından, kendi fabrikasındaki süreçleri belirleyebilmek için geliştirilmiş bir sistemdir. Biz dikey alanda işlerimizi, yatay alanda da tarihlerimizi belirleyeceğiz. Projelerinizde bu durumu günlük yapabileceğiniz gibi, daha geniş alanlara da yayabilirsiniz. Biz haftalık plan yapacağız. Haftalık işlerimizi de, micro organizasyonlarla çözeceğiz. Buradan sonraki proje sürecimizi takip ettiğimiz tek bir çizelgemiz olacak. Yazılım her ne kadar kodlarla alakalı bir durummuş gibi algılansada, ciddi evrak işlerimiz olacak ve bu süreçlerin hepsini raporlayacağız. Unutmayınız, raporu olmayan bir kod, tamamlanmamıştır. Şimdi kağıdı kalemi elimize aldığımıza göre hayal kurmaya başlayabilir ve bu hayallerimize istinaden Gantt şemamızı oluşturabiliriz.


“HELLO WORLD” ün ÖNEMİ

Hello World’ün hikayesi 1972 yıllarından ve sektöre altın harflerle giriş yapmıştır. “Hello World” kavramı yazılım dünyasında yeni bir şey öğrenmek anlamına geliyor. Yeni bir yazılım dili ya da teknoloji üzerinde çalışıyorsanız, ilk mesaj olarak “Merhaba Dünya” denir. Bu kavramı seviyorum. Çünkü bir şeylere hazır olduğunuzu hissetmenize yardımcı oluyor. Bizim “Merhaba Dünya” kavramından öğrenmemiz gereken konu, birçok platformdan dünyaya seslenebilmek ve içimizdeki amatör ruhu her zaman canlı tutabilmek. Bir konu da uzman olmak demek artık öğrenilecek bir şey kalmadı demek ve biz bunun olmasını istemiyoruz. Onun için tekrar tekrar “Merhaba Dünya” diyeceğiz. Amatör ruhunuzu hiçbir zaman kaybetmeyin.
History of Hello World
(https://stackoverflow.com/questions/602237/where-does-hello-world-come-from)

VISUAL STUDIO NEDİR?

Visual Studio, Microsoft tarafından geliştirilmiş ve bizimde sık sık kullanacağımız içerisinde birçok programlama dilini barındıran, arayüz tasarımlarını yapmanıza olanak veren, içerisindeki yardımcı araçlarla yazılım kalitenizi arttıran bir IDE (Integrated Development Environment – Tümleşik Geliştirme Ortamı)’dır. Ücretsiz sunulan community sürümü ile projemizi rahatlıkla oluşturabileceğiz. Kurulumuna geçecek olursak, https://www.visualstudio.com/tr/vs/whatsnew/ adresinden gerekli dosyayı indirerek başlayabiliriz. Unutmayın C# dilini kullanacağız. Kurulumu buna göre gerçekleştirmek gerekecek, sorun yaşıyorsanız. Google’a danışmanız gereken ilk soruya sahipsiniz.

NEDEN C#

C# orta seviye dillerden biri olarak adlandırılıyor. Öğrenmesi kolay, kaynakları fazla ve kocaman bir framework’e sahip. Framework, kısaca işleri kolaylaştıran kaynak anlamına geliyor. C# seçmemizdeki asıl sebep bu dile yeterince hâkim olmamdan kaynaklı, arayüz kodlamasının yanı sıra hem masaüstü hem de web kodlayabiliyor olmamın avantajından olsa gerek, bu dili tercih ediyorum.

DONANIM SEÇİMLERİ( IoT için)

Donanım seçimlerini yapabilmemiz için, biraz elektronik öğrenmemiz gerekiyor. Bizim için yeterli olacak kadar öğrenmemiz şu an için yeterli, bu işi profesyonel olarak değil sadece hobi amaçlı ilgilendiğimizi hatırlatmak isterim. Bizim için sensörler, akıllı kartlar, roleler ve dirençler lazım olacak. Donanım seçimlerinden kastımızda aslında sadece sensor seçimlerinden ibaret, bu konuda ilgili kişilere ulaşmak istiyorsanız. 320Volt(http://320volt.com/) gibi sitelere üyeliğinizin bulunmasını tavsiye ederim. Ben kendi araştırmam esnasında birkaç arduino ve uyumlu sensorleri satan siteleri tarıyorum, ilgimi çeken sensorleri kaydediyor ve o sensorlerle yapılan projeleri inceliyorum. Bağlanması gereken dirençleri ve diğer donanımları da bu şekilde öğrenmiş oluyorum.

ARAYÜZ TASARIMLARINDA DİKKAT EDİLMESİ GEREKENLER

Arayüz tasarımı bizim ülkemizde çok fazla önemsenmiyordu ki son birkaç yıldaki gelişimin kayda değer olduğunu düşünüyorum. Nasıl ki insanlar ilk giyimleri ile dikkat çekiyorsa, yazılımlarda arayüzleri ile dikkat çekiyor. Eğer bir servis yazmıyorsanız. Burada önemsiz gibi görünen ve sürekli gözden kaçan bazı detaylarla başlamak istiyorum. Özellikle bu işe yeni başlayan arkadaşlar için, popüler yazılımları incelerseniz, nesnelerin groupbox ya da farklı yöntemlerle birbirlerinden ayrıldığını görecekseniz. Gruplama yapabilmek, menüleri oluşturabilmek dışarıdan görüldüğü kadar kolay değil bence, çok fazla karar vermek gerekiyor. Özellikle bazı gri alanların tam olarak nerede bulunması gerektiğine karar vermek zor olabiliyor. Stajyer arkadaşlarla birlikte öğrendiğim bir şey varsa o da tab önceliği ya da veri girişi kontrolü bizim okullarımızda öğretilen bir şey değil. Kullanıcı oluşturmuş olduğunuz arayüzden memnun değilse, her ne yaparsanız yapın, ürünü beğendiremiyorsunuz. Textboxlarınızın tab sıralamalarını, maskelemelerini düzgün bir şekilde yapın. Her zaman yapılabilecek işler genelde hiç yapılmıyor. Kullanım kolaylığı detaylarını atlamayın. Belli kontrollerinizi arayüzde gerçekleştirin, örneğin tc kimlik numarası girilecek yere harf basamamalıyım ve 11 karakterden fazla yazamamalıyım. Bu tatlı detayları projelerinizde eksik etmeyin.
Maalesef bazılarımız tasarım, renk uyumu vb. yetilerle dünyaya gelmiyoruz. Burada ilham alabileceğiniz çok fazla alan var. Örnek projeleri inceleyin. Menü yapılarını, gruplandırmalarını, renk seçimlerini, font seçimlerini, olay tepkilerini, kısa yollarını vb. tüm detayları inceleyin ve projede emeği geçen tüm bireylerin ortak işi olduğunu unutmayın. İyi yapılan işler takdir edilmelidir. Burada takdir edebilmek için, projeye doğru bakabilmek gerekiyor. Kendinizi bu alanda geliştirin. Güzel olanı görün, güzel olanı kullananın, güzel olanı daha güzel bir hale getirin. Bunu yapabilirsiniz.

YOLUN SONU YOLCULUK KADAR DEĞERLİ MİDİR?

Bu sorunun cevabını ilk projemizin ardından cevaplayacağız.

Yorumlar

Bu blogdaki popüler yayınlar

C# pixel, görüntü işleme

İlk olarak Görüntü İşleme ile ilgili olan yazıyı okumanızı tavsiye edilir. http://yzgrafik.ege.edu.tr/~tekrei/dosyalar/sunum/gi.pdf bu dökümanın 25.sayfasındaki formülü kullanarak siyah beyaz bir resim yapalım dedim. Ekran görüntüsü aşağıdaki gibi oldu. Kaynak kodda şu şekilde ya da c# Pixel İşleme using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace pixelIsleme { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Bitmap PixelTara( Bitmap Goruntu) { Bitmap yeniGoruntu = new Bitmap (Goruntu.Width, Goruntu.Height); //Bitmap sınıfımızı oluşturduk. for ( int i = 0; i < Goruntu.Width; i++) //resmi yatay olarak taramak için { for ( int j

C# Görüntü işleme

İlk Olarak Burayı Okumalısınız Öncelikle görüntü işleme üzerine olan kodları birebir hepsini ben yazmadım bunun için google da “c# color tracking” diye bir arama gerçekleştirdim ve referans olarak http://www.uguryalcin.de/c/372 adresini belirledim. Konuya geçecek olursak, ilk önce birkaç kütüphane dosyasına ihtiyacınız olacak. örnek projede kütüphaneler mevcut bunlar kendinizi daha da ileri götürmek için. aforge kütüphanesini indirmek isteyebilirsiniz. Ekran görüntüsü. Ben aslına bakarsanız kod anlatma konusunda pek iyi değilim. Örnek projeyi indirin. Kodları silin aralarına bir şeyler eklemeye çalışın ve öğrenin. Şimdi yeni bir soru ile daha karşılaşıyoruz. Aynı anda birkaç görüntü almak istersek ne yapmalıyız. Aslında onunda cevabı basit ama biraz da sizin araştırma yapıp kendi blogunuzda yayınlamanız için onu size bırakıyorum. Yayınlamış olduğunuz yazıyı yorumlardan paylaşırsanız çok mutlu olurum. Sağlıcakla kalın :) using System; using System.Collections.G