bugün

1: önce programcı olmayınız. bunu ilerleyen süreçte size anlatacağım.
2: araçtırmacı ve google çok iyi kullanmayı bilmek
3: araştırmacı ve analitik düşünce gücünüz diğer insanlara göre çok üst seviyede olması
4: unutmayın tüm sektörlere hakim olmanız gerekmiyor. gereken tek şey karşınızdaki ne istediğin bilmeyen bir müşteriden onun anlayacağı değil sizin anlayacağınız kadarını öğrenmeniz..
5: donanım seçimi (çok önemli)
6: dil seçimi.
7: ingilizceye hakim olmak.
8: matematik ve analitik geometri dşünce gücünün olması (ne alaka demeyin birazdan anlatacam. )
9: bol bol kitap okumak
10: uyumamak.(bunu yaparken acı çekmemek)
11: bilişim dünyasına (network, windows, unix, linux, ) hakim olmak. "ben yazılımcıyım yeaaaa gerek yok" demeyin.
12: iyi bilgisayar seçimi.
13: iyi bir ofis düzeni
14: ergen düşünce gücünün belli bir düzeyde tutmak (fluarı olmayan okumasın bu bölümü.)
15: size gelecek projelere "kendi" işiniz gibi empati kurarak yapın.
16: kod yacılırken dikkat edilmesi gereken hususlar.
17: "merak etmek" gerçi uludağ sözlükte merak diyince ergen zihinlerin aklına başka şeyler gelecektir. bunu geçiyorum.
18: zamanında proje yetiştirmek. (buraya dikkat 16 yıllık tecrübemle zamanında yetiştirmediğinizde ne olacakları yazılacak.)
19: kapanış....

öncelikle uzun zamandır uğraştığım bir yazı idi vakit bulup kelimelere dökemedim.
1: Programcı olmayınız.
a:) sebepleri
türkiye şartlarında programcı yazılımcı olmanın size getireceği dezavantajları sıralamak gerelirkes "müşteri" profili der susarım. bu alanda müşteri profili çok ; ama çok önemli olduğu için önce bu seviyeye gelmeden önce davranış bilimlerini çok önceden okumuş bilmiş olmalısnız. tamam bir sherlock holmes olun demiyorum. ama karşınızdaki müşteriyi en iyi şekilde anlamak için gereken kısa kısa bilgiler önemlilik arz ediyor.

memik yanık kitaplarından okumuş efsanevi nesil olarak nirvanaya hakkı öcal ile çıkıp "asp" kitapçıklarını satır satır beynimize kazınmış ve bu kitaplar zamanında bize çok faydası dokunmuştur. şimdi ise durum çok farklı. google gibi bir gerçek varken kimin ihtiyacı olur kitaplara. özelikle pdf dökümanlarla çok vakit kaybetmenin bir anlamı yok. örnek yazılmış kodlar ile "şu kod ne işe yarıyordu " şu döngüyü yazarsam ne olacak gibi temel öğeleri kitapların için boğulacağıma durup bir kod indirip "o" ne işe yarıyor demek sanırım daha basit ve verimli oluyor. bu demek değildir ki kitap okunmasın. kitap sadece temeli oluşturan sebeplerden biri.

programcı olmayın sözünden çıkartacağımız sonu ise önce insanları çok iyi tanımamızdan geçiyor. benim tavsiyem prgramcı olmadan önce şu kitapları ve yazarları ya da ideolojiyi mutlaka kafanıza yer etmesi gerekir.
- sosyal psikoloji

-Fototropizma

-Tigmonasti

-Refleks

-izleme yoluyla öğrenme

-Şartlanma yoluyla öğrenme

-Deneme yanılma da olabilir. ( en önemlisi)

bunlar temelde bilinmesi gereken olgular. henüz daha yazılıma bile geçmedim. sonuçta öğrenile bilinen bir meslek türü. yani yetenek ise sadece sonrasında geliştirerek alcağınız bir level ölçüsü olabilir.

bu özellikler sadece başlangıç düşünme olgusu iki satır html bilen adam da kendisini yazılımcıyım diye nitelendiriyor. bunlar zaten bu piyasa da itibar görmediği gibi balta ile sap bir araya gelmeden piyasadan yok olup gidiyor.

