Google Analytics İzleme

30 Temmuz 2010

Yalnızlık, sigara kadar zararlı

Çağdaş Batı toplumunun karakteristik özelliklerinden biri haline gelen yalnızlığın insan sağlığına en az sigara kadar zararlı olduğu tespit edildi. Buna göre iyi bir akraba ve dost çevresi olan insanın hayatta kalma şansı yüzde 50 daha fazla. Diğer yandan Almanya'daki çocuklu ailelerin beşte biri baba veya annesiz.

Yapılan bir araştırma, boşanmaların tavan yaptığı batı toplumunun en büyük sorunlarından birine dönüşen yalnızlığın en az sigara kadar sağlığa zararlı olduğunu ortaya koydu. 300 bin insan üzerinde yapılmış toplam 84 araştırmayı analiz eden uzmanlar uyardı; yalnızlık, hareketsizlik ve şişmanlıktan daha tehlikeli, en az sigara kadar riskli. Bilim adamları araştırmayla, sosyal bağ ve ilişkilerin insan için ne kadar hayati öneme sahip olduğunu bir kez daha tespit etti. Günümüzde insanların daha uzun yaşamak için beslenmeden spora kadar birçok açıdan çaba harcadığını hatırlatan bilim adamları ancak uzun bir yaşam için bunları yapmak ve sigara içmekten sakınmanın yeterli olmadığını kaydediyor. Araştırmaların analizini Amerika Birleşik Devletleri'nin (ABD) Utah kentinde bulunan Brigham Young Üniversitesi'ndeki bilim adamları yaptı. Analize göre, iyi bir dost, arkadaş ve tanıdık çevresi olan insanların hayatta kalma şansı yüzde 50 daha fazla. Araştırmada yaş ortalamaları 64 olan 300 bin insanın durumu 7.5 yıl boyunca izlenerek, sahip oldukları sosyal çevreye göre karşılaştırıldı. Uzmanlar, dost, akraba ve sosyal çevre sahibi olmamanın insan üzerindeki olumsuz etkisinin sigaranın olumsuz etkisine denk olduğunu tespit etti. Bu etki, yine sağlığa zararlı olan hareketsizlik ve obeziteden çok daha fazla.

ALMANYA'DA BEŞ AİLEDEN BİRİ BABA VEYA ANNESİZ

Diğer yandan aile kavramının sürekli yıprandığı batı toplumunda insanların yalnızlaşması gün geçtikçe artıyor. Doğum oranlarında Avrupa sonuncusu olan Almanya'da tek başına çocuk yetiştiren anne veya baba sayısını 90'lı yıllardan sonra hızla arttığı, artık her beş aileden birinin ya babasız veya annesiz olduğu bildirdi. Bu durumun, başta çocuklar olmak üzere aile bireyleri üzerindeki sosyal ve psikolojik etkilerinin yanı sıra ekonomiye de büyük zarar verdiği belirtiliyor. Rakamlara göre Almanya'da yalnız başına çocuk büyüten annelerin yüzde 30'u devletin verdiği sosyal yardımla geçiniyor. Alman Federal İstatistik Dairesi'nin "Mikrozensus 2009" raporu kapsamında verdiği bilgilere göre 2009 yılında Almanya'daki küçük çocuk sahibi olan ailelerin yüzde 19'u, yani yaklaşık beşte biri parçalanmış bir aileden; ya babasız veya annesiz bir aileden oluşuyor. Yani Almanya'da, aile ortamında büyüyen küçük çocukların beşte biri ya yetim veya öksüz büyüyor. Fazla değil 1996'da bu rakam toplam ailelerin yüzde 14'ü, yani yedide birine tekabül ediyordu. 1996'da 1.3 milyon olan tek başına çocuk büyüten anne veya baba sayısı 2009'da 1.6 milyona ulaştı. Diğer yandan ülkede reşit olmayan çocuk sahibi aile sayısı da hızla azalıyor. 2006'da 9.4 milyon olan çocuk sahibi aile sayısı 2009'da 8.2 milyona düştü. Bilim adamları sosyal yaralar bir yana, tek başına çocuk büyüten ailelerin diğer ailelere göre daha fazla yoksulluk riskiyle karşı karşıya olduğunun altını çiziyor. 2009 yılı rakamlarına göre Almanya'da yalnız başına çocuk büyüten annelerin yüzde 31'i aylık 1100 Euro'nun altında bir gelirle çocuklarını geçindirmeye çalışıyor. Bunların neredeyse tamamı bu geliri, devletin karşılıksız olarak verdiği Hartz IV sosyal yardımı ile temin ediyor. En fazla bu durumda olanlar ise üç yaşından küçük çocuk sahibi anneler. Tek başına çocuk büyütenlerin yüzde 62'si ise aylık 1100 ile 2600 Euro arasında bir gelire sahip.

