Bir meslekte programlama olarak dipte bir yarış mı? [kapalı]


41

Bana göre programlama endüstrisi en altta bir yarış içinde. Aşağıdakileri uygularsak:

  1. En iyi uygulamaları uygulamak için zaman ayırmamak
  2. Diğer kişilerin kodunu mümkün olduğunca kullanmak (sorumluluk olarak özel kod)
  3. Verimliliği artırmak için giderek daha yüksek seviyeli dilleri kullanmak
  4. GUI tabanlı geliştirme, "programlamayı" büyük ölçüde basitleştiren ve insanların kodun arkasındaki sıhhi tesisatı anlamalarını gerektirmeyen "araçlar"

Bu şeyler bana, başka bir ofis çalışanı gibi olma yarışında olduğumuzu gösteriyor. Beceri gerektirmeyen şeylerin (değiştirilmesi kolay), önceden oluşturulacak şeylerin (daha az proje süresi) işveren tarafından çıkarları.

Buradaki amacım şudur: a) Beceri ile işverenin ekonomik çıkarları arasında yanlış hizalama var mı? ve b) varsa, mesleki standartları uygulamak için onu nasıl hafifletirsiniz?


28
Birisi hala bu araçları yapmak zorunda. Yani bir anlamda iyi programcıları sıkıcı işten uzak tutmak için bir yarış.
Jeremy Heiler

11
Neden birileri yazılım geliştirmenin geleceğinin bileşenleri sürükleyip bırakmakla kaynaşacağına inanıyor benden öte. Cidden, bu kadar kolay olacağına dürüstçe inanıyor musun?
Pemdas

3
@Pemdas: İlerleme ve / veya değişim halinde insan korkusu. 150 yıl önce yapılan buharlı lokomotif kötülük olarak algılandı.

4
Pierre Bununla nereye gittiğini anladığımdan emin değilim.
Pemdas

3
Dijkstra, sen misin?
l0b0

Yanıtlar:


6

Bence çok keskin bir soru sordun.

GUI kodlama araçlarının oluşturulması, programcıları, robotların montaj hattı işçilerini bir işten çıkardığı kadar işsiz bırakıyor. Bence iş kaybı olsa da, bir sonraki işlerin olduğu yerde de bir değişim var.

Bir görevi yerine getirme teknolojisi değişiyor, ancak görev hala tamamlanmalı: Arabalar sürülmeden önce hala yapılmalı / monte edilmeli; Uygulamanın çalışması için kod / işletme mantığının hala bir araya getirilmesi gerekir.

Teknolojideki değişimler, programcılar için seçenekler sunar: GUI tabanlı programlama veya program GUI araçlarını öğrenin ... veya ... tamamen başka bir şey.

