Saya menyambut Anda, Khabravchane sayang. Untuk waktu yang sangat lama saya pergi untuk menulis artikel di sini tentang diri saya dan proyek saya. Dalam artikel ini, saya ingin menceritakan kisah saya tentang asal usul ide proyek. Dan juga menulis cerita Anda tentang perkembangan pandangan tentang pengembangan perangkat lunak secara umum. Mungkin bahkan saya akan dapat mentransfer beberapa pengetahuan berdasarkan pengalaman bertahun-tahun saya sebagai seorang programmer. Ayo pergi!
Tentang saya
Saya akan menceritakan sedikit tentang diri saya. Nama saya Alexander, saya telah bekerja sebagai programmer selama lebih dari 10 tahun. Saya harus menyelesaikan masalah di berbagai bidang bisnis, seperti perbankan, e-commerce, proyek penataan data, parser dan tugas-tugas lain dari sektor perusahaan.
Tujuan artikel ini adalah untuk menunjukkan salah satu aspek dari dunia pengembangan perangkat lunak dan mungkin membuka pintu peluang baru bagi programmer lain. Apa yang saya maksud dengan pernyataan ini?
Tahapan Pengembangan Programmer
Tentunya sebelumnya Anda sudah membaca artikel tentang tahapan pengembangan programmer. Menurut pendapat saya, setiap programmer melewati tahap pengembangan dalam karir profesionalnya.
Saya mendefinisikan jalur pengembangan ini untuk seorang programmer dalam 5 tahap:
- Tahap pertama adalah ketika Anda seorang siswa atau Anda masih baru dalam pemrograman. Anda hanya ingin melihat hasil dari apa yang telah Anda program, baik itu jendela dengan tombol "Hello" atau pengurai data yang menganalisis dan struktur.
- Tahap kedua adalah ketika Anda sudah menulis integrasi kompleks dan menggunakan kerangka kerja canggih. Dan Anda menikmati kenyataan bahwa Anda telah menguasai alat lain.
- Tahap ketiga adalah ketika Anda mulai mencari cara terbaik untuk merancang aplikasi secara struktural. Dan Anda hanya tergila-gila pada kenyataan bahwa Anda benar membagi logika menjadi komponen.
- Tahap keempat adalah tahap dewa pengembangan perangkat lunak. Anda memahami semua langkah sebelumnya dan Anda ingin membangun sistem untuk merakit dan mengirimkan semua modul aplikasi menjadi satu penginstal otomatis otomatis yang praktis.
- Tahap kelima adalah tahap yang paling menyedihkan. Anda mengerti bahwa hal favorit Anda tidak lagi membawa euforia bekas itu dan melakukan semua yang ada di mesin. Kemudian saatnya datang ketika Anda tiba-tiba membuat produk Anda dan membawanya ke pasar, sehingga memecahkan masalah seseorang atau hanya meningkatkan semacam alur kerja.
Ide kelahiran dan kematian
Seperti yang mungkin sudah Anda pahami, tahapan ini didasarkan pada pengalaman pribadi saya. Oleh karena itu, mungkin seseorang akan memiliki pengalaman pengembangan yang sangat berbeda. Dan saya tidak menyatakan bahwa itu adalah cara lain. Selanjutnya kita akan berbicara tentang tahap perkembangan ke 5 dan apa yang harus dilakukan selanjutnya.
Suatu kali ide yang sangat menarik jatuh ke kepala saya. Sebelum ini, tentu saja, saya pergi selama seminggu dan memikirkan layanan seperti apa yang akan saya "hancurkan." Dan dengan serius dan sengaja, saya memutuskan untuk melakukan sesuatu yang hebat.
Idenya adalah untuk menciptakan platform, bahkan sebuah situs web, yang akan memungkinkan setiap orang untuk memberi tahu orang lain tentang keterampilan mereka dalam sesuatu di mana ia unggul dalam hubungannya dengan orang lain. Sebagai contoh, seorang nelayan yang rajin, ingin berbagi pengalamannya tentang cara menangkap ikan tenggeran atau ikan mas dengan benar. Dia membuat acara di platform ini dengan tanggal seminar dan menempatkan video promosi atau hanya deskripsi tentang seminar itu. Pengguna lain memberikan suara dengan menarik atau tidak, ketika mengumpulkan sejumlah suara, acara tersebut disetujui oleh platform atau ditolak karena kurangnya suara dalam dukungan. Selain itu, orang yang memposting acara ini memiliki kesempatan untuk menetapkan jumlah untuk menghadiri seminar ini. Pemilik platform ini diharuskan untuk sepenuhnya mengatur acara ini. Dengan demikian, mengambil komisi kecil pada penjualan tiket. Ini adalah monetisasi yang selesai.
Saya sudah bisa mendengar dalam pikiran Anda, "Ya sudah, mengapa melakukan sepeda lagi." Tapi masuk akal, saya akan kembali ke pernyataan ini. Tentu saja, pada akhirnya, ide itu secara dramatis berubah secara dramatis menjadi yang lain, tetapi tanpa tugas utama, saya tidak akan melihat masalah ini.
CMS saja
Kemudian muncul pertanyaan teknologi mana yang melakukan semua ini. Tanpa berpikir dua kali, saya mulai melihat CMS yang ada dan platform lain untuk perakitan cepat proyek semacam ini. Solusinya sedemikian rupa sehingga saya akan mengambil beberapa jenis mesin untuk bekerja dengan data dan hanya melakukan moncong web mengambil data ini melalui REST. Saya tidak akan menggali perkembangan penuh. Pada akhirnya, saya masih harus melakukannya.
Pandangan saya tentang pengembangan perangkat lunak
Untuk setiap tugas, alatnya sendiri. Saya selalu berusaha mematuhi aturan ini dalam pengembangan perangkat lunak. Faktor penting lainnya adalah pembagian logika menjadi bidang tanggung jawab teknologi. Bagi saya, batas-batas integrasi yang jelas antara berbagai teknologi adalah penting. Dengan kata lain, saya suka ketika ujung depan dipisahkan dari ujung belakang, misalnya. Artinya, dari kata "sepenuhnya." Atau ada modul yang didedikasikan secara struktural, integrasi, dan semua ini berfungsi secara independen. Sekarang disebut layanan-mikro.
Saya pikir lebih mudah untuk mengatur pekerjaan pada proyek, membagi pengembang menjadi tim sesuai dengan kompetensinya.
Itu saja! Saya memutuskan untuk membuat pesawat ruang angkasa
Berdasarkan pengalaman, saya berpikir bahwa kami membutuhkan alat yang akan membantu kami membentuk desain halaman dari blok yang sudah jadi dan menghubungkannya ke data dan layanan platform ini langsung dari browser. Kriteria utama adalah tidak ada pemrograman khusus untuk setiap tugas. Semuanya harus abstrak dan sebagai konstruktor.
Setelah menghabiskan 2 minggu mencari sesuatu yang serupa dan mengalami dua CMS gratis -
Drupal dan
Wordpress (saya mencoba menggunakannya sebagai manajemen data dan mesin integrasi REST API). Tetapi tidak satu pun dari mereka yang memenuhi persyaratan saya. Oleh karena itu, saya memutuskan untuk menulis CMS saya dengan "blackjack and whores."
Teknologi
Pertanyaan selanjutnya yang harus dipecahkan adalah pilihan tumpukan teknologi untuk implementasi. Tanpa banyak berpikir, saya tentu lebih suka melakukan segala sesuatu di
Jawa . Itu hanya perlu memutuskan kerangka mana yang akan diambil. Kriteria dalam memilih kerangka kerja adalah ini - tidak mengambil terlalu banyak dan hanya menggunakan bagian-bagian yang diperlukan dari alat ini (kemudian saya sedikit menyesali pilihannya). Untuk membangun antarmuka panel admin, saya memilih satu kerangka kerja AJAX yang kurang dikenal dari Taiwan -
ZK Framework . Saya suka pendekatan MVVM di dalamnya, dan komponen AJAX-nya (sekarang saya sudah menganggap ini minus). Karena Anda tidak perlu menulis banyak JS untuk memantau relevansi keadaan antarmuka pengguna pada halaman (saat ini saya menemukan alternatif yang lebih baik).
Seperti apa tumpukan teknologi yang saya dapatkan sebagai hasilnya:
- ZK Framework (MVVM)
- Java (EJB)
- Jax-rs
- Mongodb
- Wildfly
Baiklah, silakan!
Dan saya langsung menuju proyek ini, sambil mengerjakan proyek-proyek dengan gaji. Waktu untuk proyek saya terutama di malam hari dan pada akhir pekan, kadang-kadang di suatu tempat saya berhasil menyita waktu di pekerjaan utama saya, saya bekerja di sana juga. Dalam proses pengerjaan proyek, prinsip implementasi telah berubah beberapa kali. Model data juga telah mengalami banyak modifikasi. Secara paralel, saya memberi tahu teman-teman programmer apa yang saya kerjakan, menawarkan untuk bergabung dengan proyek dan mulai bekerja bersama. Namun sayangnya, saya terus mengerjakan proyek ini sendirian. Akibatnya, saya menghabiskan 3 tahun untuk mendapatkan versi fungsionalitas yang dimaksudkan.
Sendiri di lapangan bukan prajurit, atau ...
Kemudian saya masih ingin membuat tim. Saya mulai mendaftarkan produk saya sebagai startup di salah satu akselerator bisnis. Tapi dia tidak menyelesaikan lamarannya, setelah berhenti di panggung "Tim Anda".
Saya sering dan sering memberi tahu teman-teman saya yang bekerja di bidang IT (teknologi informasi) atau di bidang IT.
Pada akhirnya, saya berhasil menemukan pelanggan potensial yang
sama gila untuk produk saya. Dia, seperti saya, memutuskan untuk membuat produknya, tetapi dia bukan seorang programmer. Dan dia membutuhkan platform untuk produknya. Saya memutuskan, ini dia! Saya bahkan tidak perlu menawarkan untuk menggunakan CMS saya sendiri, saya diminta untuk membuat situs di dalamnya. Gratis tentu saja. Itu adalah kesempatan saya untuk mencoba CMS saya dalam pengembangan nyata. Dan Anda tahu, saya sangat terkejut, tetapi CMS saya mengatasi tugas ini 100%. Ya, tentu saja, saya mengerjakan banyak hal selama proses perakitan, memperbaikinya, dan hanya "memperbaiki" bug. Tetapi pada akhirnya, saya dapat secara fleksibel menarik desain dan template apa pun ke halaman, menghubungkan dan mengintegrasikan data dan layanan dari sumber pihak ketiga.
Dan orang Swiss, dan mesin penuai, dan dude
Dari saat ini saya menyadari bahwa Anda perlu mengembangkan pengetahuan Anda di bidang pemasaran, dan membaca buku tentang membangun bisnis Anda. Dalam prosesnya, saya berpartisipasi dengan produk ini dalam hackathon dari
MongoDB , sebagian menerima reaksi penonton terhadap produk ini. Secara sosial. jaringan merespons dan bahkan membagikan pesan saya tentang apa yang saya lakukan CMS. Menurut hasil hackathon, saya tentu saja tidak menerima penghargaan tunggal, tetapi saya senang bahwa saya berpartisipasi.
Sementara saya menunggu hasil hackathon, saya masih melakukan dua upaya untuk "menghubungkan" produk saya di acara promosi investasi. Setelah itu saya sudah melihat respon yang hidup dari para penonton. Yang membawa saya pengalaman luar biasa.
Hasil
Apa yang saat ini saya miliki:
- MVP tertentu (Minimal Viable Product) yang mencakup fungsi:
- standardisasi yang fleksibel
- penyimpanan file
- modifikasi model data on-the-fly
- integrasi dengan layanan REST
- peran dan manajemen pengguna di MongoDB
- Pengalaman dalam menghadirkan produk IT dan reaksi audiens.
- Mitra dalam mengerjakan produk-produk TI, termotivasi untuk menyelesaikan masalah hanya untuk idenya.
- Dan peta jalan besar untuk pengembangan produk selanjutnya. Saat ini, pada tumpukan teknologi, saya telah membayangkan suatu pemrosesan yang sangat besar, dan hampir merupakan perubahan total dari tumpukan teknologi ini. Ditambah ekstensi fungsionalitas.
- Saya meninggalkan ideologi dalam implementasi yang sama.
Kesimpulan
Dan sekarang saya akan kembali ke tempat saya mulai. Selalu ada alasan untuk membuat produk Anda, bahkan jika semua orang di sekitar Anda mengatakan
"ya sudah, mereka sudah melakukannya sebelum Anda .
" Saya menyebut orang-orang semacam itu dengan kata Inggris
Naysayer , begitu saya mendengar kata ini dari Arnold Schwarzenegger dalam salah satu pidato motivasinya.
Beberapa cara yang mungkin untuk mengembangkan suatu produk:
- Berikan ke sumber terbuka
- Bekerja sama dengan produk terkait
- Kumpulkan komunitas orang-orang yang sama gilanya dengan saya yang menciptakan produk mereka dan mencoba memasarkannya.
Ini adalah video promo resmi:Berikut adalah situs demo CMS resmi:MastermindCMSPS: Saya ingin meminta maaf atas seringnya menggunakan "Americanisms" dalam teks. Pengembang gaul sangat diisi dengan mereka. Jika saya memparafrasekan semuanya menjadi sinonim Rusia, saya akan kehilangan gaya naratif yang dimengerti dan atmosfer bagi rekan-rekan di bengkel.
Saya harap Anda menyukai cerita saya, dan seseorang akan merasakan manfaatnya. Selamat hari produktif!