ABD'deki araştırmaya katkı sunan Kanadalı bilim adamları insanın yalnızlığının öncelikle negatif psikolojik etkileri olduğunun altını çiziyor. Kanadalı araştırmacılar, kendini yalnız hisseden bir insanın örneğin daha hızlı donmaya başladığını, bir odanın sıcaklığını diğerlerinden daha soğuk hissettiğini tespit etti. Chicago Üniversitesi bilim adamları ise kendini yalnız hissetmenin bir hastalık virüsü gibi olduğunu vurguluyor. Araştırmacılar yalnızlığın ayrıca kalp hastalıkları, savunma sistemininde zayıflık, uyku problemleri, uyuşturucu bağımlılığı gibi birçok rahatsızlığa yol açabildiği vurguluyor.


Linq SingleOrDefault ve FirstOrDefault

Linq kullanırken tek bir eleman çektiğimiz zaman hem first hemde single olması kafa karıştırıcı değil mi ? Aslında buna verilen cevap "birisi ilk eleman birisi tek eleman" şeklinde olur. Aslında bu tanım yeterince açıklayıcı ama ben biraz daha detaya inerek anlatmak istedim.

Öncelikle bilmeniz gereken şu :
Single : Tek bir eleman döndürdüğünden emin olduğunuz sorgular için kullanın, eğer sorgu birden fazla eleman döndürecek olursa hata oluşacaktır.
SingleOrDefault : Hiç eleman dönmez ise generic tipin varsayılan değerini ya da nothing değeri dönecektir. Yine birden fazla değer varsa hata verir.
First : Dönen sorgu sonucunun ilk elemanını döndürecektir. Bu tek bir string ise char dizisi olarak kabul edilip ilk karakteri alınır.
FirstOrDefault : Hiç eleman dönmez ise generic tipin varsayılan değerini ya da nothing değeri dönecektir.

biraz daha detaya inecek olursak

first fonksiyonu çalışırken şu adımları izler:

  1. Tampon bir list , sonuç kümesi (IEnumerable) ile doldurulur
  2. Tampon listenin Nothing olup olmadığına bakılır
    • Nothing değil ise :Tampon listenin ilk elemanı 0 index numarası çağırılarak gönderilir
    • Nothing ise : Bu küme list'e aktarılamıyordur bu yüzden bir IEnumerator nesnesine gönderilir ve bir sonraki kayıt alınmaya çalışılır.
  3. Eğer hala bir şey döndürülmemiş ise first için bir kayıt yok hatası,FirstOrDefault için ise nothing döndürülür.

birde single a bakalım :

  1. Tampon bir list , sonuç kümesi (IEnumerable) ile doldurulur
  2. Tampon listenin Nothing olup olmadığına bakılır
    • Nothing değil ise Listenin eleman sayısına bakılır :
      • 0 ise eleman yok  hatası.
      • 1 ise listenin 0 index numaralı elemanı döndürülür
    • Nothing ise Bu küme list'e aktarılamıyordur bu yüzden bir IEnumerator nesnesine gönderilir
      • bir sonraki kayıt alınamıyorsa kayıt yok hatası döndürülür
      • bir sonraki kayıt tampon bir değişkene alınır
      • bir sonraki kayıt alınamıyorsa alınan tampon sonuç olarak döndürülür
  3. Eğer hala bir şey döndürülmemiş ise first için bir kayıt yok hatası,SingleOrDefault için ise nothing döndürülür.

görüldüğü üzere single'ın performans için bir faydası yok, hatta fazladan bir kaç karşılaştıma yapılmakta. Eğer tek kayıt dönmesi gereken bir sorgudan birden fazla dönmesini yakalamak istediğiniz bir durum olursa kolaylıkla try bloğu içerisind tanımlayabilirsiniz.Ama birden fazla da dönse ilk kayıt sizin için yeterli oluyorsa First / FirstOrDefault kullanın.

not: .net fonksiyonlarının işleyişlerini görebilmek  için reflector programını kullanabilirsiniz.

Alıntı: http://www.cihanyakar.com/?p=213


21 Temmuz 2010

Windows Workflow Foundation bilmeyen kalmıyor...

Türkiye’de ki, .NET konusunda bilgi paylaşan en aktif kişilerin başında gelen Burak Selim Şenyurt(MVP) hazırladığı Workflow Foundation görsel dersleri ile Workflow Foundation nedir, ne değildir,neler yapabiliyoruz,nasıl yapabiliyoruz gibi kavramları anlatıyor. Başlangıç ya da ileri seviye bilgisi olan herkese hitap ettiğini düşünüyorum. Mutlaka zaman ayırıp bakın derim…Cidden faydalı…Cidden…

  1. Workflow Foundation Öğreniyorum – Ders 0 – Hello World
  2. Workflow Foundation Öğreniyorum – Ders 1 – Biraz Daha Bileşen
  3. Workflow Foundation Öğreniyorum – Ders 2 – Kodla Başbaşayız
  4. Workflow Foundation Öğreniyorum – Ders 3 – Yeni Bir Yüz – Flowchart
  5. Workflow Foundation Öğreniyorum – Ders 4 – Flowchart için Ek İşlemler
  6. Workflow Foundation Öğreniyorum – Ders 5 – Argument Kavramı ile Tanışalım
  7. Workflow Foundation Öğreniyorum – Ders 6 – Expression Activities
  8. Workflow Foundation Öğreniyorum – Ders 7 – Homework
  9. Workflow Foundation Öğreniyorum – Ders 8 – Exception Handling

