Bilişim Sektöründe Sertifikaların Önemi

Herkese Selamlar ! Bugün sizler ile beraber tarafıma abartmıyorum yüzlerce kez sorulmuş bir soruyu cevaplamak istiyorum. Aranızda özel ya da devlet, mühendislik ya da ilgili benzer bölümlerden mezun olmuş ama sertifikası olmayan yüzlerce kişi var ve özellikle şu sıralar pandemi dönemindeyiz ve evde vakit geçiren kişi sayısı arttığı için herkes sertifika almaya başladı. Bu yüzden olduğunu düşünüyorum ki sosyal medya hesaplarımdan tarafıma çok fazla bunun üzerine soru geldi. Sizinle çeşitli amaçla alabileceğiniz ya da almayı planladığınız sertifikaları ayrı başlıklar altında inceleyelim şimdi.

  1. Katılım Sertifikaları
    Yeni mezunsanız ve cvnizde aslında gerçekten de ben ilgilendiğim bu meslek adına bir şeyler yapıyorum ya da yenilikçiyim, sürekli bir öğrenme durumu söz konusu diyorsanız katılım sertifikaları sizin için işe yarayabilir. Şunu unutmayınız yalnız. Katılım sertifikalarının somut tek faydası budur. Teknik anlamda donanımlı olduğunuzu göstermez. Katıldığınız bir eğitim ya da konferansta bulunduğunuza dair belge, bir nevi yoklama diyebiliriz aslında peki katıldığınız o eğitim size ne kadar faydalı oldu ? İşte bu gerçekten tam bir muamma o yüzden katılım sertifikalarınızı yeni mezunsanız cvnize ekleyiniz onun haricinde pek tavsiye etmiyorum açıkçası.
  2. Özel Bir Kurum Tarafından Verilmiş Başarı Sertifikaları
    Aslında bu nokta cidden çok önemli. Herkes herhangi bir kurumua gidip onun maddi karşılığını ödedikten sonra eğitimi alabilir. Başarı kısmında ise o alan özgü kuruma ait sertifika bulunduğunuz şehirde ya da çalışmayı planladığınız şehirde ne kadar biliniyor. Çok biliniyorsa ve gerçekten az kişide varsa her şey çok güzel demektir. Peki aksi senaryoyu düşünecek olursak yani sertifika bilinmek ile beraber herkeste varsa ? İşte bu gerçekten iyi bir durum olmaz sizin açınızdan. Sebebi ise o kurum sertifikaları kolay veriyor demektir. Bu sizin cvnizde yer alsada kendinizi ispatlamak için çaba sarfetmenize sebep olablir. İspatlamaktan kasıt ise herhangi bir iş görüşmesine gittiğinizde o sertifikayı gerçekten hak ederek aldığınıza dair eğitim süreniz boyunca yaptığınız ciddi çalışmaları gösterebilirsiniz. Mülakatı yapan kişi açısından etkileyici olacaktır.
  3. Uluslararası Firmalardan Alınan Sertifikalar & Ünvanlar
    Daha önce yurtdışında bir firmada yazılım geliştirmeni pozisyonunda çalışmış biri olarak şunu söyleyebilirim ki herhangi bir ülkede almış olduğunuz eğitim ya da eğitim sonunda almış olduğunuz diploma (bir üniversite eğitiminden bahsediyorum) başka bir ülkede geçerli olmayabilir. Mesela ben Ege Üniversitesi mezunuyum eğer ki değişmediyse America’da bulunduğum dönemlerde bazı eyaletlerde diplomam geçerli iken bazılarında kabul edilmiyordu. İşte tam olarak bu noktada uluslararası çapta bir sertifikanınızın olması sizi kurtaracaktır. Çünkü o tarz bir belgenin elinizin altında olması sizin mülakata davet edilmenizi sağlayabilir. Bu tarz sertifikalar almanın bir diğer avantajı ise çalışmak istediğiniz firma ile sertifikasına sahip olduğunuz firma arasında ortaklık ( partnerlik ) sözleşmesi olabilir. O tarz durumlarda bazı firmaların belirli sayılarda sertifikalı personel çalıştırması gerekmekte ve sizde eğer ki o sertifikaya sahipseniz biraz değerli olabilirsiniz.
  4. Çok Fazla ve Farklı Alanlarda Sertifikalar Almayın !
    Çok samimi bir şekilde söylüyorum ki bu yazının en can alıcı noktası burası diyebilirim. Neden derseniz sertifika almak iş görüşmelerinde etkiler karşı tarafı fakat şunu unutmayınız ki çok fazla ve farklı alanlarda sertifika almanın gerçekten somut bir zararı vardır. Bu tarz sertifikaları almak zordur ve vakit ayırıp çalışmanız gerekir. Eğer ki çok fazla varsa bu sertifikalardan mülakatı yapan kişi muhtemelen “Bu aday ne zaman proje geliştirdi acaba ?” diye bir düşünecektir.

    Farklı alanlarda sertifika almak ise sizin uzmanlaşmak için kararsız kaldığınızı bir uzmanlığınız olmadığı için kariyerinizde ilerleme konusunda problem yaşayacağınızı gösterir ki bu tarz bir şey yaşamanızı hiç istemeyiz.

  5. Bonus !
    Diploma ya da sertifika neye sahip olursanız olun. Bunlar sadece sizi mülakat masasına kadar götürecektir. İçeriye esas girmenizi sağlayacak olan bilginiz, proje tecribeniz kısacası iş hayatında tam olarak neler yaptıklarınızdır. Daha önce de dediğim gibi eğer ki iş tecrübeniz yoksa karar verdiğiniz bir uzmanlık alanınıza yönelik sertifikaları alarak cvnizde yer almasını sağlayabilirsiniz. Vermiş olduğum her seminerde, webinerde ya da eğitimde sürekli dile getirdiğim bir söz var ve burada bir kez daha söylemek istiyorum. İş, işte, iş yaparak öğrenilir.  Siz kariyeriniz için elinizden geleni yapın gerisi kendiiliğinden gelecektir. Bu yazılıkta bu kadar ! Vakit ayırıp yazımı okuduğunuz için çok teşekkür ederim. Bu yazıyı post ederken dinlediğim şarkı ise: Michael Kiwanuka Love & Hate Sonra ki yazılarda görüşmek üzere hoşçakalın !
0  

Asp .Net Core MVC üzerinde Tekli ve Çoklu Resim Yükleme

Herkese Selamlar ! Bugün sizler ile beraber asp.net core mvc üzerinde tekli ve çoklu resim yükleme işlemlerine bakacağız. Web uygulamalarında artık dosya yükleme işlemi olmazsa olmaz duruma geldi. Herhangi bir web uygulamasına girdiğinizde kariyer sitesi, sosyal medya, kamu işlemleriniz için kullanabileceğiniz ya da günlük hayatta girdiğimiz sıradan web uygulamasında bile resim yükleyebileceğimiz bir alan ciddi bir ihtiyaç haline geldi. Bugün ise sizler ile beraber Core MVC üzerinde bu işlemi tam olarak nasıl gerçekleştiriyoruz bir ona bakacağız. İlk aşamada uygulamamız bir core mvc uygulaması olduğu için Startup.cs sınıfımızı aşağıda ki gibi düzenliyoruz.

 

    public class Startup
    {

        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                services.AddMvc();
            });


            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseMvcWithDefaultRoute();
        }
     }

Uygulamamızı tam olarak açıklamaya başlamadan önce daha önce bahsetmiştim ama bir kez daha kısa bir şekilde açıklamakta fayda var ViewImports. Birden fazla view içerisinde ortak olarak kullanılmasını beklediğimiz directiveleri topladığımız bir yer var orası da ViewImport . Ayrı ayrı eklemek zorunda kaldığımız bir takım directivelari sadece bir adet ViewImport içerisine ekleyerek tüm viewlar tarafından kullanılmasını sağlayabiliriz. _ViewImports.cshtml dosyamızın gövdesine ise aşağıda ki tek satırı ekliyoruz.

 

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

@addTagHelper sayesinde eklediğimiz viewlar üzerinde ihtiyaç duyduğumuz helperlara rahatlıkla erişip kullanabileceğiz. Şimdi ise tek bir görsel nasıl upload edilir buna giriş yapabiliriz. Uygulamamızın Controllers klasörüne bir adet “HomeController” isminde controller ekliyoruz ardından ise aşağıda yer alan tanımlamalarımızı yapıyoruz.

 

