Programcılar Sorumluluk Beyanı [kapalı]


40

Böylece, hepimiz Programcılar Haklar Bildirgesi'ni duyduk ve XP'nin de benzer bir konsepti var.

Bu günlerde, insanların hakları hakkında çok şey duyduğumuz, ancak sorumlulukları hakkında çok fazla duymadığımız, yaygın olarak görülen bir şikayet, programcıların sorumlulukları hakkında ne olması gerektiğidir. Bu, yapması gereken, hoş olmayan bir şey bulabilecekleri, ancak programcıları profesyonel ve sorumlu davrananlardan, yapmayanlardan ayıran şeylerdir.

Öncelikle hoş olmayanlar ve olmayacak olanlarla ilgileniyorum. Programcıların gerçekte% 90'ının yapmak istediklerinden (örneğin her zaman refactor ve kaynak kontrolünü kullanmak gibi) yapmaktansa, programcıların büzme ve kaçınma eğiliminde olanlarıdır.

Öyleyse, Programcı Sorumluluklar Bildirgesi'nde neler olmalıdır?


4
Dahası, 1,2,4 ve 6 numaralı kurallara uyduğunu düşünüyorum.
Stephen Furlani

2
Bence sorulması gereken önemli bir soru.
HLGEM

1
Önemli bir takip, 'Kendinizi Sorumlu Programcı olmak için nasıl eğitirsiniz?' Olabilir.
Stephen Furlani

2
Bu sorunun sadece bir ürün listesi oluşturduğu görülüyor. Her ne kadar cevaplar etkileyici olsa da (ve zamanlarını ve çabalarını yazılarına koyan cevaplayıcıları takdir ediyorum), düşüncelere odaklanıyorlar ve sorunun ifadesi de beni sorgulama olarak vurguluyor.
Thomas Owens

5
@ThomasOwens, "Bu soru bizim soru-cevap formatımız için uygun değil." Bu zaten geliştirici testleri, geliştirme metodolojileri, serbest meslek ve iş ile ilgili endişeler, kalite güvencesi ve yazılım mühendisliği ile ilgili bir cevap üretti, yukarıdaki gibi sorular kapalı kalmaya devam ederse neden bu siteye sahip olduğumuzu bile bilmiyoruz.
Joshua Drake

Yanıtlar:


41
  • Bir programcı kör gereklilikleri yerine getirmek yerine, zayıf gereksinimleri geri çekme sorumluluğuna sahiptir. Bu, müşterilere istediklerinin diğer seçeneklerden daha pahalı olduğunu veya belirli bir risk grubuna sahip olduğunu söylemeyi içerir. Ayrıca, kötü haberi profesyonel bir şekilde iletmeyi de içerir - çığlık atmamaya, insanları aptallaştırmaya, aptal veya başka çocukça davranışlara işaret etmeyi içerir. Geri iterse, bir takım nedenlere ("SQL Server'dan hoşlanmam ve kullanmayacağım" den daha fazla) ve sunacak alternatif bir plana sahip olmalıdır.

  • Bununla birlikte, programcının aynı zamanda kararları kabul etme ve itirazlarının kabul edilmemesi durumunda beğenmeyebilecekleri araçları veya tasarımları kullanma sorumluluğu vardır. SSRS’de bir rapor istendiyse, bunu Crystal Reports’a (müşterinin sahip olamayacağı) bildirmek kabul edilemez. Bir net çözüm gerekliyse, Haskell içinde teslim kabul edilemez. Ekipte başka hiç kimse kullanmak istemediğiniz bir araç veya dil kullanmıyorsa, yönetim belirli bir iş için en iyi araç olduğunu kabul etmiyorsa, kullanımı profesyonelce değildir.

  • Bir programcının çalışmalarını test etme sorumluluğu vardır. (Bu tek test olmamalı, ancak hiçbir profesyonel programcının test etmediği bir kod göndermemesi gerekir.) Bu, çok sık çarpmayı beklemeyeceğiniz kod dallarının bile test edilmesini içerir. Bir dizi iç içe geçmiş IF'niz varsa, tüm olası yolları test edin.

  • Bir programcının hataları ve istisnaları zarif bir şekilde ele alma ve kullanıcının şaka veya hakaret değil, profesyonel ve tarafsız olduğunu göreceği hata mesajlarını yazma sorumluluğu vardır.

  • Bir programcı özel verileri korumak, şirket için yazdığı özel kodu korumak ve kullanıcıları felaketten (kendiliğinden felaketten kaynaklanan felaketler) uygulamayı kullanımından korumaktan sorumludur.

  • Bir programcının kodunun korunabilir olduğundan ve kaynak kontrolünde olduğundan emin olma sorumluluğu vardır.

  • Bir programcının, değişikliklerinin yaptıklarını olumsuz yönde etkilememesini sağlamak için diğerleriyle koordine etme sorumluluğu vardır.

  • Bir programcı, oynamak istediği aracı / dili değil, tasarım aşamasında araçlar veya dil müşterileri için en iyi seçimi önerme sorumluluğuna sahiptir .

  • Bir programcının, sevmediklerinin de dahil olduğu bir proje için tüm uygun personel ile birlikte çalışma sorumluluğu vardır. İnsanları sevmek senin işin değil, onlarla çalışmak ve kibar olmak senin işin.

  • Bir programcının makul bir zaman diliminde belirtilenleri yapan bir ürün üretme sorumluluğu vardır. Zaman çerçevesi karşılanmayacaksa, bilinir bilinmez yönetimi yönetme sorumluluğunu üstlenir.

  • Bir programcı, proje yönetimine işin yapılmasındaki engeller hakkında bilgi vermekle yükümlüdür. Bilmediklerini düzeltemezler.

  • Bir programcının sadece eğlenceli, ilginç kısımları değil, tüm görevi yerine getirme sorumluluğu vardır. Her işin sıkıcı bölümleri var, yine de yapılması gerekiyor. Bu, zaman çizelgeleri ve proje yönetimi yazılımına tartışma öğeleri ekleme gibi şeyleri içerir. Belgelendirme, kod inceleme vb. Şeyleri içerir.

  • Bir programcı, yalnızca programlama kavramlarını değil, desteklediği iş alanını öğrenme sorumluluğunu da taşır.

  • Bir programcının becerilerini güncel tutma sorumluluğu vardır.

  • Bir programcı bozulduğunda, mümkün olan en kısa sürede sorunları çözmek için elinden gelenin en iyisini yapmakla yükümlüdür. Bu, üretim veritabanındaki kritik bir tabloyu henüz silmiş olduğunuzu gizlemeye çalışmak yerine, kötü haberi yönetime taşımak olabilir.

  • Bir programcının başka herhangi bir işçinin sorumlulukları aynıdır - zamanında gelmek, sözleşmeli saatleri çalışmak, önceden tatil zamanı istemek, telefon ve e-posta mesajlarını cevaplamak (e-postalarını okumak için heck), gerekli formları doldurmak için İK, vb


7
Ben seviyorum şaka hata iletileri. Durum zaten yeterince kötü, bundan daha ciddi hale getirmeye gerek yok - en azından bir hatayla tokatlarken beni güldürmeye çalışın!
dr Hannibal Lecter

2
Bir geliştiricinin kodunu her durumda kişisel olarak test etme sorumluluğunu sorgularım ... Kodunun test edildiğinden emin olmak için tekrar ifade ederim ... Kuruluşun profesyonel test uzmanları (otomatik ve insan) ve yerinde sağlam bir süreç varsa Kodun test edildiğinden emin olmak için, geliştiricinin neden kişisel olarak yapmak zorunda olduğunu anlamıyorum. Yeni bir özellik geliştiriyorsam veya bir hatayı düzeltirsem, bunu kendim test edeceğim, aksi halde işim bittiyse bilemeyeceğim. Ancak, büyük bir refactoring işlemi yapıyorsam, tüm ürünü ayrıntılı bir şekilde regresyon testi yaptırmak benim için bir anlam ifade etmiyor.
JoelFan