Devamını da takip ediyor olun da derim…Aha da dedim… :)

Alıntıdır: http://www.minepla.net/2010/06/windows-workflow-foundation-bilmeyen-kalmyyor/


Web Matrix yeniden mi türedi yoksa…

Asp.Net ilk çıktığı zaman Asp.Net Web Matrix diye oldukça basit bir IDE çıkarmıştı Microsoft…Daha sonra Visual Studio’nun alıp başını gitmesi ile, sessiz sedasız kayboldu gitti…Eminim hatırlayanlar olacaktır…Neyse konumuz Asp.Net Web Matrix değil…Yani en azından içerik bakımından…

Bugün itibari ile Microsoft, WebMatrix adında yeni bir araç çıkardı. Şu an Beta olan bu araç, oldukça faydalı bir araç aslında… WebMatrix, Windows ortamında Visual Studio olmadan basitçe Asp.Net uygulamaları geliştirebileceğiniz bir ortam. Ortam diyorum çünkü içerdiği IIS Express Edition,SQL Server Compact Edition ile ciddi anlamda dolu dolu bir içeriğe sahip. WebMatrix ile Microsoft, geçtiğimiz günlerde duyurulan Asp.Net’in yeni “View” motoru “Razor”u da bu araç ile de test edebilirsiniz.

Bu adresten daha ayrıntılı bilgilere ulaşabilirsiniz. Yetmez ise Scott Guthrie’nin bu yazısı oldukça yeterli olacaktır.

Alıntı: http://www.minepla.net/2010/07/web-matrix-yeniden-mi-turedi-yoksa/


20 Temmuz 2010

ASP.NET'de Oturumu Kapatmak (Session Abondon ve FormsAuthentication.SignOut())

Söz gelimi btnOturumuKapat.Click() olayına:

Session.Abandon();
FormsAuthentication.SignOut();

yazıldığında açık Session’lar ve Oturum kapatılır. Bu işlemlerden sonra bir de Response.Redirect(“Default.aspx”) şeklinde bir yönlendirme yaparsanız hiç de fena olmaz.

Alıntı: 

.Net içinde FluentValidation kullanımı ve validation(geçerlilik, onaylama) işlemleri

Mehmet Aydın Ünlü, bu yazısında FluentValidation yardımıyla Validasyon işlemlerini ve önemini ve nasıl kullanılacağı çok güzel şekilde anlatılmış.



19 Temmuz 2010

'Doğru bir özelleştirme' olarak Türk Telekom

TT'nin yüzde 55'ini satın alan Oger Telekom'un birçok Ortadoğu ülkesinde ve Asya'da faaliyetleri var. Hal böyle olunca bu birimler arasındaki sinerjiyi üst düzeye taşımak adına bir araya geliyorlar.

TT özelleştirmesi, çok tartışılan bu konuda isabetli bir örneği teşkil ediyor. Bu konuda 4 kriter var: Özelleştirme sonrası sıfırdan yatırımlara devam ederek zamanla istihdam oluşturmak. İhracata katkıda bulunarak ülkeye döviz kazandırıp cari açığa olumlu katkıda bulunmak. Teknoloji transferine ve bunun yerlileştirilmesine yardım etmek. Ve nihayet, kaliteli hizmet ve rekabete ilaveten Hazine'ye iyi bir vergi geliri aktarmak.

TT'yi bu 4 kritere göre incelemek istiyorum. Yukarıdaki hedeflere varabilmek için özelleştirme sonrasında şirketlerin verimlilik ve kârlılık esasına göre yeniden yapılandırılması şarttır. KİT mantığı bunu ihmal eder. Zira genel olarak KİT'ler verimsizlikten kaynaklanan pahalı üretim sorununu tekel rantı oluşturarak kâra tahvil etmeye ya da zararları sübvanse etmeye dayanır. Hem Türkiye hem de dünya örnekleri ağırlıklı olarak bu yönde. Bilhassa 90'lı yıllarda Türkiye'nin kronik sorunları sisteme buradan nüfuz etmiştir.

İlk bakışta çalışanlar lehine gözüken ve sendikaların alkışını alan bu durum kamu açıkları, enflasyon ve yüksek faiz olarak dönüp uzun vadede toplumun zararına netice vermiştir. Böyle bir yapı ekonomiyi ne kadar çok domine ederse, uzun vadede ekonomide 'mübadele maliyetleri' iktisadi rasyonaliteyi ortadan kaldıracak kadar yükselir. Bu durumda özel sektör kovulur, girişimcilik ölür, piyasa aksaklıkları had safhaya çıkar, toplumsal refah açısından gerekli üretim oluşmaz. Ya da devlet tümüyle batağa saplanana kadar süreç sübvansiyonlarla, bütçe açıkları ve kamu borçlarıyla gittiği yere kadar diretilir.

