Keras Yazarı: Yazılım geliştiriciler için 33 altın kural

Xinzhiyuan AI WORLD 2018 Dünya Yapay Zeka Zirvesi

Geliştirme süreci hakkında

1. Kod sadece çalıştırılmak için tasarlanmamıştır. Kod aynı zamanda ekipler arasında iletişim kurmanın bir yoludur ve sorunların çözümlerini başkalarına açıklamanın bir yoludur. Okunabilir kod bir zorunluluktur ve kod yazmanın temelidir. Bu, kodun açık bir şekilde parçalanmasını, açık değişken adlarının seçilmesini ve herhangi bir örtük içeriği açıklamak için yorum eklemeyi içerir.

2. Çekme isteğinizin bir sonraki tanıtımınız için ne yapabileceğini sormayın, ancak çekme isteğinizin kullanıcılar ve topluluk için neler yapabileceğini sorun. Her ne pahasına olursa olsun "göz alıcı katkılardan" kaçının. Bu özellik açıkça ürünün amacına yardımcı olmuyorsa, herhangi bir özellik eklemeyin.

3. Tat, kodlar için de geçerlidir. Lezzet, sadelik arzusuyla düzenlenen bir kısıtlama-tatmin sürecidir. Önyargınızı basitlik üzerinde tutun.

4. Reddedebilirsiniz - birisinin bir özelliği talep etmesi, yapmanız gerektiği anlamına gelmez. Her işlevin ilk uygulamanın ötesinde bir maliyeti vardır: bakım maliyeti, dokümantasyon maliyeti ve kullanıcının bilişsel maliyeti. Her zaman sormalısınız: Bunu gerçekten yapmalı mıyız? Cevap genellikle hayırdır.

5. Yeni bir kullanım senaryosunu destekleme isteğine "evet" dediğinizde, kullanıcının istediği içeriği tam anlamıyla eklemenin genellikle en iyi seçenek olmadığını unutmayın. Kullanıcılar kendi özel kullanım durumlarıyla ilgilenirler ve bununla tüm projenin genel perspektifi ve ilke perspektifinden ilgilenmeniz gerekir. Genellikle doğru cevap, mevcut işlevselliği genişletmektir.

6. Sürekli entegrasyona yatırım yapın ve kapsamlı birim testi kapsamını hedefleyin. Kendinizden emin bir şekilde kod yazabileceğiniz bir ortamda olduğunuzdan emin olun; yoksa doğru altyapıyı oluşturarak başlayın.

7. Her şeyi önceden planlamamanız sorun değil. Deneyin ve nasıl sonuçlandığını görün. Yanlış seçimi mümkün olan en kısa sürede düzeltin. Uygulanabilir bir ortam oluşturduğunuzdan emin olun.

8. İyi bir yazılım zor işleri kolaylaştırabilir. Sorunun ilk başta zor görünmesi, çözümün karmaşık veya kullanımının zor olduğu anlamına gelmez. Mühendisler genellikle gereksiz karmaşıklık ve yan etkiler getirecek olan alışılmış düşünme çözümlerini kullanırlar ("Hadi ML kullanalım! Hadi bir uygulama geliştirelim! Blok zinciri ekleyelim!"), Belki Çok açık olmayan ama daha kolay alternatifler var. Herhangi bir kod yazmadan önce, seçtiğiniz çözümün en basit olduğundan emin olun. İlk ilkeyle başlayın.

9. Örtülü kurallardan kaçının. Kendiniz geliştirdiğiniz örtük kurallar her zaman açık olmalı ve başkalarıyla paylaşılmalı veya otomatikleştirilebilir olmalıdır. Kendinizi tekrarlayan, algoritmik bir iş akışı önerirken bulduğunuzda, diğer ekip üyelerinin deneyimlerden yararlanabilmesi için bunu belgelenmiş bir süreç haline getirmeye çalışmalısınız. Ek olarak, yazılımda otomatikleştirilebilecek herhangi bir iş akışını otomatikleştirmeye çalışmalısınız (doğruluk kontrolleri gibi).