IHostingEnvironment _env;
Random rnd = new Random();
string directory;

Bu yazıyı okuyanlar arasında klasik asp.net ya da asp.net mvc üzerinde çalışmış olanlar vardır diye düşünüyorum. Bu tarz eski platformlar arasında sunucu ile ilgili bir işimiz olduğunda “Server” propertysi ile işlermizi yürütüyorduk. Özellikle söz konusu resim ya da bir dosya yükleme işlemi olduğunda Server.MapPath her zaman bize yardımcı olmuştur. .Net Core mimarisi geldikten sonra ise sunucu ortamı ile ilgili işlemlerimizi yürütebilmemiz için IHostingEnvironment geldi. IhostingEnvironment üzerinde çalıştığı sunucu hakkında bize ortamsal bilgileri getiren bir interfacedir. Sunucu üzerinde resimlerimizin kayıt altında tutulması için ihtiyacımız olan dizini bu interface sayesinde gerçekleştiriyor olacağız.
String tipinde olan directory ise yolun kendisini , random nesnemiz ise resmimize rastgele bir isim vermemizi sağlayacaktır.

 

        public HomeController(IHostingEnvironment env)
        {
            _env = env;
            directory = _env.ContentRootPath + "/Images/";
        }

Yukarıda yer alan kod bloğumuzda ise bir adet yapıcı method içerisinde değerlerin doğrudan atanmasını sağladık. _env.ContentRootPath kendi uygulamamızın dizinini verir bize. Ben ise doğrudan dizin içerisinde değil “Images” klasörü altında toplanmasını istediğim için uygulamamıza bir adet “Images” isminde klasör açıyorum. Ardından sayfamızı göstereceğimiz sıradan bir IActionResult tipinde Index isminde bir methodumuz var.

 

        public IActionResult SingleFile(IFormFile file)
        {
          
            using (var fileStream = new FileStream(Path.Combine(directory,rnd.Next(0,99999).ToString()+".png"),FileMode.Create,FileAccess.Write))
            {
                file.CopyTo(fileStream);
            }
                return RedirectToAction("Index");
        }

Resim yükleme işlemlerimizi gerçekleştirecek olan esas methodumuz ise ;

 

        public IActionResult SingleFile(IFormFile file)
        {
          
            using (var fileStream = new FileStream(Path.Combine(directory,rnd.Next(0,99999).ToString()+".png"),FileMode.Create,FileAccess.Write))
            {
                file.CopyTo(fileStream);
            }
                return RedirectToAction("Index");
        }

Bu method aslında gayet kolay. Arayüz üzerinden gelecek olan resmi yakalayan IFormFile tipinde file isminde bir parametremiz var. Using içerisinde ise resmin kayıt altına alacağı directory dizini ona verdiğimiz rastgele bir isim (dosya altında isimler çakışmasın diye ) ve bir adette dosyamızın uzantısı yer almakta. Dosya modumuzun create ve bir adette yazma iznini vermemiz gerekmekte. Takiben fileStream sayesinde kişisel bilgisayar içerisinde bir dizinde yer alan resmi kendi sunucumuz içerisinde kopyalıyor ve yine kendi viewimiz üzerine yönlendiriyoruz. Bu işin back-end kısmıydı. Front-end tarafında ise ;

 

<div>
    <h4>Single file Upload</h4>
    <form asp-controller="Home" asp-action="SingleFile" enctype="multipart/form-data" method="post">
        <input type="file" name="file" value="" />
        <button type="submit">Submit</button>
    </form>
</div>

Hangi controller üzerinde ve hangi action sayesinde bu form koşacak onu belirtiyoruz. Tabi ki de söz konusu bir dosya olduğu için encryption type ve methodun post zamanında tetikleneceğinide söylememiz gerekmekte. Uygulamamızı çalıştırınca karşımıza gelecek olan ekran gayet sade.

Çalıştırıp denediğimizde ise “Images” klasörümüz altında bu resimlerin yüklendiğini görebiliriz.

Tekli dosya yükleme işlemi bu kadar kolay. Sıra geldi çoklu dosya işlemine aslında o da bir öncekine ciddi anlamda benzer. Sadece ufak tefek farklılıklar söz konusu. “MultipleFiles” isminde ayrı bir IActionResult daha ekliyoruz.

 

        public IActionResult MultipleFiles(IEnumerable<IFormFile> files)
        {
            foreach (var file in files)
            {
                using (var fileStream = new FileStream(Path.Combine(directory, rnd.Next(0, 99999).ToString() + ".png"), FileMode.Create, FileAccess.Write))
                {
                    file.CopyTo(fileStream);
                }
            }
            return RedirectToAction("Index");
        }

Bu sefer ise parametre olarak IEnumerable tipinde parametremizi hazırlıyoruz. Sebebi ise belli birden fazla resim gelecek çünkü. Aynı tekli dosya içerisinde kurguladığımız yapıyı ise foreach döngüsü ile tekrarlanmasını sağlıyoruz. Bu sayede her bir resim için aynı işlem tekrarlanmış oluyor.

Front-End tarafında da tahmin edeceğiniz gibi sadece küçük bir detay söz konusu.

 

<div>
    <h4>Multiple file Upload</h4>
    <form asp-controller="Home" asp-action="MultipleFiles" enctype="multipart/form-data" method="post">
        <input type="file" multiple name="files" value="" />
        <button type="submit">Submit</button>
    </form>
</div>

Bu detay ise file tipindeki input parametremizın multiple olduğunu belirtiyoruz. İşte bu kadar. Artık sizlerde ihtiyacınız olması durumunda core mvc web uygulamalarınıza resim yükleme işleminizi kolayca gerçekleştirebileceksiniz. Örneği ise github hesabımdan tam olarak görebilirsiniz. Bu yazıyı post ederken dinlediğim şarkı ise: Metallica – Sad But True
Yazımı okuduğunuz için teşekkür ederim. Sonra ki yazılarımızda görüşmek üzere !

0  

Asp .Net Core MVC üzerinde Sayfalama (Pagination) Nasıl Yapılır ?

Herkese Selamlar ! Bugün sizler ile beraber sayfalama yani pagination nasıl yapılır ona bir bakacağız . Özellikle bir sayfa üzerinde çok satırlı veri göstermek durumunda kaldığımız da bazen hem kullanıcı taraflı hem de yazılım geliştirmeni taraflı problemler ortaya çıkabiliyor. Bir sürü veriyi tek bir sayfa üzerinde göstermek demek aslında kullanıcının aramak istediği veriyi bulması için sayfa üzerinde dakikalarca aşağı inmek zorunda kalması anlamına gelebilir. Yazılım geliştirmeni tarafından baktığımız da ise çok satırlı verileri veri tabanı üzerinden çektikten sonra tek bir sayfa üzerinde göstermeye çalışmak ciddi performans sorunlarına sebep olabilir. Bu tarz durumlarda sayfalama kullanmak gerçekten başarılı bir çözüm yolu olacaktır. Yazımız içerisinde .net core mvc ve entity framework core kullanarak hazırladığım örnek üzerinden ilerleyeceğiz.

İlk olarak PaginationDB isminde bir veritabanı , içerisine ise Product isimli bir tablo yaratıyorum. Tablonun sütunları ise ProductID, ProductName , ve Discontinued isimli. ProductID tipi int , primary key ve otomatik artan . ProductName nvarchar(50) ve son olarak Discontinued ise bool tipinde . Bu aşamayı geçtikten sonra ise bir .net core mvc projesi başlatıyoruz. StartUp.cs in içerisnde ConfigureServices methodunun gövdesine ise 2 farklı kod satırı ekliyoruz. Bunlarda ilki ;

Services.AddMvc( ) methodu . Bu method aracılığı ile projemizi tam olarak bir MVC seklinde kullanmak ya da bir diğer şekli ile mvc hizmetini kullanmak istiyorsanız bu methodu ConfigureServices isimli methodun gövdesine ekliyoruz.

Ardından eklememiz gereken method ise Services.AddSingleton() fakat bu method tam olarak giriş yapmadan önce IActionContextAccessor tam olarak ne işe yarıyor bir onu açıklayalım sizlere. Bu görmüş olduğumuz nesne Context bilgilerimizin Controller tarafında tam olarak kullanılmasını sağlar Services. AddSingleton methodu sayesinde ise kullanacağımız nesneye her ihtiyac duyduğumuzda değil sadece bir sefer instance alınarak kullanılmasını sağlar.

 

