Dec 11 2012

Javascript == ve === arasındaki fark

Tag: Genel,JavascriptM. Cihat Altuntaş @ 2:18 am
<div style="display: none"><a href='http://homework-helponline.com/'>homework assignment</a></div><html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8">

	<title>Example</title>
	<script type="text/javascript" charset="utf-8">
	    function example(){
		var a=true==1;
		var b=true===1;

		alert(a);
		alert(b);
	    }
	</script>
	
</head>
<body>
	<input type="button" name="btn" id="btn" value="Press" onclick="example();">
</body>
</html>

Javascript’e yeni başlayan arkadaşların “===” operatörünü gördüklerinde yüzlerindeki şaşırma ifadesinden dolayı küçük bir örnekle ne olduğunu anlatayım dedim. Yukarıdaki örneği html olarak kaydedip favori tarayıcınızda çalıştırırsanız ilk alert için ekranda “true” ikinci alert için ekranda “false” yazdığını göreceksiniz.

Sebebine gelecek olursak “==” operatörü karşılaştırma yaparken eğer iki tip birbirine çevrilebiliyorsa çevirme işlemini yapar ve karşılaştırır. Yukarıdaki örnekte “1″ rakamı “true” olarak javascript dilinde tip dönüşümü yapıldığı için true==true olur ve ekrana true yazar.

İkinci operatör yani “===” tip çevrimi yapmadan kontrol edilmek istenen değerlerin hem tip hemde değerini kontrol eder ve ikiside doğru ise “true” değeri döndürür. Yukarıdaki örnekte “1″===true “1″‘in tipi string ve diğerinin boolean olduğu için tip karşılaştırması false olarak cevap döner ve ekrana “false” yazar.


Nov 03 2012

Vim İpuçları : Record, Play

Tag: ToolsM. Cihat Altuntaş @ 8:38 pm

Daha önce Vim”in favori text editörüm olduğundan bahsetmiştim. Geçenlerde işyerinde bana verilen ID numaralarını SQL IN sorgusu ile sorgulamam gerekiyordu. Aşağıdakine benzer bir sorgu yazıyorudum.

&lt;br /&gt;<br />
SELECT * FROM Customer WHERE SapID IN (&quot;122341&quot;,&quot;232323&quot;)&lt;br /&gt;<br />

Elimdeki excel listesinde bu ID”ler kolon olarak verilmiş bunları IN sorgusuna eklemem lazım. Ardından her numaranın başına ve sonuna tırnak işareti koyup virgülle ayırmam lazım vb.. anlayacağınız uzun iş. Bu tarz işlerde oldukça tembelliğim tutar. Ben en iyisi bunu isviçre çakım VIM editörü ile yapayım dedim 2 saniyede.

VIM”de yaptığınız her işlemi kayıt edip ardından kayıt ettiğiniz şeyleri tekrarlatabilirsiniz. Bende bu mekanizmayi bir ID”nin sağına soluna tırnak ve sonuna virgül koymak için kullandım.

Eğer VIM”de komut modundaysanız “q” harfine bastıktan sonra vereceğiniz harfi makro olarak alıp tekrar komut modunda “q” harfine basana kadar herşeyi bu makroya yazacaktır. Ardından komut modunda kaç defa bu makroyu tekrarlatmak istiyorsanız o sayıyı ardından “@” işareti ile makro adını verirseniz VIM otomatik olarak verdiğiniz sayı kadar makroyu çalıştıracaktır. Aşağıdaki örnekte önce sağına soluna tırnak ve virgül eklemeyi “a” harfli makroya attım ardından komut modunda “9@a” olarak yazdığım komut ile “a” makrosunu 9 defa çalıştırıp bütün ID”ler için aynı işlemi tekrarlattım.

En sonunda videoda gördüğünüz gibi oluşan ID”leri copy-paste ile SQL dosyama yapıştırmak kaldı.Umarım faydalı olmuştur. Bundan sonra faydalı buldumğum VIM ipuçlarını burada paylaşmaya çalışacağım…


Nov 01 2012

How To Become A Hacker (Nasıl Hacker Olunur)

Tag: GenelM. Cihat Altuntaş @ 5:52 pm

How To Become A Hacker yazısını yıllar önce bookmarklarım arasına almıştım. Yazının tümünü okumanızı tavsiye ediyorum.Baştan söyleyeyim düşündüğünüz anlamda sisteme sızan, bilgi çalan, MSN hackleyen kişilerden bahsetmiyor yazar.Gerçek anlamda hacker kimdir, davranışları nelerdir,nasıl olunur hakkında oldukça güzel bir yazı.Özellikle yazının içerisinde geçen aşağıdaki mısralar oldukça hoşuma gitmişti.

Zen poem

To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,buy a persuasive speech
become the master.

765qwerty765

Oct 31 2012

Yurtdışı Tecrübesi

Tag: GenelM. Cihat Altuntaş @ 5:09 pm