10. Gelir veya büyüme gibi sadece odaklanmak istediğiniz yönler değil, seçimlerinizin genel etkisi tasarım sürecinde dikkate alınmalıdır. İzlenen ölçümlere ek olarak, yazılımınızın kullanıcıları ve dünya üzerindeki genel etkisi nedir? Değer önermesini aşan yan etkiler var mı? Yazılımın kullanışlılığını korurken bu sorunları çözmek için başka ne yapabilirsiniz?

API tasarımı hakkında

1. API'nizin kullanıcıları vardır, bu nedenle kullanıcı deneyimini değerlendirin. Verdiğiniz her kararda daima kullanıcıyı aklınızda bulundurun. İster yeni başlayanlar ister deneyimli geliştiriciler olsun, kullanıcılarınızla empati kurun.

2. API kullanma sürecinde her zaman kullanıcıların bilişsel yükünü en aza indirmeye çalışın. Otomatikleştirilebilen her şeyi otomatikleştirin, kullanıcıların ihtiyaç duyduğu işlemleri ve seçimleri en aza indirin, önemsiz seçenekleri göstermeyin, basit ve tutarlı bir iş akışı tasarlayın ve basit ve tutarlı bir düşünme modeli yansıtın.

3. Basit şeyler basit olmalı ve karmaşık şeyler mümkün olmalıdır. Küçük bir kullanım yelpazesi için ortak kullanım durumlarının bilişsel yükünü, minimumda bile artırmayın.

4. İş akışının bilişsel yükü yeterince düşükse, kullanıcı bir veya iki görevi tamamladıktan sonra iş akışını bellekten (öğretici veya belge bulmaya gerek kalmadan) geçebilmelidir.

5. Alan uzmanlarının ve uygulayıcılarının zihinsel modelleriyle eşleşen API'leri takip edin. Etki alanı deneyimi olan ancak API deneyimi olmayan kişiler, API'nizi asgari belgelerle sezgisel olarak anlayabilmelidir, temel olarak hangi nesnelerin mevcut olduğunu ve imzalarının ne olduğunu görmek için bazı kod örneklerine bakarak.

6. Bir parametrenin anlamı, altta yatan uygulama ile ilgili herhangi bir bağlam olmaksızın anlaşılabilir olmalıdır. Kullanıcı tarafından belirtilmesi gereken parametreler, koddaki uygulama detayları ile değil, kullanıcının problemin zihinsel modeli ile ilgili olmalıdır. Bir API, yazılımın arka planda nasıl çalıştığına değil, yalnızca çözdüğü soruna odaklanır.

7. En güçlü zihinsel model modüler ve hiyerarşiktir: yüksek düzeyde basit, ancak ayrıntılarda kesindir. Benzer şekilde, iyi bir API modüler ve hiyerarşiktir: kullanımı kolay ancak etkileyici. İyi bir API'nin makul sayıda nesnesi ve oldukça basit bir imzası vardır.

8. API'niz kaçınılmaz olarak uygulama tercihlerinizi, özellikle de veri yapısı seçiminizi yansıtır. Sezgisel bir API uygulamak için, elinizdeki alana doğal olarak uygun bir veri yapısı seçmeniz gerekir - alan uzmanının zihinsel modeliyle eşleşen.

9. Bir dizi temel özellik değil, uçtan uca bir iş akışı tasarlayın. Çoğu geliştirici, "Hangi özellikler sağlanmalı? Onlara yapılandırma seçenekleri sunalım" diye soruyorlar. Bunun yerine, "Bu aracın kullanım durumu nedir? Her kullanım durumu için, en iyi kullanıcı eylem dizisi nedir? Bu işi destekleyin Akış için en basit API nedir? "API'deki temel seçenekler, üst düzey iş akışlarının bariz gereksinimlerini karşılayabilmelidir -" belki birisinin onlara ihtiyacı olduğu için eklenmemelidir. "