public void ConfigureServices(IServiceCollection services)
{
            services.AddSingleton<IActionContextAccessor,ActionContextAccessor>();
            services.AddMvc();
}

Takiben ise Configure methodunun içerisine uygulamamızın standart routin kısmını ayarlıyoruz ve Startup.cs içerisinde işimiz bitiyor.

 

app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Product}/{action=Index}/{id?}");
            });

Projemize appsettings.json dosyasını ekleyerek yolumuza devam ediyoruz. Dosyamız içerisinde veri tabanına bağlanmamızı sağlayacak olan bağlantı ifademizi yazıyoruz.

 

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=.;Database=PaginationDB;user id=sa;Password=YourPasswordMustBeHere"
  }
}


Yavaş yavaş uygulamamız şekilleniyor. Models klasörünün içerisine Product isimli bir sınıf ekliyoruz ve gövdesini veri çekeceğimiz tabloya göre oluşturuyoruz.

 

[Table("Product")]

    public class Product
    {
        public int ProductID { get; set; }

        public string ProductName { get; set; }

        public bool Discontinued { get; set; }
    }

Sınfın üzerinde görmüş olduğunuz [Table(“Product”)] veri tabanı içerisinde özellikle belirtilmiş olan bir tabloya map edilecek ise yani eşitlenecek ise kullanıyoruz . Bu sınıfı da tamamladıktan sonra DataContext isimli ayrı bir sınıf daha ekliyoruz. DataContext sınıfımıza DbContext sınıfımızdan kalıtım alıyoruz ki problemsiz bir şekilde Entity Framework Core yapısını kullanabilelim . DataContext sınıfımızın esas amacı ise daha önceden uygulamamıza eklemiş olduğumuz appsettings.json dosyamızda yer alan connection strings yani bağlandı ifadesini okumak ve doğru bir şekilde veri tabanı ile haberleşebilmektir. DataContext sınıfımızın gövdesini ise aşağıda ki gibi doldurabiliriz.

 

public class DataContext:DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            var builder = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile("appsettings.json");

            var configuration = builder.Build();

            optionsBuilder.UseSqlServer(configuration["ConnectionStrings:DefaultConnection"]);
        }

        public DbSet<Product> Product { get; set; }

    }

Controller tarafına tam olarak geçmeden önce sayfalama işlemini kolay bir şekilde yapmamızı sağlayan 3. Parti bir araç olan “PagedList.Core.Mvc” aracını Manage Nuget Packages üzerinden kuruyoruz projemize.

Uygulamamızda ihtiyaç duyduğumuz altyapıyı neredeyse tamamladık. Bir adet Product isminde controller ekliyorum ve gövdesini aşağıda ki gibi kodluyorum.

 

using Microsoft.AspNetCore.Mvc;

using PagedList.Core;

using PaginationWithASPNETCoreWithEF.Models;

namespace PaginationWithASPNETCoreWithEF.Controllers
{
    [Route("Product")]
    public class ProductController : Controller
    {
        private DataContext _db = new DataContext();

        [Route("index")]
        [Route("")]
        [Route("~/")]
        public IActionResult Index(int page = 1, int pageSize = 3)
        {
            PagedList<Product> model = new PagedList<Product>(_db.Product,page,pageSize);

            return View("Index",model);
        }
    }
}

IActionResult içerisinde sayfalama içerisinde ihtiyaç duyacağımız 1 sayfa içerisinde kaç adet satır bulunacak kısmını ise Index methodunun içerisinde parametre olarak barındırıyoruz . Methodun gövdesinde ise PagedList üzerinden instance alıyoruz ve hangi nesne üzerinde çalışması gerektiğini 1 sayfa üzerinde kaç satır veri gözükmesi gerekiyor pagedlist nesnesi içerisine bunları parametre olarak giriyoruz.Methodun dönüş tarafında ise View kısmına yönlendirirken model ile beraber gönderiyoruz ki sayfalama yaptığımız her veriyi taşıyabilelim. Tüm bu aşamaları geçtikten sonra bir adet view eklememiz gerekmekte fakat View eklemeden önce son bir kısım daha var o da ViewImport . Uygulama içerisinde aslında uygulama yerine birden fazla view içerisinde ortak olarak kullanılmasını beklediğimiz directiveleri topladığımız bir yer var orası da ViewImport . Ayrı ayrı eklemek zorunda kaldığımız bir takım directivelari sadece bir adet ViewImport içerisine ekleyerek tüm viewlar tarafından kullanılmasını sağlayabiliriz. Şu an pek ihtiyacımız yok ama yine de bu yazı içerisinde bahsetmek istedim. Proje içerisine bir adet Razor View Import ekliyoruz ve gövdesini ise aşağıda ki gibi düzenliyoruz .

 

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *,PagedList.Core.Mvc

Geriye sadece tek bir iş kaldı o da View tarafını düzenlemek . View alanında sayfalamayı zaten harici bir araç üzerinden gerçekleştirdiğimiz için sadece veriyi uygun formatta ve bootstrap kullanarak göstermek kalıyor o kadar .

View kısmını ise aşağıda ki gibi düzenliyoruz.

 

@{
    Layout = null;
}

@model  PagedList.Core.IPagedList<PaginationWithASPNETCoreWithEF.Models.Product>

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
    <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20src%3D%22https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fjquery%2F1.11.3%2Fjquery.min.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
    <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20src%3D%22https%3A%2F%2Fmaxcdn.bootstrapcdn.com%2Fbootstrap%2F3.3.5%2Fjs%2Fbootstrap.min.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
</head>
<body>

    
<table class="table table-hover">

        
<tr>
            
<th>ProductID</th>

            
<th>ProductName</th>

            
<th>Discontinued</th>

        </tr>

        @foreach (var product in Model)
        {
        
<tr>
            
<td>@product.ProductID</td>

            
<td>@product.ProductName</td>

            
<td>@product.Discontinued</td>

        </tr>

        }
        
<tr>
            
<td colspan="3" align="center">
                <pager list="@Model" asp-controller="Product" asp-action="Index"/>
            </td>

        </tr>

    </table>

</body>
</html>

Şu an her şey hazır . Uygulamamızın ekran görüntüsü ise aşağıda ki gibi;

 

Bu yazılıkta bu kadar uygulamayı github adresimden indirebilirsiniz. Yazımı okuduğunuz için teşekkür ederim .Bu yazıyı post ederken dinlediğim şarkı ise: Aerosmith – Crazy Sonra ki yazılar da görüşmek üzere.

0  

17 Nisan 2020 IEEE Yaşar Üniversitesi Discord Oturumu

Herkese Selamlar ! Başlıktan da anlaşılacağı gibi 17/04/2020 tarihinde saat 20:00 de Yaşar Üniversitesi IEEE öğrenci topluluğunun düzenlediği discord oturumunda konuşmacı olacağım. Vaktiniz varsa dinlemenizi tavsiye ederim. Oturuma linke tıklayarak erişebilirsiniz. Şimdiden herkese teşekkür ederim…

0  

Mustafa KEMAL

Herkese Selamlar ! Yakın arkadaşlarım ve sosyal medya üzerinden arkadaş olduğumuz kişiler var ise aranızda elimden geldiğince çok okumaya çalıştığımı hemen hemen herkes bilir . Okumak güzel şey gerçekten . Oturduğunuz koltuktan çok uzaklara gidebiliyorsunuz üstelik sadece sayfaları çevirerek. Bugün sizler ile düşüncelerimi paylaşmak istediğim kitap ise 2018 yılında piyasaya çıkmış olan Mustafa Kemal . Yazarı ise Yılmaz ÖZDİL .