Çalışanların becerileri ile işverenin çıkarları arasında bir yanlış hizalama olabilir, ancak özellikle işveren anlayışlıysa, uzun süre değil. Bu nedenle, hem işverenin hem de çalışanın çıkarları için çıkarlarını gözeterek, çıkarlarına en uygun olanıdır. Fakat bir tanesi kaçınılmaz olarak diğerinin önünde olacak. Umarım sensin (-:

En iyi dileklerimle,

KM


Benim düşüncem daha özel yazılım geliştirmeye odaklanmak: matematiksel, istatistiksel ve hesaplamalı yoğun programlama (3'üncü VM gücündeki artışlarla birlikte tarz dışına çıksa da). Bu uzmanlık alanlarının o yarışta olduğunu sanmıyorum, ancak onlarda deneyimim yok, bu yüzden yanılıyor olabilirim.
q303

@ q303: Her zaman mevcut tüm bilgisayar gücünü alacak birçok uygulama olacak.
David Thornley

58

Bahsettiğiniz trendlere bir tane daha ekleyeceğim, ki IMHO bunları açıklar:

Her zamankinden çok daha fazla programcı (ihtiyaç var) var.

Programlama gerektiren veya içeren görevlerin sayısı her geçen gün artmakta ve programcı sayısından daha yüksek bir oranda artmaktadır. Günümüzde ortalama bir arabada birkaç mikroçip var. 5 yıl içerisinde buzdolabınızda ve kızartma makinenizde bir çip olabilir. 10 yılda iç çamaşırın mı? Ve birileri bunları yapabilmek için tüm bu yazılımı üretmeli. Dolayısıyla, ne otomatik hale getirilebilecek olursa olsun otomasyonu yapmak ve "üretkenliği" geliştirmek için mümkün olan her türlü çaba var (ancak tanımlanmıştır). Ve gittikçe daha fazla taze beyin toplanıyor.

Bu, günümüzdeki aktif programcıların çoğunun deneyimsiz ve / veya işlerine hazırlıklı olmadıkları anlamına gelir. Yeterli bir tecrübe seviyesine ulaşmak birkaç yıl alır ve kendinizi orada tutmak için sürekli öğrenme gerekir. Sonuç olarak, programlama işlerinde gittikçe daha fazla zorlanıyor. Fakat onları arayan herkes için hala yeterli zorluk var .

Yukarıdaki şeylerin aleyhine şeytanın avukatı oynayalım:

En iyi uygulamaları uygulamak için zaman ayırmamak

Birçok insan yapmaz, birçok insan yapar. On yıllarca önce, ünite testini ve çevik yaklaşımı keşfettiğimde, meslektaşlarımdan hiçbiri ne olduğu hakkında en ufak bir fikre sahip değildi. Günümüzde üniversitelerde neredeyse standart bir malzeme olduğu için pek çok yeni mezun zaten bunu anladı.

Diğer kişilerin kodunu mümkün olduğunca kullanmak (sorumluluk olarak özel kod)

Neye karşı olarak? Tekerleği yeniden icat etmek? Veya bundan kaçınmak için başkalarının kodunu mu kullanıyorsunuz?

Sorunları çözmek için (çoğunlukla) paramızın ödendiğine dikkat etmenin önemli olduğunu düşünüyorum ve kod yazmanın bir son değil, sadece bunun için bir araç olduğunu . Tek bir kod satırı yazmadan bir problem çözülebilirse, müşteriyi mutlu eder. Özellikle bu şekilde daha güvenilir ve hızlı bir çözüm üretmeyi başarırsak. Bununla bir problem görmüyorum.

Verimliliği artırmak için giderek daha yüksek seviyeli dilleri kullanmak

Meclisteki herşeyi kodlamanın aksine mi? ;-)

GUI tabanlı geliştirme, "programlamayı" büyük ölçüde basitleştiren ve insanların kodun arkasındaki sıhhi tesisatı anlamalarını gerektirmeyen "araçlar"

IMHO herhangi bir araç yanlış kullanılabilir. Bu GUI inşaatçılarının mutlaka mükemmel veya hatta iyi olduklarını söylemek değildir - çoğu (veya en azından bazıları) kendi sınırları dahilinde kullanılabilir. Fakat eğer birisi bu sınırları bilmiyorsa, bu araç veya kullanıcısının sorunu mu?

Genel olarak, (kanıtlayacak kanıtı olmamasına rağmen) delikli kart ve makine kod günlerine geri döndüğüne, kabaca mevcut kodun aynı oranının şu anda olduğu gibi korkunç olduğuna inanıyorum.

  • genel kod miktarı ve
  • yabancıların şimdiye dek bu kodu görme şansı

çok daha azdı.

Şimdi, İnternet ve Daily WTF ile günden güne en kötü örneklere maruz kalıyoruz. Terörizm ve depremlerle ilgili tüm haberleri izlemek, ünlüleri boşamak ve biraz da bu dünyanın ne kadar tehlikeli ve ahlaksız olduğunu söylemek gibi.


+1 Sanırım "her çözüm yeni sorunları doğuruyor" şeklinde bir geri besleme döngüsü içindeyiz - olumsuz mu yoksa olumlu bir döngü mi olduğunu söyleyemem.
Maglob

6
+1 Eğer sadece iyi kodlayıcılar her şeyi sıfırdan yeniden yazarsa, o zaman mutsuz bir programcı olurum.
AndrewKS

1
Çalışma süresi kabul edilebilir olmadığı sürece iç çamaşırımda cips istemiyorum!

@ Thorbjørn: İç çamaşır için kabul edilebilir çalışma süresi nedir? Kendi kendine yıkanıyor olsaydı, çalışma süresi için endişelenirdim ... aksi halde her gün onları çıkarmalısın (umarım!)
Dean Harding

1
@ back2dos, bunu bir anlaşmazlık olarak görmüyorum. Kalın çizgi eğilimi belirtir veya dilerseniz şirketler / yöneticiler de görüşlerini açıklar; geliştiricilerin görüşlerini siz belirtirsiniz. Sektörde kalite seviyesini yükseltmek için daha iyi programcılara, daha pratik eğitime, mentorluğa sahip olmanın ideal olacağı konusunda hemfikirim. Ancak, üzücü gerçeklik farklı. Yazılım bir meta haline geldi, o kadar çok insan bu tür kararların (kısa veya uzun vadeli maliyetler gibi) anlamını anlamadan hızlı ve ucuz olmasını bekliyor.
Péter Török

29

Durumu doğru bir şekilde özetlersin, ancak anlamını tamamen yanlış anlarsın.

Yazılım daha güçlü hale geldikçe, onunla birlikte üstlendiği görevler. Bu nedenle, Access'i kullanabildiğiniz zaman telefon rehberi veritabanı oluşturmak için veritabanı programcısı olmak gerekmeyebilir. Wordpress'e gidebileceğiniz bir blog oluşturmak için bir web programcısı olmanız gerekmeyebilir. Ancak, 15 yıl önce bu şeyleri yapmak için bir programcı olmak gerekliyken, programcıların şimdi yaptığı şey, 15 yıl önce yapılabileceklerden daha büyük bir emirdir.

Bu şekilde koyalım, bundan 100 yıl sonra, facebook veya google kadar karmaşık bir sistem kurmak önemsiz olacak. Onların web sayfalarını konuşmuyorum, veri merkezlerini kastediyorum. Herkes yapabilir. Hala kullandığımız varsayılarak telefonlara yerleştirilecek. ANCAK, yine de programcılar olacak ve bundan böyle 100 yıldan beri bu tür 'önemsiz' sistemler üzerinde çalışmamalarına rağmen, burada hiç kimsenin kapsamını anlamaya başlayamayacağı kadar karmaşık ve karmaşık sistemler üzerinde çalışacaklar. ölçeği. Ve şu anki sistemler gibi bu sistemler ortalama bir ofis çalışanının ulaşamayacağı kadar uzak olacak çünkü programcılar denilen bazı insanlar o dönemin teknolojisini uç noktalarına itmek için uzmanlaşmayı seçecekler.


İlginç bakış açısı ...
q303

10
GrandmasterB'ın bir bilim-kurgu yazmasını istiyorum.
ocodo

5
Telefonumda kendi google veri merkezimin olmasını bekleyemiyorum.
Martin York

3
@Slomojo Düşündüğünüz gibi bilim kurgu değil. 3. sınıfta çocukken, evimin yakınındaki kolejde bir bilgisayar gösterisini ziyaret ettim. Halkın deneysel bir vitrini oldu. Sergilenen programlardan biri oynanabilir bir tic-tac-toe oyunuydu. O dönemde bilgisayara karşı bir oyun oynayabilmek için ah ve ah bir an olarak kabul edildi. Bu 60'ların sonlarındaydı. Oh ve ah anları bundan 100 yıl sonra ne olacak?
Bill

Söylediği gibi atıfta bulundum, içeriğin bir fantazi olacağı değil, Pong devrimci olduğu zamanlardaydım, Nintendo çocuklarının teknolojideki üstel değişikliklerle de ilgili olabileceğinden eminim.
ocodo

18

Şimdi kırk yıl boyunca böyle bir şey okudum ve tahminlerin başında değildim. Daha olmadı.

COBOL, iş programcılarına olan ihtiyacı ortadan kaldırmayı amaçlayan orijinal geliştirme aracıydı ve assembler'den çok daha üst düzeyde bir dildi. Kod kütüphaneleri (kendi kodunu yazmak zorunda kalmaktan kaçınmak için) benzer antikalara sahiptir.

Sıklıkla programlayıcı olmayanların programlama işlerine daha çok benzer şeyler yapmalarını sağlayan bir şeyler ortaya çıkar. 1980'lerin "dördüncü nesil dilleri", Excel gibi fantezi hesap tabloları, rapor üreteçleri ve benzerleri vardı. Düzgün bir şekilde yaptıkları, başarılı olursa, scutwork'ün bir kısmını programlamadan çıkarmak ve programcıların başka, daha ilginç şeyler yapmasını sağlamaktır.

Bu kalıp sonsuza dek sürmeyecek, ancak programlama gerçekten yokuş aşağı gittiğine ikna etmek için teorik argümanlar ve öngörülerden daha fazlasına ihtiyacım olacak.

COBOL'den modern geliştirme araçlarına konu, yanlış bir spesifikasyon alma ve onu kesin ve yararlı bir şeye dönüştürme becerisinin yerini almamasıdır. Programcıların temel yeteneği budur ve neden uzun süredir gitmiyoruz.


7
+1 - "yanlış bir şartname alın ve kesin ve kullanışlı bir şeye dönüştürün."
ocodo

+1, bu oyunda senin kadar uzun zamandır bulunmadım, ama kesinlikle bu soru ile aynı şeyi duydum ve şimdi 20 yıl boyunca tekrar dile getirdim.
Carson63000

4 gl için +1, tam olarak bunu söylemeye geldim. Bütün bu sözler, çok az teslimat :)
Ian,