10. API ile etkileşim sırasında kullanıcılara sağlanan hata mesajları ve geri bildirimler, API'nin bir parçasıdır. Etkileşim ve geri bildirim, kullanıcı deneyiminin bir parçasıdır. API hata mesajlarını özel olarak tasarlamanız gerekir.

11. Kod bir tür iletişim olduğundan, projelerin adlandırılması veya değişkenlerin isimlendirilmesi olsun, adlandırma çok önemlidir. İsim, sorun hakkındaki fikrinizi yansıtır. Çok genel adlardan ("x, değişkenler, parametreler" gibi) kaçının, çok uzun ve özel adlandırma kalıplarından kaçının, gereksiz sapmaya neden olabilecek terimlerden kaçının ("ana / bağımlı" gibi) ve adlandırma seçiminizin Tutarlı. Adlandırma tutarlılığı, dahili adlandırma tutarlılığı (örneğin, başka bir yerde "sönük" olarak kullanılan "eksen" i çağırmayın) ve sorun alanındaki yerleşik kurallarla tutarlılık anlamına gelir. Ada karar vermeden önce, bir alan uzmanı (veya başka bir API) tarafından kullanılan mevcut bir adı aradığınızdan emin olun.

12. Belgeleme, API kullanıcı deneyiminin merkezidir. Bu bir eklenti değil. Yüksek kaliteli belgelere yatırım yapın; bu, daha fazla özelliğe yatırım yapmaktan daha tatmin edici olacaktır.

13. Gösterin, açıklamayın: Belgeleriniz yazılımın nasıl çalıştığını değil, nasıl kullanılacağını göstermelidir. Uçtan uca iş akışının kod örneklerini gösterin; API'nin her ortak kullanım durumu ve temel özelliği için kod örnekleri gösterin.

Yazılım tasarımcılarının kariyer planlaması hakkında

1. Kariyer gelişimi, kaç kişiyi yönettiğinize değil, ne kadar etki yarattığınıza bağlıdır.

2. Yazılım geliştirme ekip çalışmasıdır, sadece teknik yetenekle ilgili değildir, aynı zamanda kişilerarası ilişkilerle de ilgilidir. İyi bir takım arkadaşı olun. Yoldayken, başkalarıyla iletişim halinde olun.

3. Teknoloji asla tarafsız değildir. Çalışmanızın dünya üzerinde herhangi bir etkisi varsa, bu etki ahlaki yönelimlidir. Yazılım ürünlerinde yaptığımız görünüşte zararsız teknolojik seçimler, teknolojik edinim, kullanım motivasyonu, kimin fayda sağlayacağı ve kimin zarar göreceği için koşulları ayarlıyor: teknolojik seçimler de etik seçimlerdir. Bu nedenle, seçimlerinizin desteklemesini istediğiniz değerler konusunda dikkatli ve net olmalısınız. Değerlerinizi işinize dahil edin. Asla "Ben sadece işlevsellik oluşturuyorum; bu kendi içinde tarafsızdır" diye asla düşünmeyin. Tarafsız değildir, çünkü nasıl kullanılacağını inşa etme şekliniz belirler.

4. Kendi kendine yönlendirme - işinizi ve çevrenizi kontrol etmek - yaşam memnuniyetinin anahtarıdır. Çevrenizdeki insanlara yeterince öz yön verdiğinizden ve kariyer seçiminizin size fayda sağladığından emin olun.

5. Dünyayı yaratmak için ihtiyacınız olan şey, sadece sahip olmak istedikleriniz değil. Teknisyenler, kıdemli özel ihtiyaçları karşılayan ürünlere odaklanma eğilimindedir. Dünyanın neye ihtiyacı olduğunu daha iyi anlamanıza yardımcı olacak yaşam deneyiminizi genişletmek için fırsatlar arayın.

6. Uzun vadeli etkiye sahip herhangi bir seçim yaparken, değerlerinizi açgözlülük veya korku gibi kısa vadeli kişisel çıkar ve kısa vadeli duyguların üzerine koyun. Değerlerinizin ne olduğunu bilin ve size rehberlik etmelerine izin verin.