Günümüzde altın kural belli: Hem kaliteyi artırıp markalaşacaksınız, hem de fiyatları düşüreceksiniz. Bunun yolu inovasyon ve verimlilik adlı 2 kritik kavramdan geçiyor. Ticarete konu olan sektörlerde çok yatırım, az istihdam ve düşük kârlılık çağındayız. Bunun yanına bir de Çin ve benzer ülke sendromlarını koyunuz. Bu şartlar altında herkesin diline doladığı 'istihdam dostu büyümeyi' daha çok ticarete konu olmayan sektörlerde arayabiliriz.

TT örneğinde de bütün bu 'rasyonelleşme' çabalarını görüyoruz. Zira rekabette fiyatlar sürekli düşerken şirketler yeniden yapılanıyor. Bu sebeple TT'nin 2005'teki özelleştirilmesi sonrasında beklendiği gibi hem istihdamda, hem de ödediği vergilerde büyük düşüşler yaşandı. Kurum özelleştirme öncesinde örneğin, 2004 ve 2005 yıllarında sırasıyla 1,1 ve 1,3 milyar TL'nin üzerinde Kurumlar Vergisi öderken, rakam 2008 itibarıyla 650 milyon TL'ye kadar düştü. 2009'da biraz daha artmış. Buna rağmen 2007 yılında vergi rekortmeni, 2008 yılında ise Turkcell'in ardından 2. olduğu göz önüne alındığında, vergilerdeki azalmanın sadece TT'nin bir sorunu olmadığı anlaşılıyor. Petrol pahalanınca vergide bu alandaki şirketler ön plana çıktığı gibi, 2009 krizinde de malı götüren bankalar vergide öne çıkmış. İlk 10 kurumun yedisi banka!

Tekel rantı ile kârlı olan TT'de istihdam sadece çok şişmiş değil, aynı zamanda demografik yapı ve beşerî sermayenin niteliği de bu sektörün gittiği yer açısından pek elverişli değildi. Çok pahalı hizmetlerle kâr edip istihdam oluşturabilirsiniz, ancak hem toplum buna itiraz eder, hem de rekabette yaşayamazsınız. İşte bunun zorladığı değişim baskısı altında 45 bin civarındaki çalışan sayısı bir ara 25 binlere kadar düştü. (Büyük kısmı kamuya geçti) Ancak büyüme ve yatırımlara paralel olarak şimdi yeniden işe alımlar başladı ve istihdam 30 bin bandına çıktı. Böylece genç, dinamik, sektöre layık eğitim alan bir kadro kuruldu. İlaveten bu işe almalar, Türkiye'nin dört bir yanına yayılmış durumda.

Yazar: İBRAHİM ÖZTÜRK

Alıntı


17 Temmuz 2010

Coolite Ext FileUploadField kontrolünde tabIndex ataması

FileUploadField kontrolünde TabIndex özelliği render olan kontroldeki textbox nesnesine atama yapmaktadır. Fakat biz dosya seçme butonuna tabIndex vermek istersek, aşağıdaki şekilde customconfig ataması ile yapabiliriz.

<ext:FileUploadField ID="fufAttachment" runat="server" 
                                                Width="200px" TabIndex="5" ButtonText="Seç..."  >
                                                <CustomConfig>
                                                    <ext:ConfigItem Name="buttonCfg" Value="{ tabIndex: '6' }" > </ext:ConfigItem>
                                                </CustomConfig>
                                            </ext:FileUploadField>


15 Temmuz 2010

Coolite Ext RadioGroup içinde seçilen radio item bilgisine server side tarafında elde edememe hatası

Eğer RadioGroup kontrolünün radio item'lerinde inputValue configitem'i tanımlarsak, server side tarafında seçilen radio item'in değerine veya seçili olup olmadığının bilgisine ulaşılamamaktadır.

Aspx Markup kodu:

<ext:RadioGroup ID="rgWillBeScheduling" runat="server" ColumnsNumber="2" AllowBlank="false"
                                                                            StyleSpec="padding-left:10px; padding-top:10px;">
                                                                            <Items>
                                                                                <ext:Radio runat="server" ID="Radio1" BoxLabel="Evet">
                                                                                    <CustomConfig>
                                                                                        <ext:ConfigItem Name="inputValue" Value="'EVET'">
                                                                                        </ext:ConfigItem>
                                                                                    </CustomConfig>
                                                                                    <Listeners>
                                                                                        <Check Handler=" if(el.checked){ Ext.getCmp('extpnlScheduleInfos').show(); }" />
                                                                                    </Listeners>
                                                                                </ext:Radio>
                                                                                <ext:Radio runat="server" ID="Radio2" BoxLabel="Hayır">
                                                                                    <CustomConfig>
                                                                                        <ext:ConfigItem Name="inputValue" Value="'HAYIR'">
                                                                                        </ext:ConfigItem>
                                                                                    </CustomConfig>
                                                                                    <Listeners>
                                                                                        <Check Handler=" if(el.checked){ Ext.getCmp('extpnlScheduleInfos').hide(); } " />
                                                                                    </Listeners>
                                                                                </ext:Radio>
                                                                            </Items>
                                                                        </ext:RadioGroup>