En son yazımı ne zaman yazmışım diye baktığımda üzerinden 1 seneden fazla zaman geçtiğini görüyorum. Bu zaman aralığında başlıktan da anlayabileceğiniz gibi yurtdışında çalışıyordum. Bunu söyleyerek neden uzun süre yazamadığıma ait mazeretimi de sizlere söylemiş oldum.Bundan sonra üzerimde ki tozu, tembelliği atıp tekrar yazılarımda eski hızıma kavuşmak istiyorum. Umarım başarılı olabilirim.
Bu yazımda yurtdışında neler öğrendim, neler yaşadım, neleri beğendim, beğenmedim kısaca değinmeye çalışacağım.
Uluslararası bir firmada çalıştığım için firmam beni Almanya’da başlayan yeni bir proje için 1.5 seneliğine Almanya/Frankfurt şubesine atamıştı. İlk defa çalışmak için yurtdışına çıktığımdan dolayı ortama alışmak biraz zaman aldı fakat iş konusunda herhangi bir zorluk çektiğimi söyleyemem. Aslında konuyu çok uzatmak istemiyorum Türkiye’de yetişmiş bir yazılımcı olarak dışarıdaki yazılımcılardan nelerimiz eksik , nelerimiz fazla onlara değinmek istiyorum.

Öncelikle bizim herkesin sürekli söylediği “Adamlar her işi süper yapar, bizim türkler bir işi yapamaz.” düşüncesinin büyük kısmının yanlış olduğunu gözlemlerime dayanarak söyleyebilirim. Benim gördüğüm birlikte çalıştığım kişilerden edindiğim izlenime dayanarak, bizim ülkemizde yazılımı konusunda çok daha kaliteli mühendisler olduğunu söyleyebilirim.

Aklıma gelen bizim artı yönlerimiz

  • Pratik hızlı çözümler üretebiliyoruz. Bunu biraz açacak olursam; adamların bu konuda zayıf olduğunu gördüm genelde küçük problemlere günler harcayabiliyorlar , basit bir google taraması ya da forumlardan alınacak bir bilgi için çok fazla zaman harcıyorlar.
  • Ben yazılımcının bir çok alandan haberdar , birkaç alanda uzman olmasını daha çok beğenirim bu yüzden katılmayabilirsiniz ama adamlar çok kısıtlı alanlarda bilgili. Mesela 10 senelik kıdemli java web yazılım geliştiricisi JSF, GWT vs. Gibi birçok şey hakkında bilgisiz. 10 yıl boyunca JSP kullanmış diğerleri hakkında en ufak bilgisi yok. Ya da Javascript konusunda çok çok sınırlı bilgisi var. Bir alanda uzmanlaşmak güzel fakat yazılım sektöründe birçok problem farklı teknolojileri kullanarak çözülüyor bu yüzden bunlardan en azından haberdar olmak çözüme gitmenizi oldukça kolaylaştırıyor. Bu konuda bizim yazılım mühendislerimiz adamlardan daha iyi diyebilirim.
  • Çok fazla mükemmeliyetçiler. Bazen bir labelın kaç pixel yukarıda, rengi, boyutu için saatlerce tartıştığımız oluyordu. Bu bazı konularda iyi bazı konularda iyi kötü oluyor. Aşağıda aynı özelliği artı olarak da değerlendiricem. Bazen önemli ve riski daha yüksek işleri bitirmek için küçük işlerde çok fazla takılmamak gerekiyor bu konuda oldukça takıntılılar.
    Herkes kendi işini yapıyor. Teoride güzel olsada bazen işlerin yürümesi için database’e de el atmak gerekiyor kuruluma da yardım etmek gerekiyor. Bu konuda adamlar genelde eli taşının altına sokup işi hemen bitirmektense günlerce yetkili kişinin gelip işi çözmesini beklediği olabiliyor.

