Manajemen waktu tanpa jadwal yang ketat, pengalaman dalam mengembangkan aplikasi seluler

Perencanaan waktu, kontrol, peningkatan efisiensi. Topiknya sudah usang, tetapi saya berani menawarkan solusi lain.


Saya belum dapat menemukan metode universal untuk mengatur waktu saya yang cocok untuk semua orang. Sebagai aturan, setiap orang memilih sendiri praktik yang paling cocok untuknya. Dan ini terhubung tidak hanya dengan karakteristik karakter, tetapi juga dengan fitur pekerjaan.

Seperti ini bagi saya: Saya bersiap-siap, menyetel, mulai bekerja, dan kemudian - "anjing laut akan memanggil, lalu rusa". Pada akhirnya ada perasaan umum bahwa tidak jelas apa yang dia lakukan dan apa hasilnya.

Begitu sebuah ide muncul: β€œItu akan keren, mereka memanggil Anda dan Anda suka dalam permainan catur Saya menekan tombol dan menghentikan waktu kerja, kembali bekerja - menekan tombol lain. Sebagai hasilnya, Anda akan mendapatkan berapa banyak dia bekerja dan seberapa banyak dia beristirahat. ” Saya menyebut pendekatan ini - manajemen waktu catur, atau singkatnya ChessTM.

Tidak sulit untuk menebak bahwa ide tersebut segera diskalakan ke gagasan memiliki tombol untuk setiap tugas di siang hari. Dan kemudian semua ini ditransformasikan menjadi konsep manajemen waktu.

Konsep


Waktu tidak bisa dihentikan. Kami selalu menghabiskan waktu kami. Dan jika kita melakukan sesuatu dengan satu, maka jelas Anda tidak dapat secara bersamaan melakukan sesuatu dengan efisiensi konstan. Setiap saat dalam waktu tertentu, beberapa jenis kegiatan terjadi - mengerjakan tugas, berolahraga, berjalan, berolahraga, makan, tidur, dll.

Postulat nomor 1


Untuk mengendalikan kebutuhan akan manajemen waktu. Untuk mengatur waktu Anda harus bisa mengendalikannya. Prinsip - dengan satu sentuhan tombol (secara harfiah, bukan metaforis), kami memilih aktivitas saat ini dan waktu untuk aktivitas sebelumnya otomatis berhenti dan mulai menghitung untuk yang sekarang.

Postulat nomor 2


Manajemen membutuhkan perencanaan. Untuk mengatur waktu Anda harus bisa merencanakannya. Pada waktu tertentu, kami memiliki kumpulan tugas yang sama dan beberapa hal mendesak. Saat mengerjakan tugas atau hal-hal yang mendesak, kami melakukan suatu kegiatan. Perencanaan adalah kita mengasumsikan kegiatan apa yang akan kita lakukan. Pemahaman tradisional tentang rencana tersebut melibatkan urutan tindakan yang pasti. Seringkali sangat sulit untuk mengamati urutan yang pasti, kadang-kadang karena tujuan, dan kadang-kadang bukan alasan yang sangat baik. Penyimpangan dari rencana membuat Anda gugup dan mengurangi efisiensi kerja. Kami menganggap istirahat sebagai kemalasan, perasaan bersalah muncul, efisiensi kerja menurun dan kepuasan menurun. Untuk menghindari masalah yang dijelaskan, kami akan merencanakan bukan urutan berbagai jenis kelas, tetapi waktu yang dialokasikan untuk kegiatan di siang hari.
Anda dapat merencanakan dalam hitungan menit. Artinya, proses perencanaan terlihat seperti ini - kami memilih tugas untuk hari itu dari kumpulan umum dan menetapkan waktu yang direncanakan untuk mereka, yang akan kami habiskan untuk mereka.

Postulat nomor 3


