menggunakan kontrol versi
SVN sangat umum, tetapi lincah lebih tampan, kuat dan memiliki dukungan gui yang solid.
pengembangan berbasis tes
baik, jika Anda melakukan pengujian unit Anda sudah di pihak yang menang. untuk alat, ini masalah pilihan. pengujian harus semudah mungkin, itulah alasan mengapa saya membuang PHPUnit untuk SimpleTest.
kode debugging
dengan unit test Anda tidak perlu xdebug. saya menggunakan xdebug biasanya untuk profil saja. (lihat KCachegrind btw)
penggunaan diagram UML
masalah terbesar dengan segala sesuatu yang mencerminkan logika kode adalah banyak pekerjaan manual untuk tetap sinkron. Anda dapat mengotomatiskan beberapa tugas, tetapi itu tidak berguna, karena Anda biasanya ingin menggunakan uml sebelum Anda memiliki sesuatu. masalah lainnya adalah alat diagram jauh lebih sulit digunakan daripada pena dan kertas atau papan tulis. gunakan uml jika Anda harus mengomunikasikan masalah dengan banyak pengembang atau jika Anda membutuhkan abstraksi untuk diri sendiri. ("dia" adalah alat gratis yang bagus. alat pemetaan pikiran juga sangat berguna untuk tukar pikiran, beberapa bahkan dapat bersaing dengan pena dan kertas.)
penggunaan OOP untuk kode yang dapat dipelihara dan digunakan kembali
well, oop berhasil sampai batas tertentu. :) satu saran yang bagus: komposisi> warisan. warisan adalah alat yang ampuh untuk digunakan kembali pada pandangan pertama, tetapi perawatan dan sambungan longgar akan menderita karenanya. saran bagus kedua: maintenance> reuse. sistem abstrak bisa sangat kuat, tetapi juga sulit untuk dipelihara.
penggunaan framework (seperti Zend Framework untuk php) untuk pengembangan aplikasi yang cepat
RAD adalah hal yang baik untuk mengeluarkan aplikasi Anda lebih awal. tetapi beberapa komponen - terutama ORM - akan menembak kaki Anda, setidaknya jika menyangkut skalabilitas. masalah utama di sini adalah bahwa Anda mengikat logika domain Anda untuk bekerja dengan objek, yang menjadi sangat sulit untuk faktor jika Anda membutuhkan solusi yang dioptimalkan database murni scalable. Ketahuilah itu dan dorong pengembang Anda untuk menggunakan database tanpa lapisan abstraksi tingkat tinggi. database abstraksi adalah mitos, orm adalah bohong.
CIUMAN
pendatang baru biasanya ingin menerapkan semua praktik terbaik di sekitar, mengatur standar pengkodean, menggunakan semua rantai alat yang bagus, apa pun. itu bekerja untuk beberapa pengembang, tetapi beberapa akan mengalami mental blockade jika semuanya terlalu ketat. unit testing dan scm benar-benar harus dimiliki, tetapi seseorang yang baru dalam unit testing benar-benar perlu mempelajari nilainya sebelum dia menyukainya. jangan berlebihan, terapkan praktik langkah demi langkah dan lihat bagaimana hasilnya. CIUMAN juga bermuara pada kode. terkadang cara terbaik untuk memecahkan masalah yang sulit, adalah dengan menyelesaikannya dengan salah. Anda membutuhkan algoritma pemisahan enam derajat ? cukup pilih beberapa teman secara acak. Anda dapat membuat aplikasi lengkap di sekitarnya, dengan logika yang salah. jika pelanggan akhirnya memutuskan untuk membuangnya, semua orang menghemat banyak uang.
tangkas
pelajari tentang metodologi lincah, pemrograman ekstrem, scrum, dll. ada banyak buku di luar sana. buku apa pun akan membuat tim Anda lebih baik, tetapi yang terbaik adalah memasukkan setiap rekan setim ke dalamnya.
Kontrol Versi: Jika di windows, TortoiseSVN adalah yang terbaik, paling intuitif dan paling mudah digunakan dalam pengalaman saya.
Kerangka Kerja: CodeIgniter . Gunakan platform pengembangan web terbaik untuk PHP.
IDE: Netbeans adalah IDE terbaik untuk PHP yang pernah saya gunakan di windows.
Unit Testing: Ada beberapa opsi, pencarian google akan muncul banyak. CodeIgniter juga memiliki unit tester sendiri yang tersedia.
Debugger: Xdebug.
Perpustakaan Javascript: Jquery
Program FTP: FileZilla
Administrasi Database: PhpMyAdmin
Wireframing: Balsimus Mockup, atau gunakan papan tulis.
Lain-lain: Gunakan WAMP jika pada windows untuk menginstal, memulai, menghentikan, & memulai kembali apache, mysql, dan php semua dalam satu paket dengan mudah.
Juga, jika Anda akan bekerja di banyak situs web yang berbeda, dan sebagian besar situs web tersebut akan memiliki beberapa fungsi umum seperti pendaftaran, masuk / keluar, bagian admin untuk mencari pengguna, dll, saya sarankan membangun proyek kecil dalam kerangka mana pun Anda memilih, dan menggunakan proyek itu sebagai dasar untuk setiap proyek baru yang Anda mulai. Biasanya saya menyebut proyek ini 'kerangka'. Jika saya akan mulai bekerja di xyz.com, saya akan menyalin direktori kerangka dan menamainya sebagai 'xyz.com', mengisi beberapa file konfigurasi, dan saya akan memiliki salinan xyz.com dengan beberapa fitur sudah bekerja.
sumber
Framework: CodeIgniter. Hands on the best web development platform for PHP.
Ini, terus terang adalah omong kosong. Jika Anda pernah menggunakan symfony, rails atau django Anda akan melihat beberapa masalah besar. Tidak ada struktur direktori modular, tidak ada antarmuka baris perintah. Kemudian Anda memiliki komponen inti seperti formulir dan model yang mengambil banyak kode. Jika Anda tahu ada pola perangkat lunak sama sekali, Anda akan melihat bahwa codeigniter menyebalkan. Paling tidak gunakan Kohana, yaitu CI yang bercabang dan dilakukan dengan benar setelah masyarakat meninggal.Saya sebagian besar setuju dengan posting Click Upvote, namun jika Anda bekerja di situs yang relatif besar saya pasti akan merekomendasikan menggunakan kerangka kerja Symfony ditambah dengan ORM Doctrine.
Jika proyek Anda akan jatuh tempo tahun depan, saya akan mengatakan luangkan waktu untuk berinvestasi di Symfony2 dan Doctrine2.
Juga, saya tidak bisa cukup menekankan pentingnya pengembangan pada sistem berbasis unix, Ubuntu adalah pilihan saya dan server web yang hebat. Saya bekerja terutama di windows tetapi berkembang di Ubuntu yang berjalan di mesin virtual VMWare di desktop saya (atau server ketika saya sedang bekerja).
Sedangkan untuk IDE saya sangat merekomendasikan menggunakan NuSphere PHPEd atau Storm PHP, sayangnya seperti semua hal hebat mereka tidak gratis.
sumber
Penggunaan diagram UML bagus tetapi sepenuhnya opsional. Diagram apa pun akan dilakukan asalkan tim Anda memahami apa artinya. Mencoba menggunakan standar yang tidak ada yang benar-benar tahu dapat menyebabkan masalah dan kehilangan waktu.
Saya akan merekomendasikan untuk memulai setiap halaman dari mockup ( http://balsamiq.com ) atau minta desainer Anda untuk menggambarnya untuk Anda. Jangan berharap pengembang menjadi ahli dalam estetika visual dan membuat halaman yang bagus entah dari mana.
Minta seseorang ditugaskan untuk mengkaji kode, jika Anda memiliki beberapa anggota tim senior - buat mereka melakukan tinjauan secara bergiliran ( Dewan Peninjau )
sumber
Saat berhadapan dengan kerja kolaboratif yang Anda butuhkan:
• menggunakan kontrol versi: saya pikir Git atau Subversion akan bekerja dengan cukup lancar
• pengembangan yang digerakkan oleh tes: Saya mulai belajar ini adalah suatu keharusan, tetapi jangan membawanya terlalu ekstrem
• kode debugging (xdebug untuk php): xdebug adalah pilihan saya
• penggunaan diagram UML: Ini membantu ketika semua orang memiliki pengetahuan tentang Pemrograman OO dan Pola Desain, namun itu selalu merupakan praktik yang baik
• penggunaan OOP untuk kode yang dapat digunakan dan dapat digunakan kembali: Dan FLEKSIBILITAS, saya pikir ini adalah aspek kunci dari OOP.
• penggunaan framework (seperti Zend Framework untuk php) untuk pengembangan aplikasi yang cepat: Saran saya adalah SYMFONY, kerangka kerja php pertama (bukan toolkit). Ini memiliki komunitas yang sangat besar, banyak dokumentasi, dan sepenuhnya diimplementasikan di php. Saya telah bekerja dengannya selama setahun dan itu benar-benar mengikat dengan OOP
• Anda mungkin juga membutuhkan sistem untuk melacak bug, permintaan fitur, dll. Seperti: Mantis atau Track . Sistem ini sangat mudah dan mudah. Mereka juga memungkinkan Anda mengikat subversi dan menghubungkan komitmen Anda dengan fitur atau bug tertentu yang diposkan orang.
Akhirnya, selalu penting jika Anda akan memimpin tim dev untuk melakukan pertemuan kecil secara berkala sehingga semua orang tahu status sistem pada titik tertentu dan mungkin dengan cara itu Anda akan mampu merencanakan atau melihat cara kerja.
Di perusahaan saya, saya harus mengirim email setiap hari untuk mengatakan apa yang telah saya kerjakan dan jika ada komplikasi.
Semoga berhasil!
sumber
sunting
Saya lupa hal yang paling penting: spesifikasi. Tulis spesifikasi nyata untuk proyek Anda sebelum menyentuh kode apa pun. Siapkan semua diagram interaksi pengguna. Ini akan menyelamatkan Anda berabad-abad.
sumber
Kontrol Versi Karena Anda bekerja dalam sebuah tim, Anda sebaiknya pergi dengan sesuatu yang didistribusikan. Kandidat Anda adalah Git dan Mercurial. Ini berarti tim Anda dapat melakukan secara lokal tanpa merusak proyek, tetapi tetap melacak pekerjaan mereka, lalu dorong komitmen ini ke server pusat. Ini juga jauh lebih cepat dan memiliki lebih sedikit konflik menggabungkan karena kode dilacak sebagai set perubahan daripada revisi. Bacalah panduan hginit (ditulis oleh co-founder stack overflow) dan Anda akan memahami sedikit lebih banyak tentang apa itu DVCS. http://hginit.com/
Anda juga harus menggunakan repositori untuk ditempatkan, bukan rsync atau ftp.
Pengembangan Berbasis Tes Tergantung pada apa yang Anda lakukan, pengujian dapat menghabiskan banyak waktu. Saya tidak mengatakan Anda harus benar-benar melewatkannya, untuk proyek-proyek kecil itu overhead. Jika Anda menulis perpustakaan atau proyek jangka panjang yang besar, pastikan menulis tes untuk itu. Tes akan membantu dalam fase pemeliharaan. Ketahuilah bahwa TDD tidak dapat menemukan semua bug Anda. Akan ada masalah pengalaman pengguna, masalah tata letak, masalah kinerja dan sebagainya.
Debugging Xdebug pada dasarnya adalah satu-satunya pilihan Anda di sini. Ini terintegrasi dengan baik dengan Netbeans. Jika Anda merasa perlu untuk mencetak variabel, Anda harus menggunakan file log. Gunakan fungsi log kerangka kerja, ini jauh lebih aman dalam produksi.
Perencanaan / Diagram Jika Anda menggunakan kerangka kerja yang baik, Anda tidak perlu terlalu banyak membuat diagram rinci. Tetap sederhana dan bekerja dalam siklus rilis yang lebih pendek, mudah untuk membuat rencana yang berlebihan. Persyaratan dan spesifikasi suatu proyek dapat berubah sehingga saya tidak akan menghabiskan seluruh waktu Anda untuk itu. Ingatlah bahwa spesifikasi IS kode pada level paling detail.
Gunakan alat pelacak bug Anda (lihat di bawah) untuk memecah spesifikasi menjadi tugas yang dapat Anda tetapkan untuk anggota tim. Gunakan alat pusat untuk mendokumentasikan proyek, pelacak bug mungkin akan memiliki wiki.
Anda bisa menggunakan alat seperti Mysql Workbench untuk merancang skema basis data dalam diagram dan mengekspornya sebagai SQL.
Kerangka kerja dan OOP Ini mungkin bagian terpenting. Temukan sendiri kerangka kerja populer yang akan mendukung pengembangan cepat dan penggunaan kembali kode. Beberapa orang tidak akan suka saya mengatakan ini, tetapi kerangka kerja harus menentukan cara Anda bekerja. Ini harus menyediakan struktur sehingga satu pengembang dapat beralih proyek dan tahu persis di mana controller untuk halaman tertentu, persis apa variabel template dan bagaimana cara query model. Beberapa kerangka kerja memungkinkan terlalu banyak fleksibilitas di sini dan Anda akan menemukan bahwa pengembang tidak selalu menggunakan kerangka kerja dengan cara yang sama. Saya suka filosofi python; harus ada satu cara yang jelas untuk melakukan semuanya. Inilah sebabnya saya suka Django dan Rails, mereka cukup keras kepala dan ini berarti saya bisa melihat kode elses seseorang dan mengerti apa fungsinya. Symfony sepertinya pilihan terbaik di sini,
Ada banyak pertanyaan 'kerangka apa' pada stack overflow seperti ini: /programming/2648/what-php-framework-would-you-choose-for-a-new-application-and-why
Pelacakan Bug Dapatkan tim Anda pelacak bug yang bagus yang dibuat untuk pengembang. Jangan menggunakan sesuatu yang disederhanakan seperti basecamp. Redmine dan Unfuddle adalah dua contoh pelacak bug yang sangat baik, mereka juga dapat melacak waktu dan berintegrasi dengan repositori Anda. Tim Anda harus menggunakan alat ini untuk berkomunikasi tentang masalah daripada email atau IM. Ini memudahkan pengembang baru ketika ada riwayat bug dan dokumen yang ada. Artikel ini menjelaskan dengan tepat apa yang perlu dilakukan oleh pelacak bug yang baik dan mengapa. http://www.joelonsoftware.com/articles/fog0000000029.html
sumber
Saya akan merekomendasikan melihat Bazaar untuk kontrol versi. Dibandingkan dengan Git, ia memiliki keunggulan utama yang sebenarnya mudah digunakan dan diinstal pada Windows, Mac OS dan Linux. Juga perintah bzr sangat mirip dengan rekan svn itu, oleh karena itu seseorang yang telah bekerja dengan Subversion sebelumnya dapat dengan mudah menggunakan Bazaar tanpa banyak kurva belajar. Aku melihatmu, Git.
Selain itu saya sangat percaya pada tidak memaksa apa pun pada pengembang Anda. Beeing mengatakan biarkan mereka menggunakan IDE, sistem operasi dan sebagainya yang mereka sukai.
Selain itu saya sangat menyarankan Anda melakukan tes wirte untuk semua kode Anda, tidak peduli seberapa membosankan itu.
Keputusan untuk atau menentang kerangka kerja bukanlah sesuatu yang dapat Anda lakukan berdasarkan rekomendasi yang dibuat di sini. Saya sarankan Anda daftar yang terlihat menjanjikan kepada Anda berdasarkan fitur mereka dan kemudian menulis aplikasi uji kecil di setiap dari mereka. (Tuliskan yang sama setiap kali.)
sumber