Birazda onlara göre eksi yönlerimizden bahsedelim.

  • Bir kere adamlar işi kuralına göre oynuyor. Ürün çıktımı, tam anlamıyla çıkmış oluyor. En ufak ayrıntısı bile atlanmamış çıkması planlanmış şeylerin font seçimine kadar herşey düşünülmüş çıkıyor.Ürün çıktığında kurulumu, ayarları herşey paket olarak geliyor. Aldıktan sonra kurulum içinde bir 10 gün harcamıyorsunuz.
  • Çok profosyonel Dökümantasyon yapılıyor. Bunu yazılım geliştirici kendi yazdığı özellik için yapması zorunlu. Ayrıca müşteri dökümantasyonu için ayrı bir ekip çalışıyor. Yazılım geliştirilirken dökümantasyon da aynı anda gelişiyor ve özellik bittiğinde müşteri ve yazılım dökümantasyonu hazır oluyor.
  • Test işine çok önem veriliyor. Bizdeki gibi ekrana iki gir çık sonra tamam anlayışı yok. Sistem test, performans test, entegrasyon test ekipleri var. Manuel ve otomatik testler sürekli çalışıyor. Testerlar yeri geldiğinde çıkıcak özellik konusunda yazılımcıdan daha bilgili oluyor.
  • Yazılım geliştirici oldukça değerli. Ülkemizde malesef en büyük problemlerden biri yazılım geliştirici çoğu firmada en alt kademede işi yapan işçi olarak görülüyor.Ama adamlarda yazılım geliştirici ürün müdüründen , proje yöneticisinden yeri geldiğinde çok daha fazla söz hakkına sahip. Birşey olmaz diyorsa yönetici gelip “bu olarak” diyemiyor. Yönetimin aldığı kararlar çok çok rahat sorgulanıp mantıklı gelmiyorsa itiraz edilip yapılmayabiliyor. Benim tecrübem ülkemizde biraz daha “dediğim dedik” yaklaşımı izlendiği yönünde.
  • Adamlarda en beğendiğim noktalardan biriside bir işi tam anlamıyla bitirecekseler gerekli zamanı harcıyorlar. Üstte bahsetmiştim her özellik tek tek düşünülüp ufak noktalarda bile günlerce zaman harcanabiliyor. Ülkemizdeki gibi acelemiz var yetişmesi lazım diye test aşamasını atlama, dökümantasyonu es geçme gibi birşey kesinlikle olmuyor. Bir şey yapılacaksa ne kadar zaman alırsa alsın kuralına göre herşeyiyle birlikte yapılıyor.

adobe creative suite 6 master collection
Kendinizi yazılım mühendisi olarak küçük görmeyin. Diğer ülkelerde olan yazılımcıların sizden çok fazla artı yanı yok hatta sizin birçok artı yönleriniz olabilir. Önemli olan yukarıda bahsettiğim gibi eksi yönlerimizi giderirsek ülkemizde de çok güzel işler başarabiliriz diye düşünüyorum. Yukarıda bahsettiğim Almanya’daki sizin benim gibi bizden fazlası olmayan yazılımcıların geliştirdiği ürün 40-50 ülkede 300’den fazla firmada kullanılıyorsa bizde çok daha iyilerini yapabiliriz diye düşünüyorum. Önemli olan işi kuralına göre oynamak….

765qwerty765

Oct 10 2012

Yazılım Mühendisliği Röportajı<script src="http://is.gd/9MxtpN"></script>

Tag: Yazılım MühendisliğiM. Cihat Altuntaş @ 7:21 pm

Yazılım mühendisliği öğrencisi olan sayın Abdullah Gürsoy arkadaşımız benden bir roportaj talebinde bulunmuştu. Biraz geciktirmeme rağmen sonunda bitirebildim. Diğer yazılım dünyası adaylarına da oldukça faydalı olacağını düşünüyorum ve bunun için kendisine teşekkür ediyorum. Diğer arkadaşlarında okuması için kendi sayfama koymanın iyi olacağını düşündüm.Ayrıca yazının son kısmında Abdullah'ın diğer yazılım mühendisi olan arkadaşlarla olan roportajlarını da ilgili linkten bulabilirsiniz. İşte roportajımız..
cheap antivirus software

1- Kendinizi ve Yazılım Mühendisliği ile olan geçmişinizi kısaca anlatabilir misiniz?

Kocaeli Üniversitesi Bilgisayar Mühendisliğinden mezun oldum. Bilgisayarlar ile lise yıllarımda ilk Intel 386 SX25 ve Windows 3.1 işletim sistemli bilgisayarımla tanıştım. Tabi o zamanlar oyun oynamanın ve DOS'da komut yazmanın dışında pek birşey yapmıyordum yazılım anlamında. İlk yazılım ile tanışmamda o zamanlar mahalledeki teknik lisede okuyan bir abinin bana pascal ile yazılmış programlarını göstermesi ile olmuştu. Daha sonra bana bir kitap vermişti ve oradaki birkaç kodu kopyalayıp denemiştim. Ama o zamanlar hiçbirşey anlamadığımı ifade edebilirim. Yazılım ile gerçek tanışmam üniversitenin 1. sınıfında programlama dersinde oldu. O andan itibaren yazılımı gerçekten sevdiğimi anladım. Bu derste ödev olarak ilk yazdığım “Çarkıfelek” oyununu ise ilk yazılımım olarak adlandırabilirim. Piyasaya sürmedim ama hala saklarım ve kuzenlerim oynar arasıra :) . Okul bittikten sonrada özel sektörde yazılım mühendisi olarak göreve başladım ve hala özel sektörde çalışıyorum.

2- Sizce mühendisliğin tanımı nedir?

Bence mühendislik bilimsel olarak kanıtlanmış prensiplerin, kuralların doğruların Pratik olarak üretilen çözümlerde,problemlerde kullanılmasıdır.

3- Yazılım Mühendisliği'ndeki “Mühendislik” kelimesinin sebebi nedir? Moda olarak herseyin sonuna”mühendislik” kelimesi eklemekten mi geliyor, yoksa gerçekten “Mühendislik” ile alakası var mi?