bu sebepten yazılımcı pgoramcı olmadan önce müşteri patron triplerini mutlaka dayanabilmeli ve zamanında çalışmamız gerekiyor aksi taktirde yaptığınız ve size zevk veren bir meslek acı keder göz yaşına dönebilir. mobingin kralını görmek zorunda kalırsınız.

he bir de şu düşünce yapısı var ki evlere şenlik" yav oğlum sen endüstir mühendisliğini seç ben seni yazın bir yazılımcının yanına veririm orada öğrenirsin bu işi." he amk he öyle 3 ayda arshimet oluyorsun... bu istatiki olarak da bizim sektöre olan güveni ortadan kaldıran en önemli hususlardan biri...

2: araçtırmacı ve google çok iyi kullanmayı bilmek
google olmadan önce altavista vardı ki; algoritması genelde sayfada bulunan ve aynı harf ve kelimeden 2-3 tane var ise onu ön sıraya çıkartma prensibine bağlı formulu ile aslında istediğimiz sonuca tamda alamamamızı saladığı için el mahküm seve seve kullanmak zorunda kalmıştık. ne arasak salak salak sonuçlar çıkartırdı örnek.

"asp connection string for"
alta vista da aradığınız muhtamelen eğer makalenin içinde çokca bu cümle kullanılmış ise tutar bunu karşınıza getirir vehiç bir sonuç elde edemezsiniz. şuraya açıklık getirmekte fayda var altavista "asp", "connection", "string","for" şeklinde çalışır. bu da bütün sitelerde aradığınızda düşüncesize "for" kelimeciği ne kadar var. sonrasında ise iki kelime ve 3 kelimeye kadar çıakrtılar ama artırdığınızda hi bir sonuçu tam olarak alamıyordunuz. bu sebeten bizde o zamanlarda "asp connetction" şeklinde arar 10 larca sayfanın içinde aradığımızı bulmamız 1 saatimizi alırdık. halbu ki aradığım şey şu kadar basit birşey.

"
'declara edelim. ne kullancağımızı bilelim.
Dim Connection
Dim Recordset
Dim SQL

'önce hangi tabloya bağlanacam.
SQL = "SELECT * FROM TABLE_NAME"

Set Connection = Server.CreateObject("ADODB.Connection")
Set Recordset = Server.CreateObject("ADODB.Recordset")

'veri tabanına bağlanılım.
Connection.Open "DSN=dsn_name;UID=user_name;PWD=password;Database=database_name"

've artık bağlanabiliris.
Recordset.Open SQL,Connection
bundan sonrasuı ise klasik veri tabanı boş ise getirme mal gibi 500 hatası verme ya da çok parametreli hata gibi saçma sapan hata verme "boş" gibi bir hata ver döngüsü yazıyorsunuz...

buradaki arama ve araştırma özelliği ise şu bağlamda önemli. misal. aradığım cümlede geçen "asp" ve connection" kelimeler altavistada sanırım 15. sayfadfa bir yerde bulabilrdim...

peki google ne yapıyor bu alanda. arama kriterlerini bam başka bir alana çekip sadece sayfayı aramaktan vazgeçmiyor bir de insanların aradıklarından hangisi işe yaramış ona bakıyor. şimdi bunu anlatmaya kalkarsam seoya kadar gitmek zorunda olucam. bu sebepten balık tutmayı sonra öğrenin ben size direkt balık vereyim...

google arama terimleri.

-tırnak ile armak.

örnek: "java null pointer exception" *. *
eğer bu şekilde aradığımda bize sadece kesin olan sonuçşları verecek ve en çok işe yaraya siteyi getirip bizden daha önce bu problemle karşılan insalarla buluşturacak. mükemmel sonuç...

-akademik makale ararken gerekenler.

misal aramak istediğim şey genellikle bir akademik makaleyi içeriyorsa(ki gerecektir) bunun için yapmam gereken.

örnek : opencv camera site:edu
bu aynı zamanda sadece "edu" sonu edu içeren sitelere gidip akademik makalelere bakıcak benim için yapmadığı yok "motorun"

-dosya türü şeklinde aramak.
bazı durumlarda sizi filitlere dertlere gark edecek hatalar alırsınız ve bir dll soyasına ihtiyaç duyarsınız. bunun ne olacağı pekte önemli değil.

örnek: filetype:jar java android