Her ne kadar tasvip etmesem de kitabın farklı versiyonları çok uçuk meblağlara yayın evinin kendi sitesinden satıldı ve her ne kadar herkes tasvip etmediğini söylese de dakikalar içerisinde o uçuk meblağlı kitap tükendi. Ben ise karton kapaklı olanından bir adet edindim . Yukarıda ki cümle de yer alan kısmı bir kenara bırakırsak kitap gerçekten etkileyici şekilde güzel . Ulu Önder Mustafa Kemal ATATÜRK‘ün doğumundan ölümüne kadar her detayı büyük bir tarafsızlıkla okuyorsunuz. Öğrencilik yıllarında ki hedeflerini oluşturması , bulunduğu koşullar dahilinde bahane üretmeden hedeflerine nasıl gittiğini , günümüzde yaşayan bizler için büyük bir ders niteliğinde . O dersi almazsak rakı sofralarında ülkeyi kurtarmaya devam ederiz tabi o konu çok ayrı. Kitabı genç – yaşlı demeden her meslek grubundan herkesin okuması gerekmekte . O devirde ki vizyonerliği , askeri stratejilerinin başka komutanlar tarafından nasıl kullanıldığı okuyarak nerelere gelinebileceğinin somut kanıtı . Kararlı duruşu , insanları kırmadan onlara karşı nasıl tavır takınarak istediklerini yaptırdığı , ileri görüşlülüğü ….. ve daha bir çok kişisel özelliği . Şu tarz bir soru sorabilirsiniz bana bu kitabı diğer Atatürk kitaplarından ayıran fark ne ? Aslında bende o farkı merak edip kitabı alanlardanım. İçerisinde verilen örnekler ve anlatılan tüm anılar belgeler ile ispatlanmış . Kötü özelliklerine de yer verilmiş . Bu da yazarın objektif davrandığını ve kitabın samimiyetini gösteriyor , dili çok yalın. Kadın , erkek yediden yetmişe herkesin sıkılmadan okuyacağı bir kitap . Özellikle eğitiminiz ve kariyeriniz anlamında siz de ne yapacağınızı bilmeyenlerdenseniz size de müthiş bir şekilde bu kitap yardımcı olacaktır . Bu arada daha önce paylaşmıştım ama okuduğum diğer kitaplara ise: goodreads.com üzerinden erişebilirsiniz. Bu yazılıkta bu kadar . Bu yazıyı post ederken dinlediğim müzik ise : Metallica: One Sonra ki yazılarda görüşmek üzere hoşça kalın ….

0  

Yeni Başlayanlar İçin 10 Yapay Zeka Kitabı

Herkese Selamlar ! Özellikle yapay zeka üzerine ücretli olarak çok fazla eğitim var . Aynı zamanda ücretsiz olarak bir çok video yayın sitelerinde yine benzer eğitimler var . Ben her zaman yazılı yayınlardan yanayım. Sebebi ise elimin altında güvenilir bir kaç kaynak olması hep hoşuma gitmiştir. Hem sıkıldığımda okumak hemde okurken bir çok şeyi düşündürmesi cidden güzel bir olay bence. Özellikle son bir kaç yılda yapay zekanın tırmanışa geçmesi ile programlama dünyasına sırf bu sebepten dolayı giriş yapanlar ya da uzun süredir programlama ile ilgilenip yavaş yavaş yapay zeka tarafına geçmek isteyenler söz konusu. Yani kitapların hepsi başlangıç seviyesine hitap etmekte . Onları da düşünerek popüler yapay zeka kitaplarını sizler için topladım . Yalnız hepsi ingilizce şimdiden sizlere söylüyorum .

Artificial Intelligence: A Modern Approach (3rd Edition)
By Stuart Russell & Peter Norvig

Bu kitap yapay zekaya doğrudan bir bakış açısına sahip , lisans ya da yüksek lisans içerisinde yapay zeka ile ilgili bir ders alıyorsanız bu kitabu kaynak olarak kullanabilirsiniz . İçerisinde ise arama algoritmaları , doğal dil işleme ve oyun teoremleri üzerine bilinmesi gereken konulara ağırlık verilmiş .

Artificial Intelligence Basics: A Non-Technical Introduction
By Tom Taulli

Tom Taulli’nin yazmış olduğu kitap içerisinde standart yapay zeka konularına hakim olursunuz . Yapay zeka , derin öğrenme , makine öğrenimi, robotik ve daha bir çok alan . Kitabı diğerlerinden farklı kılan nokta ise yapay zekanın ve yapay zekanın ihtiyaç duyduğu veriler üzerinde çalışılırken etik durumu ile sosyal problemlere de değinilmiş olmasıdır .

Machine Learning For Dummies
By John Paul Mueller and Luca Massaron

Machine Learning yani makine öğrenimi üzerine yazılmış olan bu kitapta ise temel örneklerin yanı sıra fraud detection , credir scoring ve automation alanları üzerinde durulmuş . Makine öğreniminin yanı sıra büyük veriyede değinilmiştir .

Neural Networks: A Visual Introduction for Beginners
By Michael Taylor

Açıkçası benim aralarında favorim bu kitap diyebilirim . Sebebi ise yapay zeka, makine öğrenimi , derin öğrenme gibi alanların temeli aslında yapay sinir ağlarıdır . Yapay sinir ağları makine ve derin öğrenme ile nasıl alakalı , makine ve derin öğrenme yapay zeka ile nasıl alakalı bunların arasında büyük veri nerede kalıyor bunu güzel bir şekilde açıklamış .

Artificial Intelligence: Foundations of Computational Agents, 2nd Edition
By David L. Poole and Alan K. Mackworth

Poole ve Mackworth bilgisayar bilimleri içerisinde gerçekten saygı duyulan iki hoca . Yazdıkları kitap içerisinde ise yapay zeka içerisinde kullanılabiliecek akıllı hesaplama etmeni konseptinden ( intelligent computational agents ) başarılı bir şekilde bahsedilmiş.

Artificial Intelligence: An Essential Beginner’s Guide to AI, Machine Learning, Robotics, The Internet of Things, Neural Networks, Deep Learning, Reinforcement Learning, and Our Future
By Neil Wilkins

2019 yılında yayınlanan bu kitap gerçekten güncel bilgilere sahip . Klasik yapay zeka konularının yanı sıra insan beynini bilgisayar simülasyonu gibi nasıl davranması gerektiği de ele alınmıştır .

Artificial Intelligence By Example
By Denis Rothman

Denis Rothman tarafından yazılan bu kitap diğer bir favorim diyebilirim. Sebebi ise kitaplara baktığımız da özellikle eski kitaplara bakıyorsak içerisinde gerçek hayata uyarlanmış örnekler ciddi anlamda az . Bu kitapta ise yapay zekanın , block chain ve nesnelerin interneti içerisinde nasıl kullanıldığına dair güzel örnekler söz konusu .

Artificial Intelligence for Humans
By Jeff Heaton

Jeff Heaton tarafından yazılmış bu kitap ise yapay zeka içerisinde kullanılan ileri düzey matematiksel hesaplamalardan bahsetmektedir . Aynı zamanda doğrusal regresyon , hata hesaplama , kümeleme ve daha bir çok konudan bahsetmektedir .

Machine Learning for Absolute Beginners: A Plain English Introduction
By Oliver Theobald

Theobald tarafından hazırlanmış bu kitap içerisinde genelde teknik terimlere ve bu alanda ilerlemek isteyenlere tam olarak jargon içerisinde yer alan ifadeler ne anlama geliyor güzel bir şekidle açıklanmış .

The Quest for Artificial Intelligence: A History of Ideas and Achievements
By Nils J. Nilsson

“Ben herhangi bir konuya başlamadan önce tarihini okurum” diyenlerdenseniz Nilsson tam olarak sizi düşünerek yazmış bu kitabı . Yapay zeka , makine öğrenimi , derin öğrenme ortaya nasıl çıktı?

İlk ortaya çıkışından bu zamana kadar evrimi nasıl gerçekleşti ? Bu tarz sorulara cevap vermekte . Aynı zamanda ise yapay zeka modern günümüz teknolojisine yüz ve ses tanıma , robotik alanlarına yön veriş şekliylede ele alınmakta .

Bu yazılıkta bu kadar . Yazımı okuduğunuz için teşekkür ederim . Sizlerinde favori kitaplarınız varsa türkçe ya da yabancı dilde yazılmış olanlar yoruma eklemeyi unutmayınız lütfen. Bu yazıyı post ederken dinlediğim şarkı ise: Metallica: Mama Said Sonra ki yazılarımız da görüşmek üzere….

Not : Bu yazı https://www.goodreads.com/shelf/show/artificial-intelligence adresi altında yer alan kitaplar arasından seçilerek derlenmiştir.

0  

Temiz Kod Yazmak için 8 İpucu ?

