“İş için doğru araç” ve aşinalık arasındaki denge [kapalı]


19

Dolayısıyla, bir proje için hangi dili kullanacağınızı seçerken, ideal bir dünyada dil seçilir çünkü iş için doğru araçtır. Bununla birlikte, genellikle öğrenmek zorunda olduğum dilden ziyade akıcı bir dil kullanmayı veya sadece konuşabileceğim bir dili kullanmayı tercih ederim . Tabii ki dil akıcılığı, aynı zamanda dildeki geçerli kütüphaneler hakkında bilgi gerektirir. Java gibi oldukça genel amaçlı bir dili gerçekten sevdiğim için, onu her zaman kullanmam gerektiği anlamına gelmez, ancak aynı zamanda her metin işlemesi olduğunda Perl gibi bir şey kırmam gerektiği anlamına gelmez. Burada dengeyi nasıl buluruz?

Yanıtlar:


12

Vay canına bu teori dünyasından ve üretim dünyasına götürüldüğünde ÇOK zor bir soru.

Teoride

Basit. Her zaman iş için en iyi aracı kullanın ve sadece neye ihtiyacınız olduğunu öğrenin.

Uygulamada

Sadece akıcılığınızla ilgili soru değil, buna cevap vermeden önce sorulması gereken bir dizi başka iş sorusu da vardır:

  • "Doğru takım" satın alma maliyeti
  • Bunu destekleme maliyeti - insanların eğitilmesi gerekir
  • Öğrenme eğrisi maliyeti
  • Diğer ürünlerle entegrasyon maliyeti (şimdi ve gelecekteki)
  • ... vb

Teorinin dışında teknoloji seçiminiz için ciddi sonuçlar var.

Şimdi doğru aracı seçmeyin demiyorum - sadece doğru aracın maliyet anlamında bile kırılabileceğinden emin olun.

Bu kişisel bir projeyse - her zaman "doğru" aracı kullanın - böylece iş bağlamında bu kararla karşı karşıya kaldığınızda daha bilinçli bir çağrı yapabilirsiniz.


2
Teoride 'basit' değil. En iyisi gerçekten ne anlama geliyor ? Kriterler nelerdir?
whatsisname

+1: Tüm faktörler birleştirildiğinde, doğru araç en iyi araç olmayabilir - az insan bunu elde eder, en iyi aracı seçer ve sonuçlarına katlanır.
Steven Evers

1
@whatsisname en iyi sübjektiftir ve ortamınıza, bütçenize, zaman diliminize bağlıdır ... - ancak bir ev projesinin ruhuyla bu sorunu çözmek için tasarlanmış bir teknolojiyi denemek söz konusu olacaktır. Dağıtılmış için Erlang, metin manipülasyonu için Perl - o zaman kendi kararınızı verebilirsiniz.
Stephen Bailey

Gittikçe daha fazla emin olduğum bir şey, Java'nın çoğunlukla iş için doğru araç olmamasıdır. Çok daha iyi alternatifler var. Beni yanlış anlamayın. '00'de büyük bir dildi ve birçok insan buna alıştı ama benim için artık EN İYİ araç değil (ama bazı durumlarda hala kullandığım bir araç, sadece en iyi değil) artık işim için. Tamircilik için değil, web için değil büyük veriler için değil.
dbow


3

Bu bir iş sorusu dışında gerçekten çözülemez. Bununla birlikte, birçok iş sorusu sadece kısa vadeli sayılara bakılarak yapılır, bu böyle bir şeyle ilgili bir hatadır.

Genel yaklaşımım:

  1. Küçük veya kısa vadeli bir şeyse, her zaman tanıdık araçlara yazın.
  2. Bu büyük ve uzun vadeli bir şeyse, yeni bir araç öğrenmenin maliyet-fayda dengesine bakın.
  3. Emin değilseniz, uzun vadeli bir şey olduğunu kanıtlayana kadar kısa vadeli bir şey olarak ele alın. Sonra gidip karara tekrar bakın.