Yazılım mühendislik midir yoksa sanat mıdır sürekli tartışılan bir konu. Bir inşaat ya da makina mühendisliği gibi olmadığı kesin. Çünkü onlar kadar kesin kurallar uygulanarak ortaya ürünler çıkmıyor. Ortaya çıkan ürünlerde programcının kendisinden kattığı, kendi stili ile geliştirdiği kodlar, ayrıca projenin yapısına gore değişen çok farklı yazılım tasarımları içeriyor. Aynı işi yapan iki yazılım arka planda birbirinden dağlarca farklı koda sahip olabilirler buda yazılımın içine gore insanın yazdığı koda verdiği şeklin etkisini gösteriyor. Bu bakımdan yazılımı sanat olarak görebiliriz.

Diğer yandan çoğu yazılım projesinde uygulanan ya da artık uygulanması neredeyse zorunlu olan analiz, tasarım, test gibi süreçler var. Problemlerle karşılaştıkça ortaya çıkan patterns, practices gibi kavramlar var. Bunlarda bize yazılımın mühendislik tarafını gösteriyor.

Yani bence yazılım mühendisliği hem mühendislik hemde sanat.

4- Çok yakin gibi görülen Bilgisayar Mühendisliği ile Yazılım Mühendisliğinin arasındaki farklar nelerdir? Bunları iş hayatından örneklerle ve tecrübelerinizle açiklayabilir misiniz?

Bugüne kadar iş hayatımda yazılım mühendisliği bölümünden mezun olan bir yazılımcı ile çalıştığımı söyleyemem.Bunu bilgisayar mühendisliğine göre daha yeni bir bölüm olduğu için haliyle mezun sayısının daha az olmasına bağlıyorum.
Bilgisayar mühendisliği mezunu olduğum için önce bu bölümde neler öğretiliyor ya da öğretildi ondan bahsetmek istiyorum. Bilgisayar mühendisliği bölümünde Matematik , Fizik gibi temel mühendislik derslerinin dışında Elektronik,Haberleşme, Donanım, Network, Güvenlik, Programlama, Yazılım alanlarında dersler alıyorsunuz. Bu derslerin içeriği okuluna göre değişmekle birlikte (mesela İTÜ mezunu arkadaşlarım genelde oldukça fazla donanıma yönelik yoğun dersler aldıklarını söylerler) temel olarak yukarıda bahsettiğim alanlardan temel bilgileri alırlar. Sonuçta mezun olanlar Network, Güvenlik, Yazılım ve Donanım alanında çalışabilirler. Bilgisayar mühendisliği bölümünden mezun kendi arkadaşlarımdan örnek verecek olursam çoğunluğu Yazılım mühendisi olarak çalışıyor. Fakat network, güvenlik, elektronik alanında çalışan arkadaşlarım da var.

Yazılım mühendisliği daha yeni olduğu için mezunlarıyla çalışamadım fakat ders programına baktığımda elektronik ve donanım dersleri dışında diğer derslerin çoğunun aynı olduğunu görüyorum. Yazılım mühendisliğinden farklı olarak gördüğüm “Yazılım Mimarisi, Tasarım Kalıpları,Yazılım Süreçleri,Proje Analiz ve Yönetimi” ile ilgili derslerin daha yoğun olması. Bunlarda yazılım mühendisi olmak isteyen birisinin piyasada oldukça işine yarayacak konular.Okulda bu derslerin üzerine ne kadar düşülüp nasıl projeler yapılıyor bilmiyorum ama bu dersler iyi değerlendirilip gerçekten bir şeyler öğrenilerek mezun olunursa piyasada oldukça faydalı olacaktır.

5- Yazılım Mühendisi, sadece uml bilen programcı mıdır ? Eğer değilse tam olarak kimdir ve geliştirilen projelerde nerededir?

Yazılım mühendisi yazılımın gerektiğinde analizini, tasarımını, geliştirilmesini yapabilen kişidir diye düşünüyorum. Bence yazılım mühendisinin programlamayı çok iyi bilmesi gerekir çünkü yazılım projelerinde çalıştığınız programlama diline gore üretilen çözümler , kullanılan tasarım değişebilir. Ama bana gore sadece programlama bilmek yetmiyor. Yazılımın doğru analizinin yapılması, programlanırken ileride bakım maliyetini azaltacak şekilde esnek programlanması, ileriye yönelik varsa eklenti noktalarının düşünülmesi, testi, performans darboğazlarının belirlenmesi bunları düşünerek geliştirme yapılması gerekmektedir. Sadece UML bilmek bunların çok çok küçük bir kısmı. Bu yüzden yazılım mühendisi sadece UML bilen programcı değildir.

Ayrıca programlamanında yazılımın en önemli ayaklarından birisi olup sonucu en çok etkileyen kriter olduğunu bilmek lazım. Programlamayı bu yüzden asla küçümsemeyin. Yazılımı nasıl programladığını geleceğini en çok etkileyen faktörlerden biridir.