Herkese Selamlar ! Bugün sizlere hemen hemen tüm yazılımcıların ortak derdi olan “Temiz Kod” yazmak için 8 ipucu vermeye çalışacağım . Aslında her yazılımcı temiz kod yazmak ister . Kim daha kısa şekilde yazılabilecek bir işi daha da uzatmak ister ki ? Yalnız bir problem söz konusu . O işi tamamlamak için bir süreniz ve ciddi bir müşteri baskısı altında olduğunuzu varsayarsak kimsenin umrunda olmaz temiz kod yazmak . Herkesin tek derdi o işi en kısa surede tamamlamak ve müşteriye mahçup olmadan çalışır hale getirmek ister . Daha sonra uygun bir anımda bakarım der aynı yazılımcı fakat öyle bir vakit yoktur . Her daim üzerinde çalışılması gereken bir takım sorunlar ortaya çıkacaktır. Birde üzerine baska birinin kodu üzerinde düzenleme yapmamiz istenirse işte o zaman çok daha dikkatli olmamız gerekir. Bir de o kod ne kadar güzel yazılmış olursa olsun hep kötü olduğunu iddia edenler vardır ki o tarz kişilerin yanından geçerken iyi bir kulaklık takmanızı öneririm . Şimdi ise basit gözüken fakat alışkanlık edindiğimiz takdirde işimizi çok kolaylaştıracak olan 8 ipucuna bir bakalım .

İsimlendirme Standartınız Olmalı
Bunu her söylediğimde çok yanlış anlaşılıyor . O yüzden olabildiğince detaylı bir şekilde burada açıklamak istiyorum . Tabiki de sizin de bir standardınız vardır elbette fakat her kod yazdığınız ya da her geçici olarak geldiğiniz proje içerisinde kendi standartlarınızı kullanamazsınız . O projeye ait olan bir standart kullanmanız gerekmekte . Proje çok yıllık ise o proje içerisinde çok fazla geliştirmen bulunmuştur . Her gelen kendi standartını uygulamaya kalkarsa o uygulama içerisinde ki standartı olduğu gibi öldürmüş oluruz . Dediğimiz gibi sizlerde kendi standartınızı değil o projede varolan standartı uygulayın , proje uzun soluklu ve çok fazla geliştirmen yer almış ise en azından yer aldığınız modül içerisinde ki standartı yakalamaya çalışın . Bu sayede sizden sonra gelecek olan geliştirmenin biraz işini kolaylaştırmış olursunuz .

Lojik Her Zaman Gözden Geçirilmeli
Yeni bir özellik eklenmesi için müşteriden talep geldiğini varsayalım . Az çok hemen fikir oluşur sizde . Veriyi çekeceğiniz katman , nerede veri üzerinde değişiklik yapacağınız vesaire bunların hepsi bellidir . Kesinlikle hemen kod yazmaya başlamayın . Sözde Kod (Pseudo – code) , akış diagramı yada kullanım örnekleri hepsini incelemelisiniz . Ardından ise yapmanız gereken şey şu olmalı . Bu talebe benzer bir talep daha önce proje içerisinde kullanılmış mı ? Eğer ki kullanılmış ise tamamen oraya benzeterek yazmaya çalışın . Bu sayede o kod bloğu içerisinde karşılaşacağınız bir problem orada çözülmüş olabilir !

Büyük Methodlardan Kesinlikle Kaçının
S.O.L.I.D. principles içerisinde yer alan S harfinin temsil ettiği Single Responsibility Principles der ki bizlere “Bir method ya da sınıfın sadece tek bir görevi olmalıdır.” Aynen bunu gerçekleştirmelisiniz arkadaşlar . İlerlerken kurguladığınız mantık ise çok basit iki farklı kural söz konusu .

1- Kod tekrarı yerine method oluşturmalısınız .

2- Bir method içerisinde birden fazla görev olmamalı .

Sizin yazmanız beklenen yeni özelliğin tamamını bir method içerisine sığdırmaya kesinlikle kalkmayın. O zaman çok fazla method olacak belki de . Bırakın çok fazla olsun . Kod okurken olabildiğince kolaylaşacak işiniz . Bir kod kolay okunuyorsa onun standartı cidden iyidir .

Indentation Kullanmak
Bu biraz tartışmaya açık bir konu olsada sürekli yan yana ve her bir parantezin hemen yanına yazılmış olan kodu okumak mı yoksa yeteri kadar boşluk bırakılmış , alt alta yazılmış kodu okumak mı kolay ? Siz o tarz bir şey hazırlamasanız bile sonradan o kodu okumaya çalışacak olan kişi o boşlukları hazırlayıp ondan sonra okuyacaktır. Derleyicinin tabiki de böyle bir şeye ihtiyacı yoktur . Nasıl yazılırsa yazılsın doğru yazıldığı müddetçe bir problem yok . Buna biraz dikkat edersek fena olmaz sanki.

Açıklayıcı Yorumlar Kullanın
Çoğu projede ki en önemli sorunların başında gelen problemlerden biridir bu. Eğer ki yeni özellik ekliyorsanız kodun amacını kısaca açıklamanız , ne zaman yaptığınız (aslında bu versiyon kontrolden bulunur) son olarak ise kim tarafından yapıldığını söylemeniz yeterli . Bazı firmalara eğitime gittiğimde bundan bahsediyorum ama genelde herkes o projeden sanki hiç ayrılmayacakmış gibi biz anlasak ne yazdığımızı yeter mantığı ile çalışıyorlar ki bu da durumu daha da içinden çıkılmaz hale getiriyor .

Kod İçerisinde Aşırı ve Gereksiz Yorumlar Yazmayın
En Başta şunu söylemek istiyorum ki yukarıda ki ile bu madde tamamen birbirinden farklı . Bir değişiklik yaptıktan sonra /*Bunu ozhan yaptı*/ ya da tamamlayamadığınız bir iş için /*Sonra devam ederim*/ gibisinden yorumlar bırakmayın . Komik gelebiliri ama inanın bana çok fazla bunların sayısı. Geçici olarak yazabilirsiniz tabi ama kodunuzun ürün içerisinde yer almadan önce bunları kesinlikle silmelisiniz . Uzun uzun yorum yazın ama kodunuzun içerisine değil. Çok fazla yorum yazacak bir durumunuz var ise kodun bulundugu satı rile beraber farklı bir not aracında saklayın . Bu sayede çalışmanızı da bir parka daha düzenlemiş ve yorumlarınızı control altına almis olursunuz .

Eski ve Kullanılmayan Kodları Temizleyin
Aslında bu hemen gerçekleştirilmeli fakat ya ileride lazım olursa ya da başka bir özellik konusunda o kod bloğu bana yardımcı olabilir belki diye yorum satırına dönüştürüp basit bir açıklama ile saklıyoruz. Bunun en büyük dezavantajlarından biri ise o kod çok değiştirilmiş ve üzerinde çok oynanmış bir kod bloğu bize nasıl yardımcı olabilir ? Aynı zamanda üzerinden çok zaman geçtikten sonra ya da ekibe yeni bir üye gelince de kafa karışıklığı yaratabilir . Silmenizde fayda var ama . Eğer ki çok ihtiyaç duyarsanız source control üzerinden geriye gidip alma imkanınız söz konusu .

Lojik Her Zaman Kod İçerisinde Olmalı
Eğer ki veri çekiyorsanız bir yerden ki bu neredeyse küçük ölçekli bir proje için bile olması gereken bir şey artık az bir iş yükü bile olsa veritabanı içerisinde o işi yapmayın . Her şey kodunuz içerisinde aksın . Bu sayede her şeyi kontrol altında tutarsınız ve değişikliklerinizi daha kolay gerçekleştirirsiniz.

Bu tarz ifadeleri sizler ile ne kadar paylaşırsak paylaşalım en güzeli ise iş , proje ortamında tecrübe edince gerçekleşmekte. O yüzden şu an bu ipuçlarına uymaya çalışın ama zamanla hepsini çok daha iyi anlayıp , çok faha iyi bir sekilde uygulamaya başlayacaksınız zaten. Okuduğunuz için çok teşekkür ederim. Bu yazıyı post ederken dinlediğim şarkı ise: Kurban – Yine Sonra ki yazılarımız da görüşmek üzere….

0  

Teknik Konuşmalar Nasıl Eğlenceli Hale Gelir ?

Herkese Selamlar ! Bugün sizlere teknik ama teknoloji ile alakası olmayan bir yazı hazırladım . Bence hepimizin işine çok yarayacak neden mi ? Sebebi aslında şu aramızda gerçekten iyi kod yazan kişiler var fakat bu paylaşmaya gelince bazen zorlanıyor ya da aslında konuya gerçek anlamda çok hakim gayet de iyi anlatıyor fakat anlatırken sıkılıyoruz . Şunu gönül rahatlığı ile söyleyebilirim ki bu işin uzmanı değilim sizlerle yine gözlemlerimi paylaşmaya çalışacağım . Bu sefer gözlemler ise kendi oturumlarım ve o oturumlar da bulunmuş katılımcılar ile alakalı tamamen. Yanlış olmadığını düşündüğüm bir kaç öneri sadece .