Waktu yang dikelola berarti rencana itu menyatu dengan kenyataan. Tentu saja, sesuatu dapat berubah pada siang hari. Dan mungkin ternyata rencana itu menyimpang dari kenyataan. Biarkan waktu yang direncanakan untuk aktivitas Tp (time planed), waktu yang sebenarnya dihabiskan untuk aktivitas Tr (time real), perbedaan antara waktu-waktu ini disebut dengan koefisien perbedaan Td (time delta). Kami menganggap kualitas perencanaan Qp (kualitas perencanaan) sebagai persentase dari jumlah semua koefisien perbedaan dengan jumlah total waktu yang direncanakan, yang kami kurangi dari seratus.

Qp=100%βˆ’ frac(Td1+Td2+ ldots+Tdi+ ldots+Tdn)(Tp1+Tp2++ ldots+Tpi+ ldots+Tpn)βˆ—100%

yaitu, ternyata pada nol koefisien divergensi, kualitas perencanaan akan 100%.

Aplikasi Android


Artikel ini tidak akan muncul jika saya belum memutuskan untuk mengimplementasikan alat untuk konsep ini. Saya ingin berbagi pengalaman ini.

Jadi

Aplikasi ChessTM yang diterapkan.

Implementasi di malam hari dan akhir pekan di waktu luang Anda. Saya bekerja sebagai manajer rilis dan bekerja dengan pengembangan android tidak terhubung dengan cara apa pun.

Fungsi:

  1. Membuat kumpulan tugas
  2. Merencanakan waktu untuk tugas untuk setiap hari
  3. Transfer paket hari sebelumnya
  4. Pergantian tugas yang mudah
  5. Statistik

    • total waktu yang dihabiskan sehubungan dengan total rencana, untuk periode yang sewenang-wenang oleh sektor kehidupan
    • melaporkan tugas, berapa banyak yang direncanakan untuk setiap tugas dan berapa banyak yang sebenarnya dihabiskan
    • statistik tentang pergantian tugas dan faktor kualitas perencanaan untuk periode tersebut
  6. Distribusi tugas berdasarkan sektor kehidupan (pekerjaan, keluarga, teman, dll.) Dan tag

Gagasan utamanya adalah membuat mekanisme interaksi dengan aplikasi sedemikian rupa untuk melakukan sesedikit mungkin. Untuk membuat semuanya mudah dan sederhana - dengan satu klik.

Diimplementasikan sebagai berikut - ada satu layar dan tiga tab di mana Anda dapat menavigasi dengan saip:

  • kumpulan tugas di mana ada semua tugas yang saat ini tersedia;
  • rencana harian, di mana waktu yang dijadwalkan untuk tugas ditetapkan;
  • kontrol, di mana kita beralih dari tugas ke tugas dan menghitung waktu.


Selanjutnya, saya ingin fokus pada saat-saat perkembangan itu sendiri. Saya berharap pengalaman saya akan berguna bagi pengembang pemula, dan guru mungkin akan memberi tahu Anda apa yang dapat ditingkatkan dalam proses pengorganisasian pengembangan.

Infrastruktur pembangunan


Saya ingin segera melakukan pengembangan. Sehingga itu adalah sesuatu yang tahan lama, dan tidak dimanjakan dan ditinggalkan. Karena itu, saya ingin mengatur infrastruktur holistik, termasuk:

  • IDE (Lingkungan Pengembangan Terpadu);
  • repositori penyimpanan kode;
  • pelacak tugas;
  • Dokumentasi
  • pengujian.

IDE


AndroidStudio, meskipun seseorang dapat berdebat, tetapi menurut pendapat saya, dengan semua kekayaan pilihan, tidak ada alternatif lain. Ada banyak panduan tentang cara memasukkan, cara memulai, cara mendaftar pengembang, dll. Menurut pendapat saya, semuanya cukup sederhana di sini, tidak ada saran khusus, cukup ambil dan lakukan sesuai petunjuk.

Penyimpanan kode


Git dipilih sebagai sistem penyimpanan kode.