<ext:Panel ID="extpnlScheduleInfos" runat="server" Border="false" Hidden="true" HideMode="Display" HideParent="true" >
                                                                <Body>
                                                                    <table cellpadding="0" cellspacing="0" border="0" id="tableCizelgelemeBilgileri"
                                                                        style="">
                                                                        <tr>
                                                                            <td style="width: 160px;" align="right">
                                                                                <ext:Label ID="Label28" runat="server" Text="Çizelgeleme Zamanı ve Periyodu:">
                                                                                </ext:Label>
                                                                            </td>
                                                                            <td style="width: 210px;">
                                                                                <ext:TextField ID="tfScheduleDateAndPeriod" runat="server" AllowBlank="false" Width="210px">
                                                                                </ext:TextField>
                                                                            </td>
                                                                            <td style="width: 15px;" class="cssTdStar">
                                                                                <asp:Label ID="Label29" runat="server" Text="*"></asp:Label>
                                                                            </td>
                                                                        </tr>
                                                                        <tr>
                                                                            <td style="width: 160px;" align="right">
                                                                                <ext:Label ID="Label30" runat="server" Text="Raporun Dağıtılıcağı Mail Adresleri:">
                                                                                </ext:Label>
                                                                            </td>
                                                                            <td style="width: 210px;">
                                                                                <ext:TextField ID="tfMailAddressesToSendReport" runat="server" AllowBlank="false" Width="210px">
                                                                                </ext:TextField>
                                                                            </td>
                                                                            <td style="width: 15px;" class="cssTdStar">
                                                                                <asp:Label ID="Label31" runat="server" Text="*"></asp:Label>
                                                                            </td>
                                                                        </tr>
                                                                    </table>
                                                                </Body>
                                                            </ext:Panel>


Server-Side Kod:

protected void buttonComplete_Click(object sender, Coolite.Ext.Web.AjaxEventArgs e)  
{

newPPMRequest.WillBeScheduling = rgWillBeScheduling.Items[0].Checked ? "EVET" : "HAYIR"; // EVET 0. index oluyor //rgWillBeScheduling.CheckedItems[0].Value.ToString();
                if (newPPMRequest.WillBeScheduling.ToString().ToUpperInvariant().Equals("EVET"))
                {
                    newPPMRequest.ScheduleDateAndPeriod = tfScheduleDateAndPeriod.Text;
                    newPPMRequest.MailAddressesToSendReport = tfMailAddressesToSendReport.Text;
                }

}

Burada rgWillBeScheduling.Items[0].Checked sürekli false olarak gelmekte veya rgWillBeScheduling.CheckedItems koleksiyonu hiç dolmamaktadır.

Markup kodunda radio item'lerine tanımlanan custom config tanımlamaları kaldırılırsa sorun düzelmektedir.

<CustomConfig>
                                                                                        <ext:ConfigItem Name="inputValue" Value="'EVET'">
                                                                                        </ext:ConfigItem>
                                                                                    </CustomConfig>



<CustomConfig>
                                                                                        <ext:ConfigItem Name="inputValue" Value="'HAYIR'">
                                                                                        </ext:ConfigItem>
                                                                                    </CustomConfig>



IT Dünyası Kırmızı Alarmda

IT dünyasının yaş ortalamasının artması ve çalışma stratejilerinin yanlış uygulanması, her üç kişiden birinin Burnout sendromuna maruz kalmasına yol açıyor.

Aylar önce Burnout sendromundan bahsetmiştim. İşleri yetiştirmek için hafta sonu çalışmak zorunda olan kişilerin, ailelerini hafta sonu görmediklerini ve bu yüzden de büyük bir hayal kırıklığına hatta hüsrana uğradıklarını söylemiştim (Bilişim Dünyasının Hayal Kırıklıkları).

Bu kişilerde, Tinnitus (Kulak çınlaması), depresyon ve Burnout (Biz buna sigortaların yanması diyoruz) gibi hastalıklar ortaya çıkması, birçok şirketi alarma geçirmişti.

 

Burnout Vakaları Arttı

Tam 6 ay geçti ve bu araştırmayı yapan DIWA-IT , Duisburg-Essen üniversitesi ile birlikte yeni bir rapor yayınladı. Yayınlanan bu rapora göre Avrupa'da durum daha da kötüleşti.

IT çalışanlarının %33'ü Burnout sendromunu etkili bir şekilde yaşıyor. Araştırma sonucunda IT uzmanlarının %37'lik bir kesimi, durumu idare ediyor. Yalnızca %29'luk bir kesim, eve gittiğinde, iş hayatını özel hayatından ayırabiliyor.

 

http://static.shiftdelete.net/img/article/burnout11278593785.jpg

 IT çalışanlarının %33'ü Burnout sendromunu etkili bir şekilde yaşıyor.

 