Soruları En Sona Bırakmayın !

Bir konuyu anlatmaya başladınız ve her şey gayet yolunda gidiyor . Siz bu konuyu anlatırken ve dediniz ki “ Teorik olarak anlatacağım ve demodan sonra tüm sorularınızı yanıtlayacağım” bu tarz bir ifade ile yaklaşırsanız doğrudan seminerin ya da konferansın interaktif olmasını engellediniz demektir. Şunu kesinlikle unutmayın bir kişinin aklına gelen bir soru seminerin sonuna kadar unutulabilir . Ayrıca çok daha önemli bir durum var soru soruyu getirir. Etkinlik sonunda zaten kısıtlı vakit kalacağı için bunu bir de siz sınırlandırmış oluyorsunuz ve biraz da etkinliğin interaktif geçmesini engelliyorsunuz. Bırakın sorular o anda gelsin. Fazladan gelecek olan soruları etkinlik sonunda yine cevaplarsınız. Problem yok. Bu arada aklınızdan çıkarmamanız gereken en önemli şey siz oraya eğitim ya da seminer ne amaçla gitmiş olursanız olun temelinde orada ki insanlarla sohbet etmeye gittiniz. Bunu kesinlikle unutmayın ve sohbet ne kadar keyifli ise o kadar rahat hisseder herkes.

Her Zaman Kendinizi Tanıtmayın
Üniversite içerisinde öğrenciler ile beraber kariyer etkinliğindeyseniz kesinlikle kendinizi tanıtın . Onlar sizlerin anlatacaklarını kendilerinde bulmak için oradalar aslında bir parça. O yüzden güvendiğiniz , onların üzerinde etki yaratacak bir kariyeriniz ve zorlukları aştığınız hikayeleriniz varsa anlatmaktan çekinmeyin . Bunu paylaşırken ise nasihat şeklinde olmamalı . Unutmayın ki yaşı kaç olursa olsun kimse nasihat dinlemek istemez . Sadece bir önce ki başlıktada söylediğim gibi siz sohbet için oradasınız .

Şimdi ise senaryoyu değiştiriyorum . Bir firmaya eğitim için gittiniz , talep ettikleri konuyu anlatacaksınız . Kendinizi tanıtın ama isminiz , ne kadardır sektördesiniz , nerede çalışıyorsunuz söyleyeceğiniz ifadeler bunlar olmalı . Onlar zaten mesleğini eline almış çalışan kişiler. Sizin kariyerinizi merak etmiyorlar. Firmalarında ki eksik olan bir konuyu öğrenmek için sizinle beraberler . Uzun uzun kendinizi anlatırsanız karşılaşacağınız ilk soru “Eğitime ne zaman başlıyoruz ?” olacaktır ki bunu hiç birimiz istemeyiz.

Etkinlik Başlamadan Önce Salonda Olun !
Zaman zaman tabiki de şehir dışına çıkıyoruz bu tarz etkinlikler için ya da şehir içinde olsa bile trafik denilen bir problem söz konusu . Bunları da düşünerek etkinlik başlamadan önce salonda olmaya çalışın. Bunu bir kaç sebebi var . İlk sebebi ise sunum esnasında karşınıza çıkacak olan tüm teknik aksaklıkları ya da endişelerinizi salon görevlileri ile paylaşabilirisniz. Bunları çözdükten sonra ise katılımcılar ile ya da etkinliği organize eden kişiler ile sohbet edin bu hem sizin rahat hissetmenizi hem de onların etkinlik esnasında sizinle daha kolay iletişime geçmesini sağlar.

Meraklı Olun
Siz sunum yapmak için oradasınız . Anlatacağınız konu sizin de ilginizi çekiyor olmalı. Eğer ki çekmiyorsa ben neden dinleyeyim ki ? Orada bulunan kişilere en az onlar kadar sizin de bu konu ile ilgilendiğinizi , öğrenmek için çabaladığınızı hissetmeli . Aksi halde kitleyi kaybedersiniz . Vereceğiniz örnekler eğer ki çok yeni bir teknoloji değilse gerçek hayatta kullanılmış olan , yeni bir teknoloji ise yine gerçek hayat üzerinde nerelerde kullanabileceğini düşündüğünüz örnekler olmalı ve bunu yaparken aynı merak durumunu onlarla da paylaşmak için sizce nerelerde kullanılabilir ? gibi sorular yöneltin . Etkinlik ne kadar interaktif geçerse herkes için o kadar iyi .

Samimi ve Tarafsız olun
Bir teknoloji anlattığınızı varsayalım , avantajı ile dezavantajı ile paylaşmalısınız. Unutmayın ki siz pazarlamacı değilsiniz her teknolojinin kusurları vardır. O kusurları eleştirmekten çekinmeyin . Güzel tarafları çok fazla överseniz ve en önemlisi gereksiz yere , abartarak , tadını kaçırarak överseniz size geri dönüşü hoş olmayabilir .

 

Eğlenceli Olun
Oraya gittiniz ve bir şeyler paylaşıyorsunuz kesinlike şu tarz tavırlara girmeyin ben koskoca X firmasının yöneticisiyim sürekli gülemem ya da benim sahip olduğum ünvanlar var ciddi durmam lazım gibi düşüncelere katiyen müsade etmeyin . Basit bir denklem var siz de insansınız onlar da bu eşitliği kuvvetlendirecek olan ise diyalog içerisinde ki keyif katsayısıdır. Ne kadar güçlü olursa o kadar rahat ve güzel ilerler işler.

 

Özet Olarak
Kendinizi de onları da sıkmayın , konunuz üzerine yeterince bilgi edinin , ulaşılabilir olun saygıyı es geçmeyin ve en önemlisi gülümseyin. Bunları alışkanlık haline getirdikten sonra akışına bırakın . Geri kalanı kendiliğinden gelecektir

Kendi gözlemlerim doğrultusunda elimden geldiğince sizlere bu kavramları özetlemeye çalıştım. Bu yazımı burada sonlandırıyorum. Okuduğunuz için çok teşekkür ederim. Bu yazıyı post ederken dinlediğim şarkı ise: AWOLNATION – RUN Sonra ki yazılarımız da görüşmek üzere….

0  

Yazılım Geliştirmenlerini Motive Eden 10 Madde

Herkese Selamlar ! Bu yazımız içerisinde özellikle konuk olduğum etkinliklerde tarafıma çok fazla sorulmuş olan bir soruyu cevaplamaya karar verdim . Sorun şu kendimizi ya da yazılım geliştirmenlerinin motivasyonunu yüksek tutmaya yarayan çevremde ki diğer yazılım geliştirmenlerini gözlemleyerek elde ettiğim sonuçları paylaşmak istiyorum sizler ile fakat bu yazılım sizlerden bir şey rica etmek istiyorum eğer ki kendi motivasyon kaynaklarınızdan herhangi bir tanesi bu maddeler içerisinde yok ise lütfen yazının altına yorum olarak bırakmayı unutmayın . Bu sayede herkesin bu zamana kadar fark etmediği ama sizlerin kuracağı bir kaç cümle ile kendi motivasyonunu keşfetmesini sağlayabiliriz .

Bir Şeyler Yaratmak
Kurumlarda değil ama özellikle üniversitelerde konuşmacı olduğumda öğrenciler tarafından neden bu mesleği seçtiğime dair çok fazla soru geliyor. Bence meslekler ikiye ayrılır arkadaşlar. Bazı mesleklerde zamanınızı satarsınız bazı mesleklerde ise düşünce gücünüzü kullanır ortaya yeni birşeyler çıkmasını ya da varolan bir problemin giderilmesini sağlarsınız . Kod yazmaya başlamadan önce zaten bilgisayar kullanıyordum aslında sadece ıyun oynuyordum. Kod yazmaya başladıktan sonra ise şunu farkettim . Eğer ki yazılım geliştirmenliği ile alaklı bir meslekte değilseniz bizler bilgisayarı değil bilgisayar bizi kullanıyor. Bir film izlemek istiyoruz istenilen formatı açması için uygun programları ya da codec paketlerini yüklemek zorunda kalıyoruz . Oyun oynamak istiyoruz dakikalarca kurulum işlemleri ile uğraşıyoruz . Neyin eksik ya da neyin yanlış olduğunuz hep o bize söylüyor ve biz onu gerçekleştiriyoruz . Kod yazmaya başladığımda ise bu durumu değiştirebileceğimi farkettim . Bu sefer bilgisayara bir takım komutlar sayesinde istediğim işlemleri ne zaman , hangı sıra ile ve kaç defa tekrar ederek yapması gerektiğini ben söylüyordum ve benim istediklerimi yapıyordu işte bu noktada bazen yazmak istediğim bir uygulama bazen ise karşılaştığım problemi bunlar yardımı ile çözebiliyordum. Yazılan her bir satır kod başka bir kodun temelini oluşturuyordu . Ortaya çıkacak olan ürünün nasıl değiştiğini nereden nereye geldiğini gayet güzel ve net bir şekilde görebiliyordunuz . Eğer ki siz de kendinizi bu tarz bir sorunu çözdükten sonra tatmin olduğunuzu hissediyorsanız doğru yerdesiniz demektir.