Kriteria pemilihannya sederhana - sistem modern yang populer, memiliki komunitas pengembang yang besar, banyak sumber daya dengan dokumentasi yang baik. Seperti yang Anda lihat, kriteria tidak sepenuhnya teknis, tetapi ketika Anda adalah pengembang pemula, komunitas dan banyak jawaban untuk stackoverflow adalah nilai tambah yang besar.

Bitbucket dipilih sebagai penyimpanan jarak jauh:

  • gratis;
  • memungkinkan Anda untuk membuat repositori pribadi dan terbuka;
  • memungkinkan Anda membuat tim untuk bekerja dengan berbagai tingkat hak akses;
  • memiliki pelacak tugas sederhana.

Pelacak tugas


Artinya, pilihan bitbucket juga memberikan keberadaan pelacak tugas. Pada pandangan pertama, mungkin terlihat bahwa ketika Anda menulis aplikasi sendiri, pelacak tugas tidak diperlukan, tetapi merupakan kesalahan untuk berpikir demikian. Pelacak tugas mengatur. Memungkinkan Anda membuat rencana. Dan jika ada orang lain yang terhubung ke proyek, tidak perlu mencari apa pun, tetapi dengan pengembangan bersama tanpa pelacak tugas, tidak ada apa-apa. Ya, pelacak dalam bitbucket tidak sempurna, tetapi menutup masalah utama dalam perkiraan pertama.

Dokumentasi


Untuk dokumentasi diputuskan untuk menggunakan readthedocs.io:

  • sistem gratis yang memungkinkan Anda untuk mempublikasikan dokumentasi dalam format Sphinx ;
  • terintegrasi dengan bitbucket (dan banyak lainnya), yaitu, Anda dapat menyimpan sumber dokumentasi dalam bitbucket dan itu akan secara otomatis dikumpulkan di setiap komit, Anda dapat mengatakan integrasi berkelanjutan untuk dokumentasi - ini sangat nyaman;

Sayangnya, dokumentasinya tidak sepenuhnya benar sekarang. Tetapi pada saat itu, tulisannya sangat bermanfaat. Oleh karena itu, saya sangat merekomendasikan menulis dokumentasi kepada semua orang yang memulai proyek mereka - ini menempatkan pemikiran mereka dalam urutan dan memperjelas visi proyek.

Pengujian


Pengujian adalah topik yang sangat besar dan Anda dapat menemukan banyak materi tentang hal ini.

Saya memiliki level model dalam aplikasi tempat semua matematika dan perhitungan dilakukan.
Karena itu, saya memutuskan untuk fokus pada pengujian modul perangkat lunak khusus ini.

Untuk ini saya menggunakan JUnit4 . Tes dijalankan di perangkat.

Tes adalah tes unit dari kelas utama model.

Set data uji dibuat dan, dengan demikian, semua fungsi kelas model dipanggil dengan hasil yang diketahui.

Dari pengalaman saya bisa mengatakan yang berikut:

  • tes sangat membantu dalam menangkap regresi;
  • terkadang kesalahan desain / arsitektur terungkap ketika Anda mulai menggunakan fungsi sendiri, kepala mulai bekerja sedikit berbeda ketika Anda menggunakan fungsi, bahkan jika Anda menulisnya sendiri;
  • terus perbarui tes, saya sekarang menyesal bahwa saya tidak melakukan ini, karena volume aplikasi sudah cukup besar, dan tidak semua detail dapat disimpan dalam memori, dan beberapa regresi yang dapat dideteksi pada unit test sayangnya jatuh ke dalam produksi. Maka dengan ketekunan yang keras kepala dan tumpul - "pertahankan tes tetap up to date !!!"

Arsitektur dan implementasi


Inti dari bagian ini adalah untuk berbicara tentang apa yang harus dipelajari untuk pemula agar dapat mengimplementasikan fungsi seperti dalam aplikasi ini.