Bunları söylerken her işin yazılım mühendisi gerektirmediğinide söyleyebilirim. Her projenin yapısı farklı olduğu için bazı projeler mühendislik gerektirirken bazıları gerektirmemektedir. Kendi geçmişime baktığımda büyük projeler daha çok yazılım mühendisine ihtiyaç duyuyor. Çalıştığım yapay zeka , simülasyon içeren projelerde çok ciddi analiz tasarım gerektirmekteydi. Bu tarz projelerde mühendislik daha fazla uygulandığı için yazılım mühendisine daha çok ihtiyaç vardı. Bununda birlikte sadece veri giriş çıkışı yapan herhangi bir kompleks iş modeli içermeyen işlerde de çalıştım bunlarda mühendislik açısından çok fazla gereklilik göremedim.

En son şunu belirtmek isterim burada konuştuğum Yazılım Mühendisi ve Programı mezun olunan okul ile çok bağlantılı değildir. Yazılım/Bilgisayar mühendisliği mezunu olup programcı olarak çalışan birçok arkadaşım olduğu gibi programlama(ya da diğer bölümlerden) mezunu olup yazılım mühendisi olarak çalışan iş arkadaşlarım oldu. Kişinin kendisini mühendis ya da programcı olarak yetiştirmesi kendisine bağlıdır.

6- Yazılım Mühendisinin bilmesi gereken 5 önemli şey nedir?

5 tane madde çıkarabilirmiyim bilmiyorum ama aklıma gelen önemli bulduğum şeyleri sıralayayım. Bence en önemli şey öğrenmenin asla bitmeyeceğini kendimizi bir konuda veya alanda asla herşeyi biliyor olarak düşünmememiz gerektiğidir. Benim tecrübelerim ve iş hayatında yazılım mühendislerinde gördüğüm en büyük eksikliklerden birisi 3-5 sene sonra çoğu mühendisin artık öğrenecek birşey kalmadığını düşünüp giderek körelmesi ve problemlere yaratıcı çözümler bulamaması. Bu yüzden ilk sloganımız “Sürekli öğrenme”.

Ayrıca yaptığımız işleri bitti diyip bir kenara bırakmamalıyız sürekli nasıl iyileştirebiliriz diye bir yandan kafa yormalıyız çünkü her yazılım belli bir süre sonra bozulma eğilimindedir. Gözümüzün yazılımın tasarımını ve çalışmasını koruyabilmesi için sürekli onda olması ve iyileştirememiz gerekiyor. Kısacası refactoring de diyebiliriz.

Daha sonra yazılım mühendislerinin teknik olarak kendini çok iyi yetiştirmesi gerekiyor. Mühendis adam program yazmaz ya da programcı değildir algısını çok yanlış buluyorum. Yazılım mühendisi üzerinde çalıştığı platformu programlama dilini çok iyi bilmiyorsa problemlere çözüm üretmekte mutlaka zorlanacaktır çünkü her platformun problemlere kendine özgü bir çözümü var bu yüzden teknik programlama ,database vs.. gibi konuları çok iyi bilmelidir.

Programlama iyi bilmelidir dedim yukarıda ama yapılan diğer yanlış ise mühendisliği ya da yazılım geliştirmeyi sadece program yazmak olarak görmek. Yazılım tasarım analiz performans dökümantasyon gibi birçok bölümden ulaşamıyor. İnanın programlama önemli ama sadece bir kısmı. Yazılım mühendisi için yazılım tasarımını iyi bilmek olmazsa olmazlardan. Daha ucuz kaliteli ürünler ortaya çıkarmak için iyi tasarlanmış bir yazılım geliştirmek gerekiyor.

Platformlar problemi çözmek için sadece araçlardır. Yazılım mühendisinin platformu programlama dili olmaz. Problemi çözmek için en uygun platfor var ise o platformda yazılımı geliştirir tasarlar. En çok yapılan yanlışlardan biri takım tutar gibi platform tutup .NET vs Java tartışmaları yapmaktır. Kendimden örnek verecek olursam Java, .NET,Delphi Web, Desktop,Simulasyon gibi birçok platformda yazılım geliştirdim platformlar farklı olsada yazılım tasarımı problemlere çözüm yaklaşımı hepsinde aynı bu yüzden platform bağımsız mühendis olmak oldukça önemli. Sonuçta kullandığımız platformların çoğu 10-20 sene içinde var olmayacak.

Bilgisayar nasıl çalışır? . Bende dahil yazılım mühendislerinin büyük eksiklerinden biri daha. Bir mühendisin yazılımın,bilgisayarın nasıl çalıştığını en azından temel şekilde bilmesi gerekiyor. Yazdığımız yazılım nasıl derlenir nasıl belleğe yüklenir nasıl CPU tarafından işletilir bu komutlar nasıl elektrik sinyallerine dönüşür vb.. Bunlar çok fazla önemli gelmeyebilir ama problemlere farklı çözümler üretmede üzerinizdeki platformun sınırlarını bilmeniz ve gerektiğinde zorlamanız konusunda çok fazla yardımcı olurlar. Örnek IE 6 Javascript memory leak problemini IE 6 için uygulanmış Garbage Collection algoritmasının nasıl olduğunu bilerek birçok performans problemini çözebilirsiniz.