bu şekilde yaptığınızda arama konusunda filitrelenmiş bilgiye ulaşırsınız ki bu aynı zamanda sizi bunaltıcı bir problemden uzaklaştırıp sonuca hemen götürür. haaayy google.

Benzer sitelere ulaşa bilme durumu
misal http://stackoverflow.com/ programcıların en çok faydalandığı site; şimdi bazı durumlarda o kadar motonlaşıyor ki işin içinden çıkılamaz hale gelebiliyorsunuz. bu durumda "ulan buna benzer başka bir sie var mı?" acaba dediinizde google sizin imdadınıza geliyor.

`related:http://stackoverflow.com/`

bu komut ile stackverflow a benzeyen siteleri size çıkartıp araştırmanızı başka bir boyunta çıkarta bilirsiniz.

birde en önemlisi okumaktan asla ama asla vaz geçmemek esas prensiplerden biri.

araştırmacı ve analitik düşünce gücünüz diğer insanlara göre çok üst seviyede olması *
önemli konulardan biri daha. öncelikle "normal" insanların araması ile sizlerin araması arasında çok büyük farklılıklar gösterir bu düşünce tarzınızı da geliştireceğini unutmayın. en çok bildiğimiz şeyler aslında hiç bilmiyormuş gibi davrana biliriz.

normal bir kullanıcı google da sadece işine yarayacak olan terimi arayacaktır. örnek vermek gerekirsek "masa sandalye fiyatları" bu size reklamlar beraber sanırım 30.000 sonuç verebilir. ve bu sonuçların içinden sadece 10 tanesi işinize yarayabilir. ama bir yazılımcı ise bunu şu şekilde araması gerek. "oval ofis çalışma masası gri" bu şekilde aramak ile bir önceki örnekte olan arama arasındaki farkıda google zaten gösterecekir size...

analitiik düşüncede ne la diyenlere gelsin. "problem çözme kabiliyeti." yani karşılaştığınız problemlerin tecrübesi ile doğru orantılıdır. 1 yıllıık bir programcı (4 yıllık üniversiteyi bitirip iş hayatına atılan programcıdan bahsetmekteyim.) ile 10 yıllık programcı arasında büyük farklar gözetir. 1 yıllık programcı aradığı yada çözümü 10 yıllık programcı 3 mili saniyede yapar. bunun sebebi ise o problemi defalarca ve farklı bir açıcan bakarak çözmüş olmasıdır. bu sebeple tecrübe yazılımda çok önemli olduğu aşikar.

tüm sektörlere hakim olmak.

bu da kendi içinde çok farklılkla gösteren olgu. illa "çelik" sektörünü bilmenize gerek yok sadce o sektörün tozunu 3 günde bilmenize ve analitik düşünce gücünüz ile anlamaya çalışmanıza gerek var. zaten sektörü bilmez iseniz ve anlamaz iseniz size ne anlatırsa anlatsınlar. o proje yerde kalacaktır. sürüncemeye geçip "test aşamasında" yalanlarına başlamalısınzı.

örnek vermek gerekirsek.
bir kantardan veri alıp bunları işlemek üzerine bir kantar otomasyon yazılımı üretelim eğer kantar eski bir teknolojide sadece basit bir kart ile çalışıyor ve api si yok ise hemen C++ diline yönlenip sadece veriyi alacak kadar bilgi sahibi olmamız gerekiyor. sonrasında o bilgiyi "45", "34,5" gibi rakamları veri tabanına ekleyip analiz yaptırmaya başlamalısınız. buradaki önemli husus kantarı tanımak en basitinden kantarın çalışma prensibini bilmek. eğer bunu bilmez iseniz maalesef geçmiş olsun. wordpress te joomla da site yapmaya devam edin. zaten onlarda yazılımcı ya da programcı değiller. yeni nesil kendi kendine web sitesi yapmaya başladığında ki bu 3 sene sonra, piyasadan yok olup gidecekler. muhtamelen babalarının bir işi yok ise okudukları üniversite üserinden devam edecekler...

yazılım programlama öyle sanıldığının aksine çok değişkenleri bulunan bir sistem. mantığını çok iyi kavramamız gerek.

