Saya pada dasarnya setuju dengan jawaban FrustratedWithFormsDesign , tetapi Anda juga bertanya bagaimana mempelajari paradigma baru membantu mengembangkan keterampilan seseorang. Saya bisa memberikan beberapa contoh dari pengalaman saya sendiri.
Sejak belajar pemrograman fungsional, saya jauh lebih sadar tentang konsep mana yang saya kerjakan lebih alami dianggap sebagai "objek" (umumnya di mana mutasi masuk akal) dan yang lebih alami dianggap sebagai "nilai" yang tidak berubah (saya pikir ada perbedaan penting , menyentuh di mana OO masuk akal vs ketika FP masuk akal, tapi itu hanya pendapat saya).
Saya perhatikan di mana kode saya termasuk efek samping, dan saya lebih berhati-hati untuk mengisolasi tempat-tempat itu, membuat lebih banyak fungsi saya fungsi "murni". Ini sangat meningkatkan testabilitas kode OO saya.
Saya lebih sadar tentang siklus dalam representasi data saya. (Misalnya, saya tidak berpikir Anda dapat menulis fungsi untuk mengubah daftar yang ditautkan menjadi daftar yang ditautkan ganda di Haskell, jadi Anda melihat siklus lebih banyak dalam bahasa itu.) Menghindari siklus mengurangi jumlah sinkronisasi Anda perlu melakukan agar struktur data Anda konsisten secara internal, meringankan beban dalam berbagi struktur ini di antara utas.
Saya lebih cenderung mengandalkan rekursi (konstruksi perulangan rekursif skema adalah hal-hal yang indah). Dijkstra menyinggung tentang pentingnya hal ini dalam Catatan tentang Pemrograman Terstruktur - algoritma rekursif memetakan secara langsung ke induksi matematika, yang ia sarankan adalah satu-satunya cara untuk membuktikan secara intelektual loop-loop kita dengan benar. (Saya tidak menyarankan bahwa kita harus membuktikan kode kita benar, tetapi bahwa semakin mudah kita membuatnya untuk diri kita sendiri, semakin besar kemungkinan kode kita benar.)
Saya lebih cenderung menggunakan fungsi tingkat tinggi. Makalah John Hughes, Mengapa Masalah Program Fungsional . Ini menekankan kompabilitas yang Anda dapatkan dari menggunakan teknik pemrograman fungsional, fungsi tingkat tinggi memainkan peran utama.
Juga, seperti yang disinggung dalam jawaban Jetti , Anda akan menemukan bahwa banyak ide KB dimasukkan ke dalam bahasa OO yang lebih baru. Ruby dan Python keduanya menyediakan banyak fungsi tingkat tinggi, saya pernah mendengar LINQ digambarkan sebagai upaya untuk membawa dukungan untuk pemahaman monadik ke dalam C #, bahkan C ++ sekarang memiliki ekspresi lambda.