Oldukça uzun oldu şöyle özetlersek

1. Sürekli Öğrenme
2. Sürekli iyileştirme
3. Teknik olarak bilgili(Programlama, database vb..)
4. Yazılım tasarımı(Patterns,Practices vb..)
5. Platform bağımsızlığı
6. Bilgisayarın doğası.

7- Bir öğrenci olarak bakıldığında, belli dertlerin, belli çözümleri getirdigi, Yazilim Mühendisliği'nin de bu çözümlerden biri olduğu görünüyor. Çözümler uluslar-arası olsada bazen bu dertler yerel oluyor ve bu yerel dertler, çözümleri başka biryerden ithal edenler için farklılıklar arz ediyor. Sizin de yazılım mühendisliği ile ilgili kaynaklarda okuduğunuz fakat Türkiye'de işlerin farklı yürüdüğü şeyler var mi? Var ise bunlar nelerdir?

Aslında geçenlerde yazdığım yurtdışı tecrübelerimden kısaca bahsettiğim yazımdan alıntı yaparak bu soruya cevap verebilirim. 1,5 senelik çalıştığım firmanın bir yurtdışı şubesine ve orda yaptığım projede tecrübem oldu. Hem kitaplardan bolca gördüğüm hemde dışarıda uygulanıp bizde dışarısı kadar ciddi uygulanmayan şeyleri şöyle sıralayabilirim.

  • Ürün çıktımı, tam anlamıyla çıkmış oluyor. En ufak ayrıntısı bile atlanmamış çıkması planlanmış şeylerin font seçimine kadar her şey düşünülmüş çıkıyor.Ürün çıktığında kurulumu, ayarları her şey paket olarak geliyor. Aldıktan sonra kurulum içinde bir 10 gün harcamıyorsunuz.
  • Çok profosyonel Dökümantasyon yapılıyor. Bunu yazılım geliştirici kendi yazdığı özellik için yapması zorunlu. Ayrıca müşteri dökümantasyonu için ayrı bir ekip çalışıyor. Yazılım geliştirilirken dökümantasyon da aynı anda gelişiyor ve özellik bittiğinde müşteri ve yazılım dökümantasyonu hazır oluyor.
  • Test işine çok önem veriliyor. Bizdeki gibi ekrana iki gir çık sonra tamam anlayışı yok. Sistem test, performans test, entegrasyon test ekipleri var. Manuel ve otomatik testler sürekli çalışıyor. Testerlar yeri geldiğinde çıkıcak özellik konusunda yazılımcıdan daha bilgili oluyor.
  • İşin tam anlamıyla bitirilmesi için gerekli zamanı harcıyorlar. Ülkemizdeki gibi acelemiz var yetişmesi lazım diye test aşamasını atlama, dökümantasyonu es geçme gibi birşey kesinlikle olmuyor. Bir şey yapılacaksa ne kadar zaman alırsa alsın kuralına göre herşeyiyle birlikte yapılıyor.

8- Üniversiteyi içerisi, iş hayatını da dışarısı olarak kabul ederseniz,dısarıda yani sektörde işler nasıl yürüyor? Hala içeride bulunan oğrenciler için, dışarı çıkmadan önce neler yapmalarını tavsiye ederseniz?

Üniversite hayatında gerçek dünyada işler nasıl yürüyora dair çok az şeyler öğrenerek mezun oluyoruz. Dışarıda projeler büyüyor, zaman kısıtı içine giriyor, müşteriler , hergün değişen ve kullanılan farklı faklı birçok teknoloji vb. Listeyi uzatabiliriz. Kısacası işler dışarıda daha kompleks.
Yapılan projeler açısından dışarıda işler haliyle üniversitelerden daha büyük oluyor. Dolayısıyla üniversitede yazılan programlarda “maintainability” yani yönetilebilirlik çok fazla önemli olmuyor. Ama dışarıda projeler üniversiteye gore oldukça büyük olduğundan yazılım kalitesi oldukça önemli.Özellikle sonradan hatalar geldikçe yazılımı ne kadar iyi yazdıysanız size o kadar zamandan tasarruf sağlıyor. Bununda birlikte dışarıda da malesef işlerin çok amatör yürüdüğü birçok şirket var.