"Bu kalıp sonsuza dek sürmeyecek" - neden olmasın?
Ian Warburton

3

Assembly ve FORTRAN programcıları muhtemelen yapılandırılmış programlama ve yaygın tercümanlar resme girerken aynı şeyleri söylediler.

Günün sonunda, yazılım önceden elle yapılan bir şeyi otomatikleştirmek için yaratılmış bir yaratımdır. Ilımlı bir şirketteki bir muhasebe departmanı daha önce düzinelerce insana ihtiyaç duyuyordu, şimdi bütün bu işler bir ya da iki kişinin işi ile gerçekleştirilecekti. Sonuç olarak, kale direkleri taşındı ve şimdi bu ekstra yetenek standardının bir muhasebeciden gelmesini bekliyoruz.

Film yapmak, her zamankinden daha fazla Pixar alır. Bilgisayar hızındaki muazzam artışa rağmen, bununla birlikte animatörler sahnelerinde sürekli artan karmaşıklık ve ayrıntı talep ettiler. Toy Story calibre animasyonu, 1995 yılında olduğu gibi 2010 yılında da kabul edilemez. Araçları geliştikçe yetenekleri ve beklentileri de var.

Sürükle ve bırak veya diğer programlama metodolojileri ortak olduğunda, dünya daha zorlu ve karmaşık problemlere çözüm talep edecek ve bunları çözmek için bu yeni fantezi araçlarını kullanan programcılara ihtiyaç duyacaklar. Kale direkleri hareket edecek.