Regresyon testi demedim, ama istediklerinizi yaptıklarından emin olmak için değişikliklerinizi test ediyor olmalısınız.
HLGEM

2
Hata mesajlarında ünlem işareti yoktur ... yani "Tarih geçersiz!"
JoelFan

1
Bunların cinsiyet-nötr olması gerekir. Bunları zorunluluk haline getirmek, bunu kolaylaştırır; örneğin, "Bir programcının çalışmasını test etme sorumluluğu vardır" yerine, "İşinizi sınayın" olmalıdır.
sigil

42

Her programcı kodunu başkaları tarafından okunabilir hale getirmelidir.


D @Kevin: Yani olan bir sorumluluktur. İnsan tarafından okunabilir kodlar üretmek sizin sorumluluğunuzdadır.
doppelgreener

1
@Axidos, Çünkü ne yaptığımı anladığımda cevabımı değiştirdim.
dan_waterworth

Orignal yorumumu artık alakalı olmadığı için sileceğim.
Kevin D

1
Kim tarafından "Okunabilir"? "Akranlarım" (benimkine benzer eğitim ve deneyime sahip biri)? Olduğu Birisi gerçekten sanat ve bilimde iyi eğitimli? Ya da Dartmouth BASIC'den daha gelişmiş bir şeyle ilgilenmeyen bir Uçan Kod Maymunu mu?
John R. Strohm,

7
@John, bu bağlamdaki diğerleri diğer programcıları ifade eder. Cümlede: "Zürafa diğerlerinden daha büyüktü.", Başkalarını uçan maymunlar demek istemiyoruz. “Diğerleri”, “daha ​​önce bahsedilmemiş aynı türden daha fazlası” anlamına gelir.
dan_waterworth

22

Programcı, tüm kullanıcı verilerinin gizliliğinden ve güvenliğinden sorumludur. Özellikle şifreler, kredi kartı numaraları, e-posta adresleri ve fiziksel konum.


Bu gerçekten sistem mimarinin alanına girer. Pek çok, birçok işletme senaryosunda, programcıların veri depoları üzerinde hiçbir sözü veya kontrolü yoktur. Yaptığım her şey o veritabanına erişirken, oluştururken değil, bir veritabanındaki e-posta adresinden nasıl sorumlu olabilirim?
Neal Tibrewala,

2
Bence Facebook çalışanları yukarıdaki sorumlulukların çoğunun gittiği kadarıyla başvuru yapmak zorunda değil. :)
MetalMikester

4
-1 bu çok fazla sorumluluk.
Peter Turner

6
Belki büyük ölçekli sistemler için bir programcının karar vermesi çok fazla olabilir. Ancak bir veya birkaç programcının çalıştığı sitelerin büyük çoğunluğu için, verilerin uygun şekilde depolanması kesinlikle gereklidir. Birleştirme gerektiğinde şifreleme veya gizlilik gerektiren özel algoritmalar veya güvenlik gerekmez. Gerçek, test edilmiş güvenlik.
Malfist

@Neal: Sistem mimarı başka bir programcıdır. Elbette, büyük projeler için muhtemelen herhangi bir programlama yapamaz, ancak bu programcı olmadığı anlamına gelmez. Ve bu sadece büyük projeler için geçerlidir; 2- veya 3 kişilik projelerde bir programcı genellikle veri tabanının bir kısmından veya tamamından sorumludur; Verilerin güvenli bir şekilde kaydedildiğinden emin olmak onun sorumluluğundadır.
yapılandırıcı,

20

Kullanıcının işini kaybetmesine izin verme.

Bu göründüğünden daha zor ... iş, "dosyadaki verilerden" daha fazlasıdır ... kullanıcının yazılımı ile harcadığı zamandır.

Örneğin, kullanıcı 30 alanlı formunuzu 29 geçerli öğe ve 1 geçersiz öğe ile doldurduysa, 1 geçersiz durumdan şikayet etmek için geçerli tüm verileri temizlemeyin (heck, geçersiz olanı bile temizlemeyin .. belki de uzun ve sadece küçük bir düzeltme gerektiriyor, yoksa kullanıcı daha önce ne yaptığını hatırlamayacaktır)