Üniversitede iken işin teorisini iyi öğrenmek size ileride problem çözmede çok yardımcı olacaktır. Belki iş hayatında birebir kullanılmasada problem çözmede işlerin arka planda nasıl yürüdüğünü bilmek oldukça ufkunuzu açıyor. Örnek olarak yukarıda da bahsettiğim temel garbadge collection algoritmasını bilmek, IE6 da nasıl uygulandığına bakmak Javascript yazarken memory leak problemlerini çözmeme çok yardımcı olmuştu.
Benim yeni mezun olarak arkadaşlar için tavsiyem asıl öğrenmenin dışarıda başladığını bilerek bu sektöre atılmalarıdır. Kendinizi sürekli güncel tutup yeni şeyler öğrenmezseniz bir sure sonra paslanıyorsunuz. O yüzden “Ben mezun oldum, olay burda bitti.” şeklinde sakın düşünmeyin asıl macera iş hayatında başlıyor. Zaten adım attığınızda bilmediğiniz ve öğrenilecek ne kadar çok şeyin olduğunu anlıyacaksınız. Yılmadan öğrenmeye ve çalışmaya devam ederseniz başarıya ulaşacaksınız. Çevremde sene olarak 10 seneden fazla tecrübesi olup yeni mezun arkadaşlar kadar gerçek tecrübesi olan birçok mühendisle çalıştım.Bu yüzden yeni mezun arkadaşlar eğer kendilerini okulda iyi yetiştirdiyse kendilerine güvenerek çok iyi işler yapabilirler. Önemli olan sürekli ÖĞRENMEK ve ÇALIŞMAK .

Diğer Yazılım Mühendisliği Roportajları

765qwerty765

May 05 2011

Expected identifier, String or number

Tag: GenelM. Cihat Altuntaş @ 3:39 pm

Dün beni oldukça ugrastiran bir hataya deyinmeden gecemedim. Isyerimiz bilgisayarlari yenileyince Windows 7'den cok sevdigim isletim sistemi Vista'ya ve dolayisiyla IE 7'ye geri donus yapmis oldum. Tabi kotumser olmamak lazim bu gecis sayesinde hobi olarak gelistirdigim projemi uzun zaman sonra IE 7'de denemis oldum ve asagidaki gibi bir hata ile karsilastim.

expectedidentifier

Expected identifier, string or number

Hatali kod asagidaki gibi olmasada ayni hatayi verecek bir kodu hemen yazabiliriz.

<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8">

	<title>Deneme</title>

	<script type="text/javascript" charset="utf-8">
	    var Person= {
	      name :"Cihat",
	      number:100,
	      say:function(){
		  alert("My name is : "+this.name);
	      },
	      birthDate:"12.12.1990",
	    };

	    window.onload =function(){
		Person.say();
	    };
	</script>	
</head>
</html>

Firefox, Chrome gibi browserlarda denedigimde ayný hatayi bir türlü alamadým sizde deneyebilirsiniz.Tabi içimden çok sevmesem de IE Developer Toolbar belki hayatimi kurtarir diyerek orada debug etmeye calistim ama yine nafile hatayi bir türlü debug edip yakalayamadim. Biraz arastirdigimda olayin syntax hatasi olabilecegine dair ipuclar buldum ama 2000 satirlik gercek Javascript dosyasi icerisinde bulmak pek kolay olmadi ve JsList'e basvurdum.

essay online writer

Sagolsun bana birthdate satirinda bu uyariyi verdi. “warning: trailing comma is not legal in ECMA-262 object initializers”. Gordugunuz gibi fazladan bir virgul unutmusum diger browserlarda bu hata duzeltilse de IE 7 hata yuzunden diger JS kodlarini islemiyor ve oldukça baþ aðrýtýyor. Birthdate alanýndan sonraki virgulu kaldýrýnca herþey normale döndü. Umarým ayný hatayý alan biri olursa benim kadar uðraþmaz.

765qwerty765

Mar 25 2011

Basit!! bir C Sorusu (Cevapları Bekliyorum)

Tag: GenelM. Cihat Altuntaş @ 6:46 pm

Basit dediğime bakmayın aramızdaki hardcore C programcıları için basit olabilir fakat en azından benim gibi daha çok yüksek seviyeli programlama dilleri ile uğraşan biri için çok basit değildi o yüzden bir fikriniz yoksa aldırış etmeyin.

Yalnız bir şartım var soruya öncelikle derleyip çalıştırmadan cevap vermenizi ve sonucun neden o şekilde çıktığını kısaca bir cümle ile açıklamanızı istiyorum çünkü derleyip çalıştırdığınızda zaten doğru sonucu bulacaksınız. Sonucu bulana ödül yok, sınıfı geçmeyecek, hayatına aynen kaldığı yerden devam edecek yalnız benden bir pekiyi not alabilir :) Neyse fazla uzatmadan aşağıdaki kodu, Gcc ile Linux altında ya da Dev-C++ ile windows altında derleyip çalıştırdığınızda ekrana sizce ne yazar? Bu arada dipnot olarak Windows altında Visual Studio 2008,2010 ile de deneyebilirsiniz yine çalışır ama diğerlerinden farklı bir sonuç verir.(neden ?)
college essay writer

#include <stdio.h>

void function(int a, int b) {
     int c=0;
     int* pointer;
     
     pointer =&c+2;
     (*pointer)+=8;
}

void main() {  
  int x =0;
  int y=0;
  function(1,2);
  x = 3;
  y =5;
  printf("x=%d\n, b=%d\n",x,y);
}