30 ve 50 yaş aralığında IT uzmanları, terfi olduklarında, çoğunlukla problemlerle savaşmak zorunda kalıyorlar. Bu kişiler yeni işlerine hemen adapte olamıyorlar ve hazırlanma süreci olmadan hemen kendilerini işe vermeleri isteniyor. Bu da kişileri ciddi bir şekilde etkiliyor.

Sürekli hareket halinde olan ve müşteri ile IT şirketleri arasında mekik dokuyan kişiler, %67'lik bir oran ile en çok etkilenen çalışanlar. Özellikle birçok işi aynı anda yapan veya birçok projenin sorumlusu olan 40-60 yaş arasındaki çalışanlar, oldukça fazla etkilenmiş durumda (İnsan Yazıcı İlişkisi).

Bu kişiler patronlarının emirlerini yerine getiren kişiler olarak görülüyor. Birçok birbirinden bağımsız projeyi koordine eden bu uzmanlar, işin işleyişinden ve görüşmelerden sorumlu.

Tabii burada genç olarak tabir edilen IT dünyasının günümüzde yaş ortalamasının arttığını da göz önünde bulundurmak lazım. 1999 ve 2009 yıllarını ele aldığımızda, 50 yaş üstü çalışan kişilerin sayısı %12.5'den 18.5'e yükselmiş durumda. Aynı zaman diliminde 25-39 yaş arası çalışanlar, %55.9'dan 41.8'e inmiş. Bu da ister istemez bu sendromun yükselişine de neden oluyor.

Çalışanların Sağlığı Tehlikede

IT dünyası sürekli bir yatırımın içinde. Bu alanda çok fazla değişiklik yapılıyor. Bu da ister istemez insanın aklına şu soruyu getiriyor: "IT uzmanları, sürekli gelişen bu piyasada, emekliliğe sağlıklı bir şekilde ulaşabilecek mi?".

Araştırmaya göre, çalışanların sağlıklı ve verimli çalışabilmeleri için iş şartlarının ciddi bir şekilde düzeltilmesi şart. Ancak bu yapıldığında kişiler uzun ve sağlıklı bir şekilde şirketlerine faydalı olabiliyor (Teknoloji Dünyası Bunları da Duydu!).

Araştırmacılar bu yüzden Burnout'un tersine bir etki için çeşitli yollar denedi. Örneklerde, yöneticileri her konuda desteklemenin, çalışma temposunu yükselttiğini ve toplantılarının arttığını gördüler. Çalışma esnasında verilen küçük molalar da çalışanları olumlu yönde etkiledi.

http://static.shiftdelete.net/img/article/burnout21278593757.jpg

Araştırmaya göre Burnout sendromu birçok farklı etkilere sahip. Her bir birey bu sendromu farklı yaşayabiliyor.

 

Çalışma ortamında gözlenen önemli bir sorun, çalışanların telefon veya iş arkadaşlarının soru sormalarıyla işlerinin bölündüğü gözlemlendi. Özellikle yüksek konsantrasyon gerektiren işlerde böyle bir bölünme ciddi sorunlara yol açabilir (9 Yaşından Küçüklere Zararlı).

Çözüm olarak kişinin sadece belirli saatlerde rahatsız edilebilmesine karar kılındı. Buna ek olarak e-postalarının cevaplanması ve organizasyon işleri için bir gün belirlendi. Bu sayede de daha düzenli, huzurlu ve verimi yüksek bir çalışma temposuna ulaşıldı.

Öğle Tatili Çok Önemli

