Banyak orang di komunitas pengkodean berbicara tentang peningkatan terus-menerus, praktik yang disengaja dan sebagainya - tetapi ketika mereka berbicara tentang praktik mereka saat ini, hampir seperti mereka muncul sepenuhnya dari ling Zeus karena Anda tidak mendengar bagaimana pendapat mereka berubah seiring waktu atau apa yang mereka pelajari baru-baru ini.
Sesekali saya pergi ke ceramah, atau membaca buku, atau berbicara dengan seseorang dan mereka membuka sedikit lebih banyak dan saya menemukan bahwa saya belajar banyak dari wawasan ini.
Jadi, jika Anda harus memilih satu dari 12 bulan terakhir, Anda akan tahu apa itu?
sumber
Setelah mempelajari beberapa Clojure , saya mulai menyadari kegunaan pemrograman fungsional , dan gaya pengkodean Java saya sangat dipengaruhi oleh hal itu. Berlawanan dengan kepercayaan populer, bahasa pemrograman fungsional bukanlah prasyarat mutlak untuk melakukan beberapa pemrograman fungsional.
Dimungkinkan untuk menggabungkan beberapa elemen pemrograman fungsional ke dalam bahasa imperatif seperti Java, dan bahkan jika itu tidak selalu idiomatis, itu bisa sangat bermanfaat dalam beberapa masalah. Sebagai contoh, kelas anonim kira-kira sama dengan penutupan, seperti yang dijelaskan dalam wikipedia . Evaluasi malas harus menjadi norma daripada sesuatu yang tidak biasa. Kekekalan sulit digunakan secara berlebihan. Cukup lupakan gagasan (hampir) usang bahwa membangun objek baru alih-alih bermutasi yang sudah ada mahal karena konsumsi GC dan heap - dalam 99,9% kasus itu sama sekali tidak relevan. Faktanya, pemrosesan paralel dapat membalik bahkan argumen efisiensi dengan cara lain: membuat objek baru yang tidak dapat diubah bisa lebih murah daripada memutasikan yang sudah ada, karena Anda menyingkirkan penguncian.
Info lebih lanjut tentang melakukan FP di Jawa murni di sini , di sini , di sini , dan di sini .
sumber
Bahkan jika Anda memiliki tim yang hebat, dan manajemen yang kompeten untuk tim itu, pekerjaan Anda masih tidak aman. Manajemen tingkat atas masih dapat melakukan hal-hal bodoh, seperti membubarkan seluruh Direktorat Anda.
Singkatnya: politik itu penting, dan terkadang politik yang memengaruhi Anda, Anda tidak bisa mengendalikan.
sumber
Saya belajar bahwa tujuan pengujian perangkat lunak adalah untuk menemukan bug . Ini bukan untuk memverifikasi bahwa sistemnya benar.
Ada beberapa faktor psikologis penting yang berperan: Jika tujuan Anda adalah untuk menunjukkan bahwa program itu "benar," Anda akan condong ke arah tes yang Anda tahu akan lulus. Tetapi jika tujuan Anda adalah menemukan bug, Anda akan tertarik pada tes yang benar-benar akan mendorong sistem Anda ke batas.
Bahkan ada perubahan penting pada bahasa yang Anda gunakan. Jika tes menemukan bug, Anda menyebutnya berhasil . Jika tes tidak [yaitu, program lulus], Anda menyebutnya tidak berhasil . Saya mendapati diri saya mengikuti pemikiran "verifikasi", dan itu membuat perbedaan besar.
Efek psikologis ini lebih banyak dibahas dalam The Art of Software Testing , sebuah buku klasik yang sangat saya rekomendasikan. Penulis, Myers, juga merekomendasikan bahwa siapa pun yang menguji suatu program tidak boleh menjadi penulis, atau bahkan dalam rantai manajemen yang sama. Anda dapat melakukan ini jika Anda membuat kode sendiri, sehingga diperlukan disiplin.
sumber
Melakukan pengembangan yang digerakkan pengujian dari awal pengiriman pelanggan untuk melihat bagaimana itu akan mempengaruhi kualitas kode, dan hanya berjalan dari dalam peluncur JUnit di Eclipse. Ini menghasilkan produk yang lebih baik.
sumber
Nilai sebenarnya dari pemrograman tanpa ego.
Pada tingkat tertentu saya selalu tahu bahwa ego dan pemrograman tidak campur aduk, tetapi tidak pernah cukup beralasan konsekuensi. Gagasan bahwa Anda harus secara aktif meninjau dan menemukan kesalahan dalam praktik Anda sendiri adalah sesuatu yang baru mulai saya sadari tahun lalu. Saya juga belajar untuk secara aktif mencari kritik terhadap desain saya (dalam UI dan kode).
Jujur saja, saya masih belajar bagaimana menghilangkan ego, dan saya mungkin akan belajar bagaimana melakukan itu selama sisa karir pemrograman saya.
sumber
Inilah jawaban saya untuk pertanyaan saya sendiri:
Sekitar setahun yang lalu diklik bahwa tes penerimaan otomatis perlu bukan versi tes otomatis yang akan dilakukan penguji kami secara manual. Memfokuskan pada tes terhadap spesifikasi tunggal daripada mencoba untuk memukul sebanyak mungkin dalam satu lulus membuat tes lebih sederhana, lebih mudah dibaca dan juga membantu mendorong pengiriman tambahan.
sumber
Saya belajar bagaimana konsep matematika seperti Semirings berlaku untuk algoritma. Dengan ini, Anda dapat menunjukkan bagaimana beberapa algoritma sama kecuali untuk menggunakan semiring yang berbeda. Ini seharusnya tidak aneh bagi saya sebagai seorang programmer, tetapi kepala saya hancur.
sumber
Selain politik yang disebutkan Frank Shearar , saya baru-baru ini menemukan QUnit dan JSCoverage yang menjadikan hari saya menyenangkan. Dan bulan. Tidak pernah terpikir akan mungkin untuk menguji unit JavaScript dengan cakupan kode, tetapi itu ada ... :-)
sumber
Terima kasih tiga besar saya untuk tahun pemrograman terakhir akan pergi ke berikut (dalam urutan kepentingan dan rasa terima kasih):
paradigma pemrograman fungsional untuk membuka pikiran saya terhadap cara lain, seringkali lebih elegan dan singkat untuk mengekspresikan ide dan algoritma dalam kode. Saya merasa bahwa keterampilan pemrograman saya secara keseluruhan telah meningkat banyak dalam waktu yang sangat singkat, berkat ide pemrograman fungsional.
(Terima kasih pribadi saya pergi ke Tomáš Petříček untuk bukunya yang luar biasa pemrograman fungsional Dunia Nyata .)
baik injeksi dependensi dan pengujian unit telah mengajarkan saya bahwa komposisi objek bisa dibilang cara terbaik untuk membuat sistem yang kompleks (berorientasi objek) (dan warisan kelas hampir tidak sepenting yang saya pikirkan). Keduanya telah mengajari saya dan membuat saya berpikir tentang cara terbaik menyusun sistem dan cara menulis komponen yang mudah digunakan, namun masih cukup fleksibel untuk digunakan kembali.
(Jika saya harus menyebutkan sumber pengajaran yang baik, saya akan mengatakan Seni Pengujian Unit Roy Osherove .)
Semua ini dilakukan secara bersamaan telah menghasilkan saya menulis kode yang umumnya memiliki bug lebih sedikit dari sebelumnya, karena saya sekarang menulis kode yang jauh lebih mudah dimengerti dan salah daripada yang saya keluarkan sebelumnya.
sumber
Apa pun yang pernah berubah dalam industri perangkat lunak yang berkembang cepat, kurva belajar selalu ada di sini. "Jika hanya ada cara belajar tanpa meluangkan waktu untuk belajar."
sumber
Saya belajar bahwa dijual ke perusahaan baru memang dapat meningkatkan pekerjaan Anda. Organisasi saya dibeli dari perusahaan lama kami pada bulan Mei, dan segala sesuatunya tampak membaik. Perusahaan baru telah menghemat sedikit / tanpa biaya dengan kantor baru kami, mengganti mesin pengembangan kami yang sudah usang dengan peralatan abad ke-21, menunjukkan fleksibilitas dengan mengelola proyek-proyek kami, dan umumnya membuat kami semua merasa lebih dari diterima.
Agak terasa agak menyedihkan dijual (sedikit seperti budak memiliki tuan feodal baru karena dia terikat pada tanah yang berpindah tangan), tetapi hasil akhirnya jauh lebih baik dari yang saya harapkan.
sumber
Saya akan mengatakan menggunakan pengujian unit Microsoft dalam Visual Studio 2010.
Saya merasa sangat mudah untuk men-debug metode pengujian tertentu.
Saya dapat menjalankan proyek pengujian kapan saja untuk melihat apakah aplikasi lapisan bisnis berfungsi dengan baik. Proses pengujian menjamin bahwa tim saya seharusnya tidak memiliki masalah ketika menggunakan solusi lengkap untuk pengunjung situs web kami.
sumber
Learned Basic Python (menggunakannya untuk menulis skrip cepat terkadang)
Diinstal ArchLinux di VM (sebelumnya Ubuntu di VM, PC saya cepat sekarang!)
Dimulai dengan MATLAB (terutama untuk merencanakan grafik dan pemeriksaan numerik cepat)
Beralih ke Mercurial (dari SVN) (bercabang dan bergabung!)
sumber
Mempelajari pola MVVM membantu saya menjadi jauh lebih mudah.
sumber
Saya harus mulai memelihara aplikasi web Python - jadi saya memutuskan itu adalah waktu yang tepat untuk belajar Vim juga. Sekarang saya menggunakan plugin IdeaVim untuk Intellij untuk pengembangan Java dan Flex saya dan saya yakin itu membuat pengetikan saya lebih cepat dan lebih efisien.
sumber