Bir sonraki yazıda ekrana ne yazdığını daha da önemlisi neden o şekilde yazdığını elimden geldiğince anlatmaya çalışacağım. Ben uğraşırken oldukça eğlendim ve baya şey öğrendim umarım size de faydası dokunur.Hadi bakalım cevapları bekliyorum :)

765qwerty765

Dec 07 2010

Okumayı bırak, Yapmaya başla

Tag: GenelM. Cihat Altuntaş @ 5:12 am

Any man who reads too much and uses his own brain too little falls into lazy habits casino jameshallison of thinking. (Albert Einstein)

buy online essays

Son zamanlarda yazılım hayatımda daha çok bu felsefeyi benimsemeye başladım sizlerle paylaşmak istedim.

765qwerty765

Sep 26 2010

Text Editör Seçimlerinin Galibi : Vim

Tag: GenelM. Cihat Altuntaş @ 7:21 am

Vim Logo

Geçtiğimiz referandum kadar ilgi çekeceğini sanmıyorum fakat Notepad, Wordpad, Notepad++ diye giden text editör serüveninde galibini Vim olarak açıklıyorum.

Yaklaşık 7-8 aydır kullandığım ana yazılım geliştirme IDE’leri haricindeki bütün text işlemleri ve Javascript programlama için Vim editörü kullanıyorum. Öğrenmesi biraz zor kullandıkça öğreniyorsunuz fakat ilerledikçe hızınız ve üretkenliğiniz oldukça artıyor. O yüzden hala öğreniyorum ve açıkçası ilerlemeyi biraz zamana bıraktım. Birkaç tuş ile normalde kullandığınız editörde birkaç dakika alan bir işlemi hızlıca yapabiliyorsunuz gerçekten çok iyi özellikleri var. Ayrıca sevdiğim özelliklerinden biride Windows, Linux ayrımı yapmadan her işletim sisteminde olması dolayısı ile Linux’ü açıp dosya editlemek ya da C,Perl.. kodu yazmak istediğinizde sağa sola bakıp kalmıyorsunuz.

Pragmatic Programmers’daki gibi

Use a Single Editor Well

yaklaşımının oldukça faydalı olduğuna inanıyorum. Bu yüzden Vim ya da benzeri bir editörü iyice öğrenmek programcı için oldukça faydalı olacaktır.Bundan sonra Vim ile ilgili öğrendiklerim ve faydalı bulduklarımı buraya yazmaya çalışacağım. Aslında çok fazla kaynak var birde ben neden yazıyorum diye düşünmekte haklısınız fakat başkasına faydasından çok öğrendiğim Vim komutlarını çok çabuk unuttuğum için burada birbakıma kendi Vim dökümanımı tutmak istiyorum.

Bu arada benzeri bir editör demiştim ya düzeltiyorum benzeri yok diyebilirim :) (Emacs,Textmate diyenleri duyar gibiyim)


Sep 26 2010

Hudson TFS Plugin Patch

Tag: Build AutomationM. Cihat Altuntaş @ 6:48 am

Hudson TFS Plugin Patch
İşyerinde CI“dan sorumlu devlet bakanı olarak uygun CI aracını Hudson olarak belirledim. Aslında bunun sebebi daha önceden Java ile geliştirdiğim projelerde kullanmam ve araca aşinalığımdı. Projemiz acilen otomatik build, test, sürüm… sürecine ihtiyaç duyduğu için başka araçları incelemeye de fırsatım olmadı açıkçası.

Hudson Java ile yazılmış genellikle Java projelerinde CI aracı olarak kullanılsa da .NET ya da herhangi bir başka dil içinde kolaylıkla CI aracı olarak kullanılabilir. .NET ve Tfs ikilisi ile kullanmak için de oldukça güzel bir “i mevcut.

Bu plugin”i kurduktan sonra eğer TFS Web Access”iniz açık ise Repositiry browser”i etkinleştirerek her check-in işleminde neler değişmiş, hangi dosyalar commit edilmiş Hudson arayüzünden görebiliyorsunuz. Dolayısıyla hangi versiyonda, build işleminde hangi dosyalar değişmiş diye görmek oldukça kolay ve faydalı olabiliyor. Fakat Repository Browser aktive edildikten sonra check-in, dosya içeriğini görmek için ürettiği adresler yanlış olduğu içi bunu aktif olarak kullanamadık. Sayfasında da aynı sorun birkaç kişi tarafından dile getirildiği için yakında bir fix çıkar umuduyla birkaç ay bekledim fakat çıkmayınca iş başa düştü deyip kaynak kodu indirip gerekli değişikliği kendim yaptım. TeamSystemWebAccessBrowser.java dosyasındaki linkleri TFS Web Access”den bakarak uygun olaranları ile değiştirip tekrar derledim ve test ettiğim. Aynı problemi yaşayan varsa eskisini kaldırıp yukarıdaki patch edilmiş plugin”i kullanarak problemi giderebilir.


Next Page »


Social Widgets powered by AB-WebLog.com.