What’s new in the latest NuGet 2.5 Update

Hi all,

We are all using beautiful NuGet extension on Visual Studio for a while now. NuGet is being developed by famous people like Scott Hanselman and Phil Haack. 🙂

For people who don’t know what NuGet is; NuGet is a package manager for Visual Studio, works with central package repository http://www.nuget.org. There are 12500 packages currently on the repository and generally it’s enough for your standard project needs. I mean almost every package is there. Which means no more web crawling for popular packages’ download links on the web, download and extract them to add to your project.

In Visual Studio, you can add package by right clicking to solution and select “Manage NuGet Packages for Solution”. Select “Online” from the left menu and search for package name from the right-top search box. When you find your package just click Install and tadaa, it’s done.

nuget_gallery

Back to our topic, in April 25 they’ve released the latest update. First let me tell you where to find this update; Open Visual Studio, go to Tools -> Extensions and Updates there you will find if your NuGet version needs to be updated. Or you can alternatively go to http://nuget.codeplex.com and download / install manually.

These are the what’s new items in the NuGet web site.

  • Option to overwrite content files
  • Automatic imports of msbuild targets
  • Different references per platform
  • Update All button
  • Improved project reference support for NuGet.exe Pack
  • Add a ‘Minimum NuGet Version’ property to packages
  • Dependencies are no longer unnecessarily updated during package installation
  • NuGet.exe outputs HTTP requests with detailed verbosity
  • NuGet.exe push supports UNC and directory sources
  • NuGet.exe supports explicitly-specified Config files
  • Support for C++ and WiX project types
  • Support for Mono/Xamarin projects targeting iOS, Android, and Mac
  • Package Restore improvements
    (a prototype of the new features will be available as a separate download/installation)

As for me I was waiting for performance updates. You know, when I’m not at home, NuGet package updates are always slow with the phone tethering, client’s or Starbucks’ wireless. 🙂 With this update NuGet does not update if the dependency is satisfied within the project. With that I mean if you have a package in your project lets say A V 1.0.0 and you are trying to install B which is dependant to A V 1.0.0. If repository had A 1.0.2 NuGet was trying to update A before this version. From now on A is not updated.

Also there is another update which is great for resolving package conflicts. You can now overwrite existing package files. If you are using Package Manager Console there is a new property for Update and Install-Package parameters which is FileConflictAction. You can choose whether to Overwrite to always overwrite or Ignore option to skip files. If left empty, you’ll get prompted for every file.

And there is another great feature for people like me working with old projects once in a while. When you open a (relatively) old project, got to NuGet Package Manager by right clicking the solution. Go to “Updates” at the left menu and select “All”. Now there is an “Update All” button to update all packages. So you can stay up to date with the latest version of packages you use in this project. Also keep in mind that NuGet has a cache folder in your computer under %LocalAppData%\NuGet\Cache. When you update a package it is saved into that folder and when you add the same package version into a project it is not downloaded again and again.

There are more updates listed above but for me these are the most important. Thank you NuGet team.

Yazılım Projelerinde Ürün Yöneticisi Olmak için Gerekli Özellikler

Ürün ve iş ekipleri yazılım ekiplerinin sürekli dirsek temasında çalıştığı birimlerdir. Bu yüzden bu ekiplerin yapısı biz yazılımcıları ilgilendirir çünkü az veya çok sürekli birlikte çalışırız. Unutmayın başarıya sadece iyi bir yazılımla ulaşamazsınız. Bu yazılımın bir kişi veya daha iyisi bir takım tarafından birçok yanının yönetilmesi gerekir.

Profesyonel şirketlerde yönetim, satış, pazarlama birimlerinin istekleri ürün veya iş ekiplerinde toplanır. Bu bilgiler belli bir süzgeçten geçirilir, dokümante edilir, önem sırasına göre düzenlenir, fizibilite çalışmaları analistler ve yazılım ekipleriyle birlikte gerçekleştirilerek iş planlarına dahil edilir. Birçok şirketin süreçleri aşağı yukarı bu şekildedir. Araya farklı süreçler girip çıkabilir fakat genel olarak minimum yapı bunu gerektirir. 

Ürün Müdürü veya Direktörü yönetici pozisyonları firma yönetim hiyerarşisine, dinamiklerine göre farklılıklar gösterebilir. Bir firmada CEO’ya bağlı, diğerinde CIO veya COO’ya bağlı olabilir.