Belirgin olmayan ama önemli bir örnek, Windows ve pratik olarak diğer tüm "dosya yöneticisi" yazılımlarının yanlış gittiğidir .... Eğer yarım saat dikkatlice harcadıysam bir dizi dosya seçmek için Ctrl-Click'ing ve yanlışlıkla yapmak yerine tıklayın. Ctrl-Click, daha önce seçtiğim dosyalarımı temizlememeli, baştan başlamamı sağladı.

Yanıldıkları bir diğeri ... yanlışlıkla Ctrl-A'ya çarptıysam (hemen yan taraftaki Ctrl-S yerine), dosyadaki yerimi kaybetmemeli ve imleci başlangıç ​​noktasına koymamalıyım. programın "kaybettiği" "iş" dosyasındaki doğru yer.

Bir diğeri: TortoiseSVN'nin “taahhüt” diyalogu uzun bir dosya listesine sahiptir. "Teslim Et" seçeneğine basmadan önce, değişiklikler listesini 2. bir diyalog penceresinde görmek için her birine çift tıklayarak dosya listesinden aşağı inebilirsiniz. Bunu hızlı bir şekilde yapmak için, bazen sadece klavyeyi kullanıyorum <Esc>, 2. iletişim kutusunu kapatıp 1.'e geri dönüyorum. Yanlışlıkla <Esc> iki kez vurursam, aynı zamanda 1. diyalog penceresini kapatır ve hangi dosyaya gittiğimi unutmama neden olur.


5
Birbirlerinin hemen yanındaki tuşlara atanmış şeylerin karşıtlığını yapan klavye kısayolları yapmamaya çalışın (örneğin, CTRL-C ve CTRL-V, ne zaman yapıştırmayı ve tam tersi yapmayı düşündüğümde kopyalanırsam)
HLGEM

5
@HLGEM, Paradoksal olarak, bunu kim tasarladıysa, muhtemelen yan yana koyarak bize bir iyilik yaptığını sanıyordu
JoelFan

4
Ve o değildi? Demek istediğim, Emacs'ın tam gücüne sahip değilsin, ama elini çok fazla hareket ettirmeden kopyalayıp yapıştırabilirsin.
compman

1
Toplam Komutanı kullanın. Seçmek için sağ tıklayın ve seçimi kaldırmak için sağ tıklayın. İzlenen geçerli klasör değiştirilirken başka bir yere gitmezseniz veya uzun süre odağı kaybetmezseniz, seçiminizi kaybedemezsiniz.
konfigüratör,

1
Son örnek için (Ctrl-A dosyadaki yerimi kaybediyor), yakın zamanda birçok programda çalışan kısmi bir geçici çözüm buldum ... Ctrl-Z, Ctrl-Y .... içeriğini dosyala, sonra "yeniden yap", sonuç olarak içeriğin öncekiyle aynı olması ve düzenlemenin bulunduğu yerdeyim. Bu, imlecimin yanlış Ctrl-A'mdan hemen önce olduğu yerle aynı değildir, ancak genellikle yeterince yakındır ... elbette bu programın Ctrl-A'daki kötü davranışını mazeret etmez ... bu sadece kısmi bir geçici çözümdür. ve beni vurmak için biraz zaman aldı
JoelFan

15

Bir programcının programının çalışacağı sisteme saygı duyma sorumluluğu vardır. Geliştirme ve test bittikten sonra, program amacına uygun olarak kullanılacak ve genellikle bilgisayarlarında çalışan diğer insanları kapsayacak şekilde dağıtılacak. Programcının bunu aklında tutması gerekir: programı, kendi mülkünde değil, başkasının mülkünde çalışıyor ve yerine oturmak yerine evinde misafir olarak davranması gerekiyor.

Örneğin, programı şunları yapmamalı:


1
Bunları hem kullanıcı hem de programcı olarak seviyorum. İskelemdeki simgeleri zıplatmak, bir daha tanımadığım insanlara karşı öfkeli bir neden.
Agos,