3

Hala yapacak çok işim olacağına işaret eden cevapların çoğuyla aynı fikirdeyken, düşünmeniz için farklı bir cevap vereceğim:

Evet öyle ve öyle olmalı

Başkalarının yapamayacağı sorunlara bir çözüm tasarlamak için buradayım. Araç setinde, tasarımımı nasıl uygulayacağımızla ilgili tüm küçük ayrıntılarla başa çıkmak için sorun çözmekten zaman alan bir şey israf.

Daha yüksek bir dile veya daha basit ve daha soyutlanmış bir araca gitmekten korkmamın tek nedeni, bu araçların sık sık benim önümde olan varsayımlar yapması ve istenen uygulamayı elde etmek için varsayımlar üzerinde çalışmak için zamanımı gerektirmesidir.

Çözülecek sorunlardan her zaman daha iyi problemler vardır. Tüm dev zinciri bu kadar basit hale gelse bile, okul öncesi çocuklar onu kullanabildilerse, tasarlanan çözümlerin çoğu, insanların daha iyi bir çözüm için ödeme yapması için yeterince yetersiz ya da yetersiz olacaktı çünkü çoğu insan, tüm son vakalarla ilgili sorunlara doğru çözümü görmekte kötüydü. ve iyi bir çözüm yapmak için düşünmeniz gereken şeyler.

İşlerimiz, sorunları diğerlerinden daha iyi çözmek için, takım zinciri karmaşıklığı, büyük resim görünümünde, yoldan çekildiği ve iyi bir şey inşa etmenize ve inşa etmenize izin verdiği müddetçe çok önemli değildir.