Yönetim olarak bağlı olduğu birimler yazılımcıları çok etkilemese de birlikte çalışırken birbirimizi anlayabilmek için bazı noktalarda karşı tarafın teknik bilgiye sahip olmasını bekleriz. Özellikle yazılımcı dilinden anlayıp bunu iş / business diline çevirebilecek iletişimi kuvvetli kişilerle çalışmak, biriminizin beklentilerini ve sıkıntılarını anlamak, yönetime anlatmak için gereklidir.

Uzun zamandır Ürün Yöneticileri ile birebir ilişkide olan pozisyonlarda çalıştım. Fakat hiç işe alım sırasında beklentilerim sorulmamıştı. Geçen gün firmamızdaki böyle bir pozisyon için bir arkadaşımla sohbet ederken, yazılım projelerinde yönetim pozisyonundaki bir Ürün Yöneticisi’nin ne özelliklere sahip olması gerektiğini sordu ve tartıştık. Sonrasında ben profesyonel bir arkadaşımdan konuyla ilgili yardım aldım.

Kısaca yazılım projelerinde Ürün Yöneticisi Pozisyonu’nda çalışabilmek için gerekli beceri setini aşağıdaki gibi sıralayabiliriz;

– Mutlaka teknik bir bölüm mezunu olmalı.
– Analiz yeteneği gelişmiş olmalı. Sistem tasarlayan veya sistem analizi yapan 4 yıllık bölümlerden mezun olmalı.
– Geçmişte az da olsa kod geliştirmiş olmalı.
– Veri tabanı bilgisi olmalı, segmentasyon gibi konularda bilgili olmalı.
– Test teknikleri hakkında bilgili olmalı, test ekibi yönetebilmeli.
– SEO bilgisi olmalı (Genellikle web tabanlı geliştirme yapıldığını varsayarak)
– İngilizce bilgisi olmalı ki yukarıdaki konuları ve mesleki gelişmeleri ilgili forum, site vs.’den takip edebilmeli.
– Proje yönetim yetenekleri gelişmiş olmalı ki, yazılım birimlerinden istediği işi planlayabilsin ve yetiştireceği zamanı ayarlayıp öngörebilsin.
– Diğer yandan işi ve gereklerini iyi bilmeli ki, bunları yazılımcıların anlayabileceği bir dille ifade edebilsin.
– Ortaya çıkan ürüne Prod OK verebilecek ve bunun sorumluluğunu alabilecek deneyime sahip olmalı.
– Dokümantasyon ve yazılı iletişim açısından kendini sözel ve yazılı olarak ifade etme yetenekleri çok iyi olmalı. Özellikle yazılım projelerinde istek (requirement) dokümantasyonu düzgün oluşturulmadığında iş yanlış anlaşılıyor, tekrar yapılmak zorunda kalıyor ve maliyet çok yükseliyor.
– Dolayısıyla İngilizce, teknik bilgi, kendini ifade edebilme yetenekleri kuvvetli olmalı.

Evet farkındaysanız yukarıda Pazarı bilmesi vs. gibi konularda detaya girmedim. Eminim bu pozisyonun daha detaylı tanımı IK Profesyonelleri tarafından yapılabilir. Benim bir bilişim profesyoneli olarak başarılı proje yürütebilmek için birlikte çalışacağım Ürün Yöneticisi’nden veya ekibinden beklediğim gereksinimler bu şekilde.

Gördüğünüz gibi doldurulması zor bir pozisyon ve Türkiye’de bu kalibrede ürün yöneticileri özellikle ilgili sektörün içinden zor bulunuyor. Genelde bu pozisyona yönelik bölümler yerine sektörde kendini geliştirmiş, tecrübe kazanmış kişileri Ürün Yöneticisi pozisyonunda görebilirsiniz. Yani yazılım projeniz finans sektöründeyse finansın içinden gelen pozisyonlar Ürün Yöneticisi olarak yönetim kadrosuna yükseliyor. Bu durumlarda genelde yukarıdaki beklentiler karşılanmıyor ve yazılım ekipleriyle koordinasyon yeterince kuvvetli olmuyor.

Peki sektörel tecrübesi çok kuvvetli olan bir Ürün Yöneticiniz var. Onunla yolları ayırmak istemiyorsunuz fakat başarıya ulaşmak istiyorsunuz. Bu açıkları kapatmak için neler yapılabilir?

– Şirket bünyesinde profesyonel analistler çalışabilir ve dokümantasyon bu ekiplerin yönetiminde olur.
– Test ekipleri yazılım ve kabul testlerine destek verebilir.
– Proje süresince ve sonrasında Profesyonel SEO desteği alınabilir.
– Ayrıca bir Proje Yöneticisi pozisyonu veya proje ofisi açılıp, Ürün Yöneticisi PMI’ın öngördüğü gibi “Proje Şampiyonu” olarak kullanılabilir.