Bu konu ile ilgili birçok araştırma mevcut. Burnout, daha çok yoğun bir tempoda çalışan, mesai yapan ve zorunlu olarak erişilebilir durumda olan kişilerde görülüyor. Çok fazla seyahat eden, proje yöneticisi konumunda olan ve birçok projede aynı anda çalışan kişilerde bu sendromun oluşması yüksek bir olasılık (IBM'den Yeni Sağlık Projesi).

Araştırmacılara göre öğle tatiline çıkmak şart. Buna ek olarak arada mola vermek de kişinin çalışma temposunu yükseltiyor. Çalışan her iki saat sonunda 5 ile 10 dakika ara vermeli. Bu işlem yapıldığında çalışanlar daha rahat, yorulmadan ve yüksek bir verimlilikle günü bitirmiş oluyor.

http://static.shiftdelete.net/img/article/burnotpromo31278593734.jpg

Özellikle yeni işe başlayan proje yöneticilerinin %57'sinde Burnout vakası görülüyor. Bu proje yöneticilerinin müdürleri %13'lük bir oran ile etkilenmiş durumda.

 

Fakat işverenler bu tür molalara izin vermiyor. Özellikle, bir hayli yoğun olan işlerde, bu tür aralar kabul görmüyor. İşveren buradaçalışma saatine bakıyor ve çalışanın ihtiyacı olan araları hiçe sayıyor. Bu da işyerini uzun bir vadede olumsuz yönde etkiliyor.

Yinede bazı şirketler bu durumu iyi kavramış olmalı ki, çalışanlar için rahatlama teknikleri uyguluyor ve bu kişilerin dinlenmesi için bir ortam sağlıyor (Avrupa Birliği İnternete El Koyuyor!).

Yapılan uygulamalarda düzenli çalışma saatleri, çoklu proje yerine tek bir projeye yoğunlaşma ve aynı dönem içinde çalışana tatil için izin vermek gibi eylemler çalışma verimliliğini oldukça arttırdığı gözlemlendi. Bu kişilerle yapılan sohbetlerde, %85'inin işinden ve ortamdan mutlu olduğu görüldü.

Alıntı: ShiftDeleteNet

http://shiftdelete.net/it-dunyasi-kirmizi-alarmda-22030.html


Her Yazılımcının Bilmesi Gereken Konseptler

Genelde olduğu üzere, şurada okuduğum bir yazıdan esinlenerek (çevirisini deburada gördüm daha sonra) bu işe kendi bakışımdan bir değinmek istedim.

İlk olarak ben her yazılımcının bunları bilmesi gerekir mi bilemiyorum. Ama genel olarak bilinmesi gerektiğine katılıyorum. Bir diğer nokta, uygulama geliştirilen platform farkı. Temel olarak iki çeşit uygulama türünden bahsedebiliriz:Stateless(durağan) ve UnStateles(durağan olmayan) uygulamalar. Gerçi günümüzde gitgide bu fark ortadan kalkıyor gibi ama daha çok var. Web uygulamaları durağandır. Yani yazılan kod belirli işlemlerden sonra render edilerek HTML’e dönüştürülür. Hafızada tutulmaz (bazı durumlar hariç). Durağan olmayan yapıda ise, uygulama bellekte çalışır halde bulunur ve işlemler oradan halledilir. Bu iki çeşit arasında bilinmesi gereken şeylerin büyük farklılık göstereceğini tahmin edebilirsiniz.

Neyse, konumuza dönersek :

1 ) İlişkisel Veritabanları (Relational Databases)

Günümüzde birçok veritabanı sistemi bulunmaktadır. Bunlardan en sık kullanılanı hiç kuşkusuz ilişkisel veritabanı sistemleridir. Örnek olarak, Microsoft SQL Server,Oracle , Mysql vs verilebilir. Buradaki mantık, tablolar arasında ilişkiler kurarak veri bütünlüğü, sınıflandırılabilirliği, kısıtlamaları gibi olayları sağlamaktır. Bu şekilde indekslenmiş yapılar kurulabilir, veritabanlarının yönetimi ve programlaması kolaylıkla gerçekleştirilebilir. Günümüzde hemen her veritabanı uygulamasında (özellikle ülkemizde) bu sistemler kullanılmaktadır. Bu sebeple kesin bilinmesi gerekenler listesine yazılabilir.

2) ORM (Object Relational Mapping)

Veritabanına erişim konusunda ortaya atılmış bir kavram ORM. Hafızada veritabanı tablolarının şemalarını oluşturarak (bunları sınıflara çevirerek), tam manasıyla nesneye yönelimli bir yapıda veritabanı işlemlerinin gerçekleştirilmesini sağlar. Burada SQL sorguları yerine direkt hafızadaki nesnelerle çalışılıp, oluşan data son safhada veritabanına gönderilir. ORM sistemleri kriter denilen parametreler alarak, filtreleme ve ilişkisel yapıları kullanma olanağı sunalarlar. En bilinen ORM sistemleri; HibernateLinqToSQL (aslında bunun bir ORM sistemi olup olmadığıyla ilgili çok tartışma var.), EntityFrameworkXPO dur. Bunların haricinde de çok ciddi ORM sistemleri vardır. Bu yapının en büyük dezavantajı, verileri tamamen hafızada tuttuğu için, büyük çaplı verilerde yavaş olmasıdır. (bkz)

3 ) Güvenlik

Gerek desktop, gerek web uygulamalarında güvenlik artık çok önemli bir hale geldi. İnsanlar günlük hayatlarında ve çalışma hayatlarında bilgisayarları kullanmaya başladıklarından beri, üzerinde çalıştıkları ya da depoladıkları verinin önemi her geçen gün arttı. Büyük bir kamu kurumunun sayısal ortamda tutulan bir yıllık muhasebe kayıtlarının silindiğini bir düşünün. Bu ve bunun gibi birçok senaryo günümüzde pek olasılık dışı değil. Bu sebeple uygulama güvenliği çok önemlidir. Her yazılımcı en azından temel düzeyde de olsa, yazılım geliştirdiği ortamla ilgili güvenlik kurallarını bilmelidir. Yoksa sonuçları çok kötü olabilir. Hiçbir yazılımcının yazdığı uygulamanın lamerlar tarafından ele geçirildiğini görmek isteyeceğini sanmam. Ayrıca Authorization ve Authentication ında önemi unutulmamalı.

4 ) Veri Yapıları (Data Structures) ve Algoritma