Maliyet ve fayda hakkında düşündüğünüzde aklınızda bulundurmanız gereken üç şey: Birincisi, acelesi olan insanlar geleceği kısa değiştirme eğilimindedir. İkincisi, bakım maliyetleri, başarılı bir sistem için maliyetlerin aslan payıdır. Üç, iyi geliştiriciler bir şeyler öğrenmek ve geliştiricilerinizi mutlu etmek gibi uzun vadeli bir yatırımdır.


1

Harika bir soru! Whatsisname'nin cevabında söylediği gibi, "aşina yeterli kredi verilmiyor." Farklı bir araç, farklı bir çerçeve, farklı bir dil kullanmaya alışık olduğunuzdan çok daha iyi olabilir ve ipleri öğrendikçe hala onunla çok daha az üretken olacaksınız.

Birkaç yıldır dijital ajanslarda ASP.NET geliştiricisi olarak çalışıyorum; burada büyük projeler, küçük projeler, sıkı projeler, iyi doldurulmuş projeler vb. "yumuşak hedefler", acı ve sıkı teslim tarihleri ​​olmayan daha küçük projeler aramak ve bunları üstün olabilecek yeni teknoloji kullanma fırsatı olarak kullanmaktır. .NET 2.0, 3.5, 4.0, ASP.NET MVC, Linq to SQL, Entity Framework - hepsi, ilk kez böyle bir projede kullandım.

Fırsatlarınızı bu şekilde alabiliyorsanız, umarım, aşinalık eksikliği yaşamadan doğru aracı seçmek için daha büyük bir seçenek setiyle hazır olacaksınız. Julio örneğinde olduğu gibi: repertuarlarına Ruby ekleyebilecekleri bir hedef buldular ve şimdi ileriye doğru Java ve Ruby arasında seçim yapabilirler.

Ancak son teslim tarihi kısa ve sağlamsa ve proje önemliyse, tanıdık araçlara bağlı kalmanızı tavsiye ederim. Farklı bir şey daha uygun olabilir, ancak böyle projelerde her şey riskle ilgilidir .


1

Bu birkaç şeye bağlıdır:

1. Yeni diller veya araçlar öğrenmek konusunda ne kadar başarılısınız.

Hızlı bir çalışma yapıyorsanız, yeni dilleri veya araçları öğrenmenin önündeki engel daha düşüktür. Bu, araç kutusuna başka bir araç ekleme fırsatı verir.

2. Nasıl dil / araç bağımsız çalışma ortamı yapmak.

İş akışınız araca oldukça bağımlıysa, farklı dilleri öğrenmenin önündeki engeller daha yüksektir. Belirli bir IDE'ye bağlıysanız, dil değiştirmek sadece bir dil öğrenmekten çok daha fazlasını içerir, çünkü metin düzenlemek sizi kesinlikle hayal kırıklığına uğratır.

Vim veya emacs kullanan birisinin bu sorunu yoktur. Tek yapmaları gereken yeni dili öğrenmek.

3. İş Gerçekliği

Yeni araçlar / diller öğrenmek zaman alır. O zamanın bir maliyeti var. Ancak bu maliyetin, ilk masraftan daha fazlasını geri ödeyen bir yatırım olma potansiyeli vardır. Ayrıca, kaba bir çözümün uygulanması genellikle daha uzun sürer ve bakımı daha zordur. Küçük bir projeden daha büyük bir şey varsa ve mevcut araç kutumdaki araçlar soruna uygun görünmüyorsa, hangi araçların soruna uygun olduğunu araştıracağım. Ayrıca genel bir yaklaşıma uyacak bir ortama yatırım yaptım, vim'i seçtiğim editör olarak kullanmayı öğrendim.

Başka bir şey - iki nokta arasındaki en kısa mesafe nedir? Birisi neredeyse yapmak istediğim şeyi yapan bir şey yazmışsa, genellikle ihtiyaçlarıma göre değiştirmek en hızlı yöntemdir.