7. Kendimizi çatışmanın içinde bulduğumuzda, ortak değerlerimizi ve ortak hedeflerimizi onaylamayı bırakıp kendimize neredeyse kesinlikle aynı cephede olduğumuzu hatırlatmak iyi bir fikirdir.

8. Verimlilik, hızlı karar verme ve eylem tercihlerine indirgenebilir. Bu, a) kısmi bilgiler verildiğinde genel olarak doğru bir karar vermek için deneyimden gelen iyi bir sezgi gerektirir; b) bir hata nedeniyle ne zaman daha dikkatli hareket edilip daha fazla bilgi beklenmesi gerektiğine dair keskin bir farkındalık Kararın maliyeti, gecikme maliyetinden daha büyük olacaktır. Farklı ortamlarda, optimum hız / kalite kararı değiş tokuşu büyük ölçüde değişebilir.

9. Kararları daha hızlı almak, kariyerinizde daha fazla karar vermeniz gerektiği anlamına gelir, bu da size mevcut seçeneklerin doğruluğu hakkında daha güçlü bir sezgi verecektir. Deneyim, üretkenliği artırmanın anahtarıdır ve daha yüksek üretkenlik size daha fazla deneyim sağlayacaktır: erdemli bir döngü.

10. Sezgi eksikliğinizi fark ettiğinizde, lütfen soyut ilkeyi takip edin. Kariyeriniz boyunca güvenilir ve pratik bir ilkeler listesi oluşturun: İlkeler, ilkel örüntü tanımadan daha geniş bir durum yelpazesi için geçerli olan resmi sezgilerdir.

Referans bağlantısı:

https://medium.com/@francois.chollet/notes-to-myself-on-software-engineering-c890f16f4e4d

Xinzhiyuan AI WORLD 2018 Dünya Yapay Zeka Zirvesi

geri sayım 9 gün

Biletler satışta!

Xinzhiyuan, 20 Eylül'de Pekin'deki Ulusal Kongre Merkezi'nde AI WORLD 2018 Dünya Yapay Zeka Zirvesi'ne ev sahipliği yapacak ve makine öğrenimi vaftiz babası, CMU profesörü Tom Mitchell, Mikes Tekmark, Zhou Zhihua, Tao Dacheng, Chen Yiran ve diğer AI liderlerini davet edecek Makine zekasına ve insan kaderine dikkat edin.

Konferans resmi web sitesi:

  • Aktivite hattı bileti satın alma bağlantısı:

  • Etkinlik satırı bilet alımı için QR kodu:

Eski Q5'e gülmek, XT5 neden bu kadar sakin?
önceki
Finaller için gerçekten savaşın! Ding Yanyu, maçı kapatmak için maçtan önce iki el ateş etti, arkadaşı Zhai Xiaochuan hoşuna gitti
Sonraki
Elektrikli arabalardan ciddi şekilde bahsetme zamanı
Kahve hakkında: her hikaye aşktır.
800 kilometrelik bir kurtarma
Yine gurur duyuyorum! Hanchuan, arka arkaya 13 yıldır Çin'de yatırım potansiyeli olan ilk 100 ilçe ve şehir arasında yer aldı.
Öğretmen Ma Yun, merhaba!
Erişte kaybetmeden çay yapmak için çay yapmak için 7 adımı hatırlayın
4 gol + 2 asist, U23 oyuncuları tek turda en iyi sonuçları elde etti, Suning Evergrande parlıyor
ETC parası POS makinesi tarafından silinecek mi? Hala kullanılabilir mi?
uyarmak! Bahar Şenliği sırasında Jiangxi 922 kişiyi idare etti!
Notre Dame de Paris'teki yangın neden tüm insanlık için bir trajedi ...
Araçların frenlerini gerçekten anlıyor musunuz?
TEDAnın dış yardımı Mikel Square Dance Corpsa katıldı, netizenler: Patonun "Tianmen Dans Kralı" konumu garanti edilmez
To Top