Her Zaman Yeni Şeyler Öğrenmek
Bu durum ne kadar iyi ya da ne kadar kötü tartışmaya açık fakat kesinlikle değiştirebilceğimiz bir durum değil ne yaparsak yapalım klişe bir cümle olacak ama teknoloji ilerliyor , frameworkler değişiyor , eski bilgilerimizi her zaman yenisi ile değiştirmek zorunda kalsakta tecrübemizin üzerine yeni bilgiler ekleyerek devam etmemiz gerekyor . Monoton bir iş değil bence gayet güzel .

Meydan Okuma (Challanges)
Kendi kendinize meydan okuma fırsatı var bu meslekte !!! Her yeni başlayan gün içerisinde müşterinde gelen bir taleple kısa sürede büyük bir özellik eklemek zorunda kalabilir . Her zaman dengeli bir şekilde çalışan web uygulamanızın neden artık yavaşladığını çözmek zorunda kalabilirsiniz . Yeni bir algoritmayı anlamaya çalışmak bir gün öncesine kadar hiç ortalıkta gözükmeyen ama birden ortaya çıkan bug dediğimiz hatayı bulmak zorunda kalabilirsiniz. Eğer ki rekabetçi kişiliğiniz var ise ve kendinize meydan okumayı seviyorsanız doğru yerdesiniz .

İşleri Yoluna Koymak
Benim en çok haz duyduğum maddelerden biri de bu madde mesela . Bir uygulama düşünün web , mobile farketmez hafta sonu müşteriniz tarafından bir çok hatası fark edilmiş ve panikle Pazartesi sabahı bunları müthiş bir panık ses tonu ile sizinle paylaşıyor. Siz de biraz panik oluyorsunuz ama tabi ki de müşteriye belli etmek yok . Adım adım çözüyorsunuz ve bunu müşteri ile paylaştığınız da çözümünüz onu tatmin ettiyse eğer gerçekten sizi motive edecek esas cümleleri ondan duyuyorsunuz. Müşteriniz bir iltifatta bulunmasa bile kullandığınız proje-süreç yönetim sisteminizde adınıza atanmış olan görevleri tamamlandı kısmına sürüklemek güzel bir his . . .

Kendi Şirketinizde ya da Piyasada İşe Yarar Bir Eleman Olduğunuzu Göstermek
İşe girdikten sonra başlarda zorluk çekersiniz . Belirli bir süre sonra ki bu süre kişiye göre değişir o işi tek başınıza yapmanız beklenir . Tek başınıza yapmaya başladıktan sonra daha zor sorunlar üzerinden kimseden tek bir yardım bile almadan ilerleyebiliyorsanız o şirketin ya da o proje için diyelim vazgeçilmez elemanlardan biri olabilirsiniz . Bu gerçekten hem iyi hem kötü bir durumdur. İyidir size özgüven ve motivasyon sağlar . Yine aynı sebeplerden dolayı kötüdür ben vazgeçilmezim şeklinde tavırlara bürünürseniz sonuçları ağır olabilir . Şunu unutmamalısınız ki her meslek grubunda kimse vazgeçilmez değildir …

Karar Konumunda Olmak
Bazen yeni bir teknoloji bazen ise işe yeni girecek birileri . Hiç farketmez yeterince özenli olarak çalıştığınızı farz edelim ve gerçekten de işini iyi yapan birisiniz . Şirket sahibi ya da çok daha büyük bir firmada çalışıyorsanız o şirket içerisinde önemli kararlar alınırken size danışılması cidden önemli bir durumdur . Sizi rahatsız edecek ya da esas ihtiyaçları belirleyecek olan kişi siz oluyorsunuz bu nokta da ve yeterince özgürseniz istediğiniz gibi şekillendirebilirsiniz bu süreci.

Geliştirdiğiniz Ürüne İnancınız
Karşılaşmız olduğunuz her bir zorluk aslında sizin için bir sınav . Bazen kolay bazen zor hatalar ile karşılaşabilirsiniz . Kendi kişisel motivasyonunuzu arttırmak ve yeniden enerji toplamak için kendinizi ödüllendirmeyi ihmal etmeyin . En önemlisi ise bu ödüllendirme esnasında o ödülü hangi adımları izleyerek kazandığınızı yani hatayı nasıl çözdüğünüzü sakın unutmayın. Yazımı okuduğunuz için çok teşekkür ederim sonra ki yazılarda görüşmek üzere….

Maaş
Her zaman olmasa bile maaşda motıvasyon kaynağı olabilir aranız da buna itiraz edip maaşı ilk sıraya koymaya çalışanlar olacaktır fakat emin olun ilk sırada maaştan ziyade o işi yaparken ne kadar huzurlu olduğunuz olmalı. Tabi böyle dedik diye maaşlarında öldürülmesine gerek yok . Bizleri yine tatmin edici maaşlar ile zam oranları ile hayatımız da problem yaşamadan idame ettirebilmemiz lazım . Bunun esas sebebi ise tam olarak şu iş dışında mental olarak sizi çok meşgül eden bir probleminiz varsa mesela geçim sıkıntısı gibi işte o zaman en basit sorunlar o iş için gözünüzde büyüyecek zaman zaman ise çalışmak bile istemeyeceksiniz. Sadece işten tatmin oluyorum diye az paralara çalışmanın hata olmasının yanı sıra iyi iş yapıyorum diye ütopik maaşlarda beklemek yanlıştır. Her daim bunun dengesını sağlamak yararımıza olacaktır.

Saygı Duyduğunuz ve Size Saygı Duyan İnsanlar ile Çalışmak
Şirket dediğimiz yerler aslında büyük insan topluluklarının yer aldığı çalışma alanları. Herkesi sevmek zorunda değilsiniz ama herkese saygı duymak zorundasınız . Onlar da öyle . Özellikle şirket içerisinde küçümser bir şekilde birilerine yardımcı olmak , yazdığı kod ile dalga geçmek , yaptığı bir hatayı daha iyi çözümler önerebilecek durumdayken o çalışan ile dalga geçmek ciddi anlamda o kişinin motivasyonunu düşürecektir. O yüzden biri ile dialog halindeyken ya da biri ile beraber çalışırken üslubumza dikkat etmekte fayda var . Herkes kendisine saygı duyulsun ister ama önce siz saygı duyarsanız. Bu beraberliği sağladığınız da gerisini gayet kolay halledersiniz.

Kovulma Korkusu
Genelde yazılım şirketleri rahat çalışma alanları ve ortamları olan yerlerdir. Fakat bu durum orasının bir işyeri olmadığı gerçeğini değiştirmez . Kovulma korkusu bazen motivasyon kaynağı iken bazen de rüzgar tersine dönüşüp sizi düşürebilir. Bunu işinizi yaparken unutun . Kendi kendinize stres ortamı yaratıp modunuzu düşürmeyin . Tamamen unuttuğunuz da ise sonuçlarından burada bahsetmek istemeyiz. Arada bir hatırlamak en mantıklısıdır. Umarım başımıza gelmez ama maalesef kendi işimizi yapmadığımız müddetçe durum bu .

Kendi gözlemlerim doğrultusunda elimden geldiğince sizlere bu motivasyon kaynaklarını özetlemeye çalıştım. Aklınıza gelen farklı maddeler olursa lütfen yorum yazmayı unutmayın. Bu yazımı burada sonlandırıyorum. Okuduğunuz için çok teşekkür ederim. Bu yazıyı post ederken dinlediğim şarkı ise: Metallica: Fade to Black Sonra ki yazılarımız da görüşmek üzere….