7
"Kullanıcının izni olmadan kendini güncelle" hariç hepsini seviyorum. Chrome'un kendini yenilediği yolu buluyorum - yalnızca yeni özellikler bulmayı çok seviyorum. Bununla birlikte, diğer programların yapma şekli de iğrenç. Sana, Java'ya ve sana, Acrobat Anything'a bakıyorum. Do not Her gün seni güncellemek istiyorsanız bana sorun. Bir kere hayır dedim, ipucu al!
konfigüratör,

2
Bir program kendini otomatik olarak güncelleyecekse, en azından kullanıcıdan ilk kez onay istemesi gerekir.
gablin

TortoiseSVN tarafından yapılan bir başka ihlal ... onunla hemen hemen her şeyi yapmak, sistemin durmasına neden oluyor
JoelFan

@SpashHit: Hmm? TortoiseSVN'i günlük olarak kullanıyorum ve hiç farketmedim ...
Mason Wheeler

8

Gönderen Yazılım Zanaatkar için manifesto :

Kalkınan Yazılım Ustaları olarak, uygulayarak ve başkalarının sanatı öğrenmesine yardımcı olarak profesyonel yazılım geliştirme çubuğunu yükseltiyoruz. Bu çalışma sayesinde değere ulaştık:

  • Yalnızca çalışan yazılım değil, aynı zamanda iyi hazırlanmış yazılım

  • Sadece değişime cevap vermekle kalmaz, aynı zamanda istikrarlı bir şekilde değer katar

  • Sadece bireyler ve etkileşimler değil, aynı zamanda bir profesyonel topluluğu

  • Sadece müşteri işbirliği değil, aynı zamanda üretken ortaklıklar

Yani, soldaki öğelerin peşinde koşarken sağdaki öğelerin vazgeçilmez olduğunu gördük.


8

Aynaya bir göz atın ve muhtemelen bir programcının en kötü özelliklerini tanıyın. Sonra her gün onları ortadan kaldırmak için çalışın.

  1. Yeni bir şey öğrenmemek
  2. Becerilerinizi genişletmek istememek
  3. Yeniye açık olmamak, eski alışkanlıklara bağlı kalmak
  4. İşinizin kalitesini önemsememek
  5. İşinizin kalitesini yükseltmek istememek
  6. Tutkusuz 9'a 5 işçi olmak
  7. Bazı şeyler hakkında kendi görüşlerine sahip olmamak
  8. Sorgulamadan başkalarının fikrini kabul etmek
  9. Hepsini öğrendiğine inanma
  10. Herhangi bir eleştiriye müsamaha göstermemek
  11. Harici giriş dinlemiyor
  12. Ego merkezli, her şeyi bilen bir birey olmak
  13. Olumsuz bir kişiliğe sahip olmak ve diğer insanları eleştirmek

+1, ancak bu şekilde çevrilmesi oldukça olumsuz.
dan_waterworth

1
# 13'ü oldukça ironik buluyorum, çünkü genel anlamda da olsa aslında burada yaptığınız şey bu.
Dustin Rasener

6
  • Bir Programcının sorumluluğu, programlayıcı ile müşteri arasındaki herhangi bir sözleşmede belirtilen gereksinimlerin, analizin, tasarımın ve şartnamelerin ihtiyaçlarını karşılayan bir yazılım oluşturmaktır.
  • Bir Programcının sorumluluğu, ekonomik, güvenilir ve gerçek makinelerde verimli çalışan bir yazılım oluşturmaktır.
  • Bir Programcının sorumluluğu, olabildiğince verimli, etik ve mümkün olduğu kadar bütünlük içinde çalışmak ve kendilerini en yüksek profesyonellikte yürütmektir.

Bunlardan bazıları "Bir Programlama Şirketi " nin Sorumlulukları için de geçerlidir .


4
  • Programcı, kullanılan temel kütüphaneleri ve platformu bilmeli ve kullanmalıdır.