1

Programlama teknolojileri değişebilse bile, bir yazılım ürününün altında yatan karmaşıklık hala oradadır. Yazılım, diyagramlar veya akış çizelgeleri kullanılarak (veya başka bir 'basit' şekilde) tamamen yazılabilirse, yazılımın tüm karmaşıklığının hala anlaşılması ve ele alınması gerekir. Bu nedenle, işverenlerin, ürünlerini yenilemek veya yeni özellikler eklemek için şirketin ürünlerini tanıyan programcı (lara) sahip olmaları önemlidir. Ve çalışanların bir yazılım ürününü öğrenmesi biraz zaman alabilir.


1

Rafı ne otomatik hale getirebilir veya çekebildiğiniz önemli değil, paketlenmiş yazılımların çoğu iki kategoriye ayrılır:

  1. Kullanımı basit, ancak işletmenin gerçekten ihtiyaç duyduğu şeyle tam olarak uyuşmuyor
  2. Son derece özelleştirilebilir, ancak özelleştirmeyi anlamak ve kaldıraç yapmak için bir uzman gerekir

Üçüncüyü unuttum Sanırım standart üretkenlik yazılımı (e-posta, tarayıcı, word proc, vb.). Birinci kategorideki yazılım, yazılım geliştiricilerini raf dışı yazılımı özelleştirmek için işe alır (bu mümkün ise). Bir geliştiriciyi işe alabilirler çünkü içeride ve dışarıda özelleştirilebilir sistemi bilen kişi ya çok aranır (SAP, PeopleSoft, vb.) ya da ölmekte olan bir cinsdir (SAP ve PeopleSoft'a benzeyen herhangi bir sistemi düşünmeyin) aynı pazar penetrasyonuna sahip).

Geliştiricilere her zaman ihtiyaç duyulacaktır. Gördüğüm şey, daha önce elle kullanılan, sıkıcı, tekrarlanan çalışmaların otomatikleştirildiğinin daha fazlası olduğudur (veri erişimi için elle bir O / RM kullanarak veri kodunu yazmayı düşünün). Bu, geliştiricilerin işletmeye daha az çabayla daha fazla değer katmalarını sağlar.


1

Argümanlarını kabul etmiyorum:

  1. En iyi uygulamaları uygulamak için zaman ayırmamak

bunun haricinde.

  1. Diğer kişilerin kodunu mümkün olduğunca kullanmak (sorumluluk olarak özel kod)

Kod tekrar kullanımı en iyi uygulamadır. Kullanılan kod test edildi. Tabii ki, birçok kişi tarafından bakımı yapılan ve kullanılan iyi kaynaklardan gelen kodları kullanmalısınız.

  1. Verimliliği artırmak için giderek daha yüksek seviyeli dilleri kullanmak

Verimlilik kendi başına fena değil - öyle mi?

  1. GUI tabanlı geliştirme, "programlamayı" büyük ölçüde basitleştiren ve insanların kodun arkasındaki sıhhi tesisatı anlamalarını gerektirmeyen "araçlar"

Takım işi yaparsa: Kullanın. Değilse: reddet. Söz tutarsa ​​ve insanların gerçekten kodu anlamalarına gerek yok - aferin! Bunun, sahip olmayan bir söz olduğunu söylüyor gibisin?

(Buradaki sayılar otomatik olarak yanlış yapılır. :))


Mesele şu ki, etkili olmak için daha az beceriye ihtiyacınız var. GUI tabanlı geliştirme konusunda "araçlar" hakkında kötü bir şey yoktur. Onlar için kötü olan şey, tekrarlanan kullanımın, yaptığımız şeyi yapmak için gereken beceri seviyesini düşürmesidir. Aynı şey başkalarının kodunu kullanmak için de geçerli: sonunda, Google platformunda programlamaya başlarsınız. Son olarak, yüksek seviyeli diller, yine beceri gerektiren bir çok incelik soyutlar. Bunların hiçbiri bir işveren için kötü değil, proje yönetimi açısından. Bununla birlikte, mesleğin geleceğini sorgulamamı sağlıyor.
q303,