Not : Bu yazı https://positivepsychology.com/ üzerinde Self – Motivation başlıklı yazıdan esinlenilerek yazılmıştır.

0  

Daha Verimli Hata Ayıklamak İçin 7 Öneri

Herkese Selamlar ! Bu yazımız içerisinde yazılım geliştirmenliğinin temeli olan hata ayıklama yani debug yapmaktan bahsedeceğim sizlere. Uzun yıllardır kod yazıyorum ve hala istediğim gibi yazamıyorum . Uzun yıllardır hata ile karşılaşıyorum fakat her farklı projede mantık ve kodun işleyişi değiştiği için sorunu çözene kadar can çekişiyorum. Evet zor . Hatta bazen çok can sıkıcı ama biz yazılım geliştirmenleri için aslında en önemli fırtsatlardan biri her yeni projede hata ayıklama ve kod yazma mantığımızı daha iyi seviyelere taşımaktan geçiyor. Bu kadar hevesli ve istekli konuşuyorken her şeyi başarı ile tamamlayıp gün sonunda evde ne yerken , ne izleyeceğinizi düşünürken bir açılan ticket ile her şey yerle bir olabilir. Belirli bir süre sonra buna zaten alışırsınız. Bunların hepsi yazılım geliştirmenlğinin aslında doğasında var. Peki sizler için klavyeme aldığım bu 7 öneri tam olarak hadi beraber bakalım !!!

Kod üzerinde bir değişiklik yapmadan önce aynı hatayı defalarca oluşturun

Evet doğru okudunuz. Şaşırmanıza gerek yok. Bir problemi çözmenin en iyi yolu onu anlamaktan geçer arkadaşlar. Hatayı kusursuz bir şekilde yeniden oluşturabiliyorsanız o hatayı anlamışsınız demektir ve yeterince iyi anladıysanız çözüme yaklaşıyorsunuz anlamına gelir.

Çoğu zaman bir hata ile karşılaştığımda gelen maili ya da beraber çalıştığım kıdemli yazılım geliştirmenini dinlemeden harekete geçtiğimi farkettim . Gelişigüzel varsayımlar yaptım , değişiklikler yaptım üstelik neden olduğunu bilmeden , kodu kontrol ettim ve çalıştığını gördükten sonra bunuda yaptım diye sevinip eve gittim . Ertesi gün işe geldikten sonra ise aynı problemin yeniden karşımda olduğunu gördüm . Belki de çözmüştüm sorunu fakat farklı senaryolar ile denememiştim . Aynı hatayı yeniden üretmeye çalışmamıştım. Bunu denemediğim için farklı durumlarla karşılaşabileceğimi düşünmeden hatayı çözdüğümü düşündüm. Denemenize rağmen hatayı yeniden üretemiyorsanız farklı birinin bu hatayı yeniden üretmesini bir müşteri gibi test etmesini sağlayın. Sizin firmanızda artık hangi ünvan ile hangisi varsa tester , iş analisti ya da kalite kontrol yapan kişi de olabilir. Zamanımız değerli çünkü bir sorun üzerinde geçici çözümler ile ilerleyip yeniden o probleme dönemeyiz .

Stack Traces i Anlamak
Bundan tam olarak bahsetmeden önce stack trace ne demek sizlere ondan bahsetmek istiyorum . Gelistirilmis olan yazılımda bir problem ile karşılaşırsanız bilgisayarın adım adım işlemeye çalıştığı kodların takibini sağlayarak problemin oluşmasından kaynaklı kod bloklarını en ufak bir adımını bile atlamadan takip etmek anlamına gelir. Çoğu programlama dilinde de bu tarz mekanizmalar söz konusudur .

Tabiki saniyeler içerisinde kodu takip edip anlayıp çözüme kavuşturmak muazzam bir yetenektir . Henüz ben böyle birini görmedim yalnız . Burada esas amaç o hataya sahip olan kod satırlarının en kök kısmına kadar inebilmektir. Kulağa korkunç gelsede bunu yapmak zorunda kalabiliriz.

Test Case Yazmak

Burada size esas söylemek istediğim Test Driven Development . Aslında TDD için ayrı bir blog yazısı hatta blog serisi bile çıkar diyebilirim . TDD üzerinde mantık ciddi anlamda kolay uygulamanızı yazmaya başlamadan önce test yazıyorsunuz ve bu test başarısız oluyor . Bu testi başarılı hale getiriyorsunuz . Ne kadar test yazdıysanız bunların hepsini gerçekleştiriyorsunuz . Takiben ise uygulamanız üzerinde iyileştirme ve temizleme işleri yapıyorsunuz. Bu sayede karşılaşabileceğiniz hataların çoğunu elimine etmiş oluyorsunuz ve işiniz kolaylaşıyor.

Hata Kodunu Bilin

Bunu duymak size biraz garip gelebilir ama hata kodunu bilmek ve ona göre yaklaşmakta ciddi anlamda işimizi kolaylaştırmakta. Hata kodları aslında kategori şeklindedir.

  • 1xx: Bilgilendirme amaçlı
  • 2xx: Başarı durumu
  • 3xx: Yönlendirme amaçlı
  • 4xx: Kullanıcıdan kaynaklı
  • 5xx: Sunucudan kaynaklı

Daha detaylı örnek verecek olursak , yine popüler olanlardan seçelim.

  • 401 Unauthorized (yetkisiz)
  • 403 Forbidden (yasak)
  • 404 Not Found (erişmek istediğiniz dosya sunucu üzerinde bulunamadı)
  • 500 Internal Server Error (istediğiniz işlemi herhangi bir sebepten ötürü server gerçekleştiremiyor)
  • 502 Bad Gateway (Backend tarafından geçerli response dönmüyor)
  • 503 Service Unavailable (Server üzerinde aşırı yük var ya da bakım altında )
  • 504 Gateway Timeout (Backend üzerinden beklenen zaman içerisinde response dönmedi)

Arama Motorlarını Verimli Kullanın

Arama motorunuz ne olursa olsun kesinlikle bir çözüm yolu , sizinkine benzer bir hata ya da uyarlayabileceğiniz bir mantık ile karşılaşma ihtimaliniz çok yüksek. Bunu en az bir kere ana dilinizde ve en az bir kerede hakim olduğunuz yabancı dilde yapmanızı öneririm. Emin olun çıkan sonuçlar arasında tatmin edici bir şekilde farklılıklar meydana gelecektir.

Bir Bilene Sorun

Yeterince her şeyi denediğinizi düşünüyorsanız bir bilene sormak mantıklıdır fakat sormanın dozunu kaçırmayın. Soruyu cevaplayan kişiler bir süre sonra sizinle aynı ekipte yer alsalar bile rahatsız olacaklardır. Tabi bunu söyledik diye o zaman farklı kişilere sorarım diye aklınızdan geçirmeyin . Olabildiğince kendiniz çıkmaya çalışın o hatanın içersinden . Her çıkamadığınızda ise farklı bir yol deneyin . Ne zaman her şeyi denediğinizden eminsiniz o zaman birilerinden yardım isteyin ama dediğim gibi bunun tadı kaçmasın. Abarttığınızı düşündüğünüz ya da düşündükleri anda size yardım etmemek için bahane üreteceklerdir. Aldırmayın yolunuza devam edin tabi bu tarz bir durum can sıkıcı olsada tek odaklanmanız gereken nokta uygulamanız olsun. Mantıken onların size yardımcı olmamaları size çok fazla yarar sağlar. Bunu fırsata dönüştürmeye çalışın her defasında .

Kendinizi Ödüllendirin

Karşılaşmız olduğunuz her bir zorluk aslında sizin için bir sınav . Bazen kolay bazen zor hatalar ile karşılaşabilirsiniz . Kendi kişisel motivasyonunuzu arttırmak ve yeniden enerji toplamak için kendinizi ödüllendirmeyi ihmal etmeyin . En önemlisi ise bu ödüllendirme esnasında o ödülü hangi adımları izleyerek kazandığınızı yani hatayı nasıl çözdüğünüzü sakın unutmayın. Emin olun işinizi ciddi anlamda kolaylaştıracaktır.

Bu yazımı burada sonlandırıyorum. Okuduğunuz için çok teşekkür ederim. Bu yazıyı post ederken dinlediğim şarkı ise: Joan Jett & The Blackhearts – I Love Rock N Roll Sonra ki yazılarımız da görüşmek üzere….

0  
EnglishGermanTurkish