şayet bir fabrikanın üretim ve planlama analiz yazılımını yapacaksınız ise, mutlaka fabrika sahibini bir kenara itip sadece projede dahil olan istatikçi ya da işletmeci, endüstiri mühendisi ile iyi geçinin. unutmayın bütün bilmediğiniz terimleri onlar size doğu aktaracak ki sizede ona göre veri tabanı, programlama, class yapısını yapacaksınız. projeye başlamadan önce mutlaka projeyi yazıya ve kararlara bağlanmalı. projede kim var ise hepsinin imzası alınıp öyle programlama geçilmeli...

donanım seçimi (çok önemli)
bir kamyon şöförü arabası ne kadar önemli ise, bir tamircinin alet çantası ne kadar önemli ise, bir forklifçinin kullancağı ürünler ne kadar kaliteli ise sizde o kadar değerli ve kaliteli işler çıkartacaksınız anlamına gelir.
beim tavsiyem mac almanız yönünde. 93 yılından bu yana pc başında olan beni 2011 yılında bir adet mac alarak bütün dertlerden kurtarmış ve şu sene ye kadar hiç bir sıkıntı çökme gibi sorunlar yaşatmamıştır.

zira unutmayınız. sizin kurduğunuz programlar öyle basit yazılımlar değil.
basitçe bir örnek vermek gerekirse.
- visual studio
- SQL server 2008
- macromedia dreemveawer
- notepad ++
- .net çatısı için tirilyontane app
- android için eclipse
-php için xampp
-apache
-mysql

bunlar en basit anlamda bir programcını vazgeçemediği prgramlar. yeri geiyor bunların hepsinin çalıştığı zamanlarda oluyor. bu sebeple donanım çok önemli. doğru donanım ile işinizi daha hızlı ve zahmetsiz yapabileceksiniz.

dil seçimi.

bu alan en önemli alanlardan biri. benim düşüncem sadece bir programlama diline tam anlamı ile hakim olmak. zaten gerçekçi baktığınızda sadce bir java ömrünüzü alabilir.i "aradan çıkartalım şu dili" diyen adamın anlını karışlarım.

kendi tecrübelerime dayanarak ve yaptığım en büyük hataya istinaden sadce 1 dil ve yandiller (ajax, javascript, css) sahip olmanız sanırım yetecek ve kafaları karıştırmayacaktır.

java: 12 büyük proje ve 4 farklı proje katkıda bulunan benim bünyemde ciddi hasarlara yol açmıltır. .net çi bünyemde tarifi mümkün olmayan cılara sebep vermişltir ki öğrendiğm için şimdi şükür ediyorum. şu an android de oyun yazarken en çok ihtiyaç duyduğum programlama dili....

objective c: bildiğin çince. 1 sene öğrenmek ve mobil ortamda projeler geliştirmek için urağşmış olsamda bir türlü sevemedim öğrenmek isteyenlere tavsiyem öğrenmeye blaşmayın. bunda da 19 farklı proje geliştirsemde hala benim için gizemli bilmediğim bölümler var ki evlere şenlik.
net C#: ++++ plus tan oluşan bu nadide dil için ne kadar övgüler düzsem az. sanırım naçizane en iyi bildiğim dil diyebilirim. keşke bunun üzerinde yürüseymişim diye çok aklımdan geçirmiş olsam da "meraktan" diğer dillere de kafayı yormak zorunda kaldım. geliştirdğim proje sayısını şimdi aklımda bile değil.

php: sanırım en kolay c tabanlı dillerden biri. başlayacaksanız ve sadece web tarafında olucam ve bu konuda projeler geliştirecem diyorsanız hiç kıvranmaya gerek yok. en mantıklısı bu dil olacaktır... ama sonunda wordpress joomla kurarken kendinizi yakalamayınız.
net VB : php gibi masaüstü programlamanın en kolay dillerinden biri. 2000 yılında iş başvurusu yaptığım firma benden "uzaktan kumanda ile arabayı yönetme" programı istemişti. tabi o zamanlar c# ile ihç tanışmadığımdan(!) vb ile yapmış ve işe girmiştim. yani aslında her dil ile herşeyi yapabileceğimizi unutmayalım.

özetle hangisi size daha basit ve yalın geliyorsa onu seçmenizde fayda var. en önemlisi "ne tür bir yazılımcı" olucam sorusuna verdiğinz cevaptan sonra sanırım han dil ile başlayacağınızı anlayacaksınız.


--spoiler--
Arkası yarın.
--spoiler--