0

Merak ettiğiniz yeni bir dil varsa ve siz (ve işiniz) bunu karşılayabilirseniz, neden onu keşfetmek için birkaç haftadan bir aya kadar vermiyorsunuz?

Ruby'yi böyle öğrendim. Kodlayıcı iş ortağımın Java ile 7 yıllık deneyimi vardı. 11 yıllık Java deneyimim vardı. İkimiz de yakut hakkında hiçbir şey bilmiyorduk, sadece denemek istedik.

Onu ve şirketin geri kalanını bir ay boyunca ruby ​​denemeye ikna ettim (bu 6-8 aylık bir proje olacaktı). En kötü durumda, bu zamana Java kullanarak başlayacağız.

Neyse ki bir hafta sonra biz kanca, bu yüzden iyi çıktı. Belki de benzer bir şey deneyebilirsiniz? Başka bir dilde sıfırdan bir şey yapıp yapamayacağınızı görün, ancak bunu neden yaptığınızı ve en azından en önemlisi, denemenin başarısız olması durumunda B planının ne olduğunu açıkça belirtin.


0

Açıkçası bu soruya tüm durumlar için geçerli tek bir cevap yoktur. Ama işte henüz bahsedilmediğini düşündüğüm bir özellik. Bir geliştiriciyseniz, kendi pazarlanabilirliğinizi de dikkate almalısınız. Projeniz için X dili seçildiyse özgeçmişinize nasıl bakacaksınız? Öğrenmek için bir nedeniniz olması, entelektüel ufkunuzu genişletmek ve becerilerinizi gelecekteki işverenler için daha çekici hale getirmek için, bilmediğiniz bir dili seçmek iyi bir fikir olabilir.


0

Bir dile aşina olmanın "bir iş için doğru araç olmanın" bir yönü olduğunu söyleyebilirim. Dili tamamen bilmediğim için, Prolog'un benim için iş için doğru bir araç olacağı bir durum düşünemiyorum.


0

Kendi versiyonum, iş için "benim için uygun olan aracı kullanmak" tır. "Kullanılabilir" olmak, yalnızca derleyiciyi ve / veya çalışma zamanını satın alabileceğim / alabildiğim için kullanabileceğim anlamına gelir.

Hemen hemen her gerçek hayatta senaryoda, bir problemi çözmek için onu çözmek için çok sınırlı zamanınız vardır. Kısa sürede yeni bir dil öğrenebileceğinize inanmıyorum . Bir dil öğrenmek aslında kitap okumak, başkalarının kodlarını okumak, nasıl çalıştığını ve arkasındaki felsefeyi anlamak demektir. Bir (sadece bir başlangıç ​​noktası olarak mükemmel) web kapalı bir öğretici okumak ve hack olsun. Ama bu korkunç bir koda yol açacaktır ve muhtemelen daha kısa sürede bildiğiniz bir dilde daha iyi kod yazmaktan daha iyi olabilirsiniz.

"İş için doğru araç" atasözünün yararlarına rağmen, en popüler diller aslında genel amaçlıdır. Belirli alanlarda güçlü yanları olabilir ve diğer alanlardaki diğerleri kadar iyi olmayabilirler, ancak çoğu işi yapabilirler. Bir dili pratik olarak bilmemek, aracın sizin için mevcut olmadığı anlamına gelir.

Sadece bir (hatta iki veya üç) dil öğrenip bunları tüm projeler için kullanmıyorum ve başka bir şey öğrenmiyorum. Diğer dilleri öğrenmek, araç kutunuza eklemek için daha fazla araç edinmek önemlidir. Ancak bir sorunla karşılaştığınızda, tanıdık teknolojileri kullanarak endişelerinize eklemek yerine bildiğiniz araçlara sadık kalmak daha iyidir. Ancak bir dahaki sefere seçimin daha kolay olması için diğer dilleri öğrenmeye devam edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.