Hepsi gereksinimlerinize bağlı. Özel olarak dağıtılmış veriler için ince ayarlı özel amaçlı bir sıralama tekniğine ihtiyacım olmadığında, bazı hızlı tarama algoritmasıyla kitaplıkları mükemmel bir şekilde kullanabilirim. İhtiyacım olmadan neden buna eğilmeliyim? Belki başka bir şey öğrenmek için zamana ihtiyacım vardır - fontkerning, veritabanı erişimi, GUI tasarımı ... - siz adlandırın. Becerilerin olması güzel, ancak sahip olabileceğiniz çok fazla yetenek var. Bazen demek doğrudur: YAGNI.
kullanıcı bilinmeyen

1

Görsel programlama, metin tabanlı programlamaya göre daha az geçerli değildir veya küçük harfleri hak ediyor.

Görsel olarak programlama yaparken bazı açıklar ve zorluklar var, ancak göz ardı edildiğinde temel bileşen sıhhi tesisatının göz ardı edilebilecek derecede tehlikeli olması, görsel bileşenler ve daha önemlisi görsel tasarımcılar tarafından tekelleştirilmemiştir. Temel sıhhi tesisatın yok sayılması her türlü gelişme için bir risktir.

Labview'ı deneme şansınız varsa, potansiyeli (hatta Lego NXT ortamında uzmanlaşmış bir değişkeni) görebilirsiniz. Kusurlar veya eksiklikler olmasa da, miras yararları vardır. Görmek inanmaktır.


0

Programlama uygulamaları yalnızca üretkenliği artırmak ve belirli gelişim türleri (en altına yarışınız) için maliyetleri düşürmekle kalmaz, aynı zamanda uygulama yeteneklerini ve müşteri beklentilerini de arttırır (bu nedenle en üste bir yarış teşvik eder). Goole ve Facebook'un üst düzey teknoloji uzmanlarına ulaşmak için ödedikleri bonuslara tanık olun.


0

Programlama kadar değişime yönelen varoluş mühendisliği ile ilgilenen başka bir meslek yok. Bir şeyi basitleştirdiğiniz anda, yeni fikirler doğuran yeni sorunlara bir kutu açabilirsiniz.

Bu yüzden, bireysel uygulayıcının kötü uygulamaları, hümanizmden yoksun davranışları ve kötü alışkanlıkları ile yeni zorluklara, fikirlere ve kullanıcı deneyimlerine doğru ilerlememize yardımcı olmak için başkalarının kod ve çözümleri paylaşma çabalarını kirletmem.


-2

Aşağıdakileri uygularsak:

  • En iyi uygulamaları uygulamak için zaman ayırmamak
  • Diğer kişilerin kodunu mümkün olduğunca kullanmak (sorumluluk olarak özel kod)

O NE LAN? Bu listenin tutarsız olması mı demek istediniz? Listeler, her öğe için uyarı vermeden geri ve ileri gitmek yerine aynı taraftan gelmelidir. Dolayısıyla listeniz okumalısınız:

Aşağıdakileri uygularsak:

  • En iyi uygulamaları uygulamak için zaman ayırmamak
  • Değil (borç olarak özel kod) mümkün olduğunca diğer insanların kodu kullanarak


1
@NoahRoberts: Düzenlemeniz ikinci madde imi noktasının anlamını değiştirir. Bu aynı zamanda soruya uygun bir cevap değildir ve bunun yerine bir yorum olmalıydı.
Adam Lear

@Anna - Bu elbette bir düzenleme değildi. Bu yüzden asıl sorudaki değişiklikler olarak görünmüyor. Bu bir cevap çünkü sorudaki kusurlu bir öncülleri ele alıyor.
Edward Strange

Öncül nedir?
q303,

3
@HayırRoberts: Biraz garip bir şekilde ifade edilir, ancak listenin anlamında tutarlı olduğuna inanıyorum - q303, "başkalarının kendi özel kodunu kendi yerine evde yazmak yerine kodunu kullanarak" argümanında destekleyici bir nokta olarak alıyor.
Adam Lear

@ q303 - Görünüşe göre diğer insanların kodlarını mümkün olduğunca kullanmak kötü bir uygulama. Yine de listenden çıkardım.
Edward Strange
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.