Veri yapıları programlamanın temel taşıdır. Bu konuyu kesinlikle her yazılımcının sular seller gibi bilmesi ve kullanması gerekir. Verileri sınıflandırmak ve onları düzenli bir şekilde kullanmak çok önemlidir. Bana göre gerçekten iyi programcılar, veri yapılarını çok iyi kullanabilen programcılardır. Burada veri yapıları derken sadece çoğu dilde size hazır olarak sunulmuş veri yapıları kalıplarının kullanımından bahsetmiyorum. Konu olarak veri yapılarını kavramalı ve gerekirse kendi veri yapılarınızı tasarlayabilmelisiniz. Özellikle hafızaya çok yüklenecek yazılımlar üzerinde çalışırken (oyunlar gibi) veri yapıları daha bir önem kazanır. Algoritma konusunda ise söylecek pek birşey yok. Bütün programcılarda bulunması gereken bir yetenek olmalı.

5 ) Katmanlı Mimari

Katmanlı mimaride temel amaç, uygulamanın belli başlı alanlarını birbirinden ayırarak aşağıdaki avantajları sağlamaktır :

  • Kolay geliştirme,
  • Kolayca değiştirme ve yeni eklemeler yapma
  • Kod içerisinde hakimiyet
  • Tekrarlardan kaçınma
  • Birbirinden bağımsızlık sayesinde biçok yerde kullanabilme

Veritabanı uygulamalarında genelde 3 katman üzerinde durulur. Tabiiki programcının kurduğu yapıya göre bu farklılık gösterebilir. Bunlar :

  1. DAL (Database Accsess Layer – Veritabanı Erişim Katmanı)
  2. Bussiness Logic (İş katmanı)
  3. UI – (User Interface ya da GUI – Kullanıcı Arabirimi)

6 ) Test

Yazılım geliştirmeyle test elbetteki ayrı işlerdir. Aslına bakılırsa ayrı uzmanlık alanları gerektirir (Tıpkı kalite mühendisliği ya da analistlik gibi). Fakat her yazılımcı testten anlamak zorundadır. Nasıl test yapılmalı veya test yaparken nelere dikkat edilmelidir? gibi soruların cevabını verebilmelidir. Özellikle ülkemizde test mühendisi pek yaygın bir kavram olmadığından bu gereklidir. Unit test, fonksiyonel test, sistem testi gibi birçok test şekli vardır. Bunların en azından ne oldukları konusunda bir fikir sahibi olunmalıdır. Test yapmak için belirli otomatik araçlarda kullanılabilir (örn: JUnit , NUnitMbUnitZaneBugTestDriven.NetVisual Studio Team Test Edition) (ayrıca bkz. Unit Testing vs Functional TestingOtomatik Test Araçları ve Portalı )

7 ) Programlama Yaklaşımları, Desenler ve Yazılım Mühendisliği

Bu başlıkları sanırım aynı yerde ele alabiliriz. Programlama yaklaşımları, bir yazılımın geliştirme süreçlerinin otomatize edilmiş halleridir. Daha önceden birçok kişi tarafından denenmiş ve uygulanmakta olan süreç tasarımlarıdır. Örnek olarak :Agile Software DevelopmentExtreme ProgramingCollaborative software development model verilebilir. Bunun gibi yazılım mühendisliği konularını kesinlikle her yazılımcının bilmesi gerekir. Tasarım desenleri (Design Patterns) ise yazılımların geliştirmesi için daha önceden denenmiş belirli kalıplardır. Hemen her duruma uygun bir tasarım deseni vardır. Bunlar birçok kullanıcı tarafından kullanılıp test edilerek optimize edilmiş olduklarından, kullanmak kesinlikle çok faydalıdır. Belirli bir kalıp kullanılarak tasarlanmış yazılımlar, hem geliştirilmeye açık hem karışıklıktan ve kod kalabalığından uzak, hem de okunabilirliği yüksek olabilirler (en azından bu atılacak ilk adımlardan birisidir). (Bu konuyla ilgili şurası harika bir kaynak)

8 ) Nesneye Yönelimli Programlama

En önemlisini en sona sakladım.

NYP’nin başlıca özelliği, yazılımda birimselliği (İngilizce – modularity) benimsemesidir. NYP’nın altında yatan birimselliğin ana fikri, her bilgisayar programının (izlence), etkileşim içerisinde olan birimler veya nesneler kümesinden oluştuğu varsayımıdır. Bu nesnelerin her biri, kendi içerisinde veri işleyebilir, ve diğer nesneler ile çift yönlü veri alışverişinde bulunabilir.

(Kaynak Vikipedi). Tartışmasız olarak her programcının bilmesi ve etkin bir şekilde kullanabilmesi gereken bir konseptir.


Aslında daha birçok şey söylenebilir. Yeni ve yeni sayılabilecek teknolojier (Ajax, Cloud Computing, Grid Systems, MultiProcessor Programming vs) üzerinde de düşünmek iyi olur. Bu konseptler daha ne kadar geçerliliğini korur bilemem.

 

Ne de olsa değişmeyen tek şey değişimin kendisidir.

Alıntı: http://kaan.basesistem.com/?p=32