Özellikle programcı başka bir platformdan / dilden geldiğinde. Programcıyı çekirdek kütüphanenin sağladığı bir şey için mücadele etmek ya da cehalet nedeniyle platform avantajını kötüye kullanmak korkunçtur.

  • Programcının kendi kendini belgeleme kodu oluşturması gerekir

Kodun diğerlerinin kullanımı için belgelendirilmesi çok önemlidir, ancak bu bakımın gerektirdiği durumlarda, kendi kendini belgeleyen kod kelimenin tam anlamıyla saatler ve saatlerce süren sıkıntılardan tasarruf sağlayabilir.

Örneğin karşılaştırmak:

// validates if is leap year
if(  year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) ) { 
     doSomethingWithFebruary();
}

için

if( isLeapYear( year ) ) { 
    doSomethingWithFebruary();
}

4

Programlama bir meslek, bir yetenek değil. Bu, bir programcının alanında en son araçlar, teknikler ve teknolojide güncel kalmakla yükümlü olduğu anlamına gelir.

Bu, yöneticilere sürekli öğrenme ve öğretime izin vermek için zaman ayırmak veya kendi zamanında yapmak anlamına gelebilir.


2

1) Herhangi bir soruna bir çözümün performans, maliyet, zaman ve kalite arasında bir denge sağlayacağını açıkça belirtin.

2) İlgili belgeleri doldurun, notlar veya test planları yayınlansınlar. (belgeler şirket türüne ve boyutuna göre değişir)

3) İşleri için doğru araçları isteyin (çok fazla kişi bunun için inledi ancak patronlarına asla ihtiyaç duyduklarını elde etmek için makul bir dava ile yaklaşma)

... Diğerleri şüphesiz takip edecek.


2

Her şeyi sorgula - Bir programcının yapması veya işlemesi gereken bir sistem hakkında bilgi alma sorumluluğu olmalıdır. Bu, hangi kullanıcıların yapabileceklerini göstermeye adanmış çeşitli siteler olduğu için hangi kullanıcıların aptalca sorular görebileceğini sormayı içerebilir. Günlük WTF ve SharkTank birkaç örnek olmakla birlikte başkaları da olduğundan eminim.


1

Bir programcı, ürün biriktirme listesindeki kullanıcı hikayelerini çalışma ve gönderilebilir yazılım artışlarına dönüştürmekten sorumludur.

Bu yüzden yöneticiler hedeflerine göre her şeyin olmasını sağlamalıdır.


1

İşte teklifim.

  1. Bir programcı, pozisyonun standartlarını düşürmemesi için, Programcı Hakkı Yasasında belirtilen çalışma koşullarını gerektirmelidir.

("Programcı" için "programcı" anlamına gelir, "haftasonu hackerı" değil, bu nedenle bir programcının yapması gereken tüm standart şeyler ima edilir.)


-1. Bir sorumluluğun bir hak gerektiren bir sorumluluk olabileceğini düşünmüyorum.
Craige

1

Programcının loncası 5 ilkeleri

1.) kodunu haftalık olarak ve tatil günlerinde kontrol edin.

2.) programlama topluluğunun ihtiyaçlarını karşılar.

3.) yılda en az bir programlama kitabı okuyun.

4.) yılda en az bir programlama konferansına gidin.

5.) kendi hatalarınızı belirtin.


"Haftalık ve tatil günlerinde kodunu kontrol et"? Saatlik demek istiyorsun, değil mi?
yapılandırıcı,

@configurator Bunları, kendinize bir programcı olarak adlandırmak için minimum düzeyde ifade ediyorum. Ama daha fazla neşeli Taşıyıcı
Peter Turner


0

Bir programcı yapmak ya da (örneğin yazma virüs veya kesmek başkalarının sistemleri gibi, etik olmayan veya yasadışı bir şey uygulamaması gerektiği de güvenlik açıklarını keşfetmek ve daha sonra sürece bilgilendirmek bu konuda mağdur ve o varlıktan Bunu önlemek için neler yapabileceğinizi kötü niyetli bilgisayar korsanları tarafından sömürülen).

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.