Pada awal perjalanan, masalah utamanya adalah tidak jelas harus mulai dari mana dan ke arah mana harus berpikir. Bagaimana melakukannya dan bagaimana melakukannya dengan salah.

Untuk pemula, saya sarankan memulai dengan buku. Buku itu bagus karena informasinya sistematis di dalamnya, dan jauh lebih mudah untuk memulai dengan cara ini.

Secara pribadi, saya mulai dengan β€œPemrograman untuk Android. Untuk para profesional ”B. Hardy, B. Phillips. Secara umum, saya dapat merekomendasikannya. Mungkin sekarang sudah ketinggalan zaman di beberapa tempat, tetapi sangat mungkin untuk memulai.

Saya juga dapat merekomendasikan mendengarkan berbagai podcast pada pemrograman Android. Tentu saja, tidak semuanya jelas di dalamnya, tetapi Anda dapat menangkap tren dan memahami cara untuk bergerak. Secara khusus, saya sesekali mendengarkan androiddev di apptractor .

Adapun arsitektur itu sendiri, saya mencoba menerapkan pendekatan di mana logika internal secara maksimal dipisahkan dari tampilan. Faktanya adalah bahwa pada tahap awal, tidak semuanya dipikirkan secara menyeluruh dan Anda harus dapat mengubah "matematika" (logika kerja) tanpa menulis ulang seluruh kode.

Sebagai contoh, dalam aplikasi saya, esensi utama adalah "aktivitas" dalam hal tugas / aktivitas. Dan keseluruhan logika kerja adalah manipulasi dengan aktivitas: memulai aktivitas, mengakhiri aktivitas, mengatur parameter aktivitas, menghitung statistik interval waktu, dll. Logika ini saya buat

ke dalam struktur kelas yang terpisah


Daftar tugas terdapat di dalam kelas ActionsManager dan semua akses ke sana adalah melalui fungsi-fungsi kelas ini. Artinya, di mana-mana dalam aplikasi, semua manipulasi dengan tugas dilakukan melalui kelas ActionsManager.

Objek database diinisialisasi dalam objek aplikasi. Semua orang mengambil objek dari sini, alih-alih membuat yang baru setiap kali.

Di sini saya dapat memberikan saran seperti itu - mengambil logika ke dalam kelas yang terpisah. Baca tentang pola desain - tidak perlu menemukan sepeda di mana sudah ada solusinya.

GUI didasarkan pada ActionBarDrawerToggle. Pada awalnya, ActionBarSherlock digunakan, tentu saja itu tidak buruk untuk semua orang, tetapi kemudian saya memiliki masalah dengan kompatibilitas dengan komponen lain dan saya beralih ke komponen Google standar (menu, tab, daftar dengan pemuatan data dinamis, dll.).

Dalam proses kesadaran aplikasi, selain komponen android standar, berikut ini digunakan:


Monetisasi


  • Aplikasi itu sendiri sepenuhnya gratis dan tanpa iklan.
  • Direncanakan untuk menambahkan berbagai opsi berbayar dari waktu ke waktu.
  • Saat ini, ini adalah modul statistik tanpa batasan.
  • Semua statistik untuk hari ini dapat dilihat, tetapi untuk melakukan ini selama periode waktu yang sewenang-wenang, Anda perlu membeli modul tanpa batasan.
  • Ternyata, sekarang dengan akun penjual semuanya menjadi lebih mudah.
  • Dalam kasus saya - ada akun di Bank Tabungan, saya membuka akun dolar melalui Bank Tabungan online dan menautkannya ke akun saya - semuanya sangat sederhana. Dan ya, fitur yang bagus, untuk beberapa waktu Google telah mentransfer uang mulai dari $ 1.

PS:
Akhirnya, pesan untuk semua pemula, atau mereka yang ingin memulai - jangan takut kesulitan, jangan takut, secara bertahap, langkah demi langkah, Anda akan berhasil!

Source: https://habr.com/ru/post/id429490/


All Articles