Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Apa perbedaan Java dengan bahasa populer lainnya? Mengapa Java harus menjadi bahasa pertama yang dipelajari? Mari buat rencana yang akan membantu Anda mempelajari Java baik dari awal maupun dengan menerapkan keterampilan pemrograman dalam bahasa lain. Mari kita daftar perbedaan antara membuat kode produksi di Java dan mengembangkannya dalam bahasa lain. Mikhail Zatepyakin membacakan laporan ini pada pertemuan untuk calon peserta magang Yandex dan pengembang pemula lainnya - pertemuan Java Junior.


— Halo semuanya, nama saya Misha. Saya seorang pengembang dari Yandex.Market, dan hari ini saya akan memberi tahu Anda alasan mempelajari Java dan cara melakukannya secara efektif. Anda mungkin mengajukan pertanyaan yang masuk akal: mengapa saya menceritakan kisah ini, dan bukan pengembang kuat dengan pengalaman bertahun-tahun? Faktanya saya sendiri mempelajari Java baru-baru ini, sekitar satu setengah tahun yang lalu, jadi saya masih ingat seperti apa dan apa saja kendalanya.

Setahun yang lalu saya mendapat magang di Yandex.Market. Saya mengembangkan backend untuk Beru, untuk Pasar itu sendiri, Anda mungkin menggunakannya. Sekarang saya terus bekerja di sana, di tim yang berbeda. Kami membuat platform analitis untuk Yandex.Market untuk mitra bisnis.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Mari kita mulai. Mengapa belajar Java dari sudut pandang praktis? Faktanya Java adalah bahasa pemrograman yang sangat terkenal. Ini memiliki komunitas yang sangat besar.

Misalnya, ada indeks TIOBE, indeks popularitas bahasa pemrograman, dan Java menempati urutan pertama di sana. Selain itu, di situs kerja, Anda mungkin akan melihat bahwa sebagian besar lowongan berkaitan dengan Java, yaitu dengan mengembangkan di Java, Anda selalu dapat menemukan pekerjaan.

Karena komunitasnya sangat besar, pertanyaan apa pun yang Anda miliki akan menemukan jawabannya di beberapa Stack Overflow atau situs lain. Selain itu, saat mengembangkan di Java, Anda sebenarnya menulis kode di JVM, sehingga Anda dapat dengan mudah beralih ke Kotlin, Scala, dan bahasa lain yang menggunakan JVM.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Apa kelebihan Jawa dari sudut pandang ideologis? Ada bahasa pemrograman yang berbeda. Mereka memecahkan masalah yang berbeda, Anda tahu itu. Misalnya, Python sangat bagus untuk menulis skrip satu baris untuk menyelesaikan masalah dengan cepat.

Sisi positifnya, Anda dapat sepenuhnya mengontrol kode yang dapat dieksekusi. Misalnya, kami memiliki mobil, mobil tanpa pengemudi Yandex, kodenya ditulis dalam tanda plus. Mengapa? Java memiliki hal seperti itu - Pengumpul Sampah. Ini membersihkan RAM dari objek yang tidak diperlukan. Hal ini dimulai secara spontan dan menghentikan dunia, yaitu menghentikan sisa program dan melanjutkan menghitung objek, menghapus memori objek. Jika hal seperti itu berhasil di drone, itu tidak keren. Drone Anda akan melaju lurus, saat ini bersihkan ingatannya dan tidak melihat ke jalan sama sekali. Oleh karena itu, drone ini ditulis sebagai kelebihannya.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Masalah apa yang dipecahkan oleh Java? Ini pada dasarnya adalah bahasa untuk mengembangkan program besar yang ditulis selama bertahun-tahun, oleh puluhan atau ratusan orang. Secara khusus, banyak backend di Yandex.Market ditulis dalam Java. Kami memiliki tim yang tersebar di beberapa kota, masing-masing sepuluh orang. Dan kodenya mudah dipelihara, telah didukung selama sepuluh tahun atau lebih, dan pada saat yang sama orang-orang baru masuk dan memahami kode ini.

Ciri-ciri apa yang harus dimiliki suatu bahasa agar kode di dalamnya mudah didukung dan mudah dikembangkan dalam tim besar. Pertama-tama, kode tersebut harus dapat dibaca, dan harus mudah untuk mengimplementasikan solusi arsitektur yang kompleks. Artinya, menulis abstraksi tingkat tinggi harus mudah, dll. Semua ini disediakan oleh Java untuk kita. Ini adalah bahasa berorientasi objek. Sangat mudah untuk mengimplementasikan abstraksi tingkat tinggi dan arsitektur yang kompleks.

Ada juga banyak framework dan perpustakaan untuk Java, karena bahasanya sudah berumur lebih dari 15 tahun. Selama ini, segala sesuatu yang dapat ditulis telah ditulis di dalamnya, jadi ada banyak sekali perpustakaan untuk semua yang mungkin Anda perlukan.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Menurut saya, skill dasar apa yang harus dimiliki oleh pemain JA pemula? Pertama-tama, ini adalah pengetahuan tentang bahasa inti Java. Berikutnya adalah semacam kerangka Injeksi Ketergantungan. Pembicara selanjutnya, Kirill, akan membicarakan hal ini lebih lengkap. Saya tidak akan membahasnya terlalu dalam. Berikutnya adalah arsitektur dan pola desain. Kita harus mampu menulis kode arsitektural yang indah untuk menulis aplikasi besar. Dan ini adalah semacam SQL atau ORM untuk tugas bekerja dengan database. Dan ini lebih berlaku pada backend.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Pergi! Inti Jawa. Saya tidak akan benar-benar menemukan Amerika di sini—Anda perlu mengetahui bahasanya sendiri. Apa yang harus Anda perhatikan. Pertama, Java telah merilis banyak versi dalam beberapa tahun terakhir, yaitu pada tahun 2014-2015 dirilis versi ketujuh, kemudian versi kedelapan, kesembilan, kesepuluh, banyak versi baru, dan banyak hal keren baru yang diperkenalkan di dalamnya. , misalnya Java Stream API, lambda, dll. Hal-hal yang sangat keren, segar, keren yang digunakan dalam kode produksi, apa yang mereka tanyakan dalam wawancara dan apa yang perlu Anda ketahui. Oleh karena itu, Anda tidak boleh mengambil buku dari rak perpustakaan Java-4 dan mempelajarinya. Inilah rencana kami: kami mempelajari Java-8 atau lebih tinggi.

Kami sangat memperhatikan inovasi seperti Stream API, var, dll. Inovasi tersebut ditanyakan selama wawancara dan terus digunakan dalam produksi. Artinya, Stream API jauh lebih keren daripada loop, secara umum, hal yang sangat keren. Pastikan untuk memperhatikan.

Dan ada banyak hal seperti iterator, Pengecualian, dan sebagainya. Hal-hal yang tampaknya tidak penting bagi Anda selama Anda menulis sendiri beberapa kode kecil. Anda tidak memerlukan Pengecualian ini, siapa sih yang membutuhkannya? Tapi mereka pasti akan ditanya saat wawancara, pasti berguna bagi Anda dalam produksi. Secara umum, Anda harus memperhatikan Pengecualian, iterator, dan hal lainnya.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Struktur data. Anda tidak dapat melakukannya tanpa struktur, tetapi akan lebih bagus jika Anda tidak mengetahui bahwa ada set, kamus, dan lembar. Dan juga implementasi struktur yang berbeda. Misalnya, kamus yang sama di Java memiliki banyak implementasi, termasuk HashMap dan TreeMap. Mereka memiliki asimtotik yang berbeda, struktur dalamnya berbeda. Anda perlu mengetahui perbedaannya dan kapan menggunakan yang mana.

Akan sangat keren juga jika Anda mengetahui cara kerja struktur data ini secara internal. Artinya, tidak mudah untuk mengetahui asimtotiknya - seberapa besar taruhannya bekerja, berapa lama passnya bekerja, tetapi bagaimana strukturnya bekerja di dalamnya - misalnya, apa itu keranjang di HashMap.

Perlu juga memperhatikan pohon dan grafik. Ini adalah hal-hal yang tidak terlalu umum dalam kode produksi, namun populer dalam wawancara. Oleh karena itu, Anda harus mampu melintasi pepohonan, lebar dan kedalaman grafik. Ini semua adalah algoritma sederhana.

Segera setelah Anda mulai menulis kode apa pun yang besar, rumit, menggunakan perpustakaan, kode multi-kelas, Anda akan menyadari bahwa sulit bagi Anda tanpa membangun sistem dan menyelesaikan ketergantungan. Ini terutama adalah Maven dan Gradle. Mereka memungkinkan Anda mengimpor perpustakaan ke proyek Anda dalam satu baris. Artinya, Anda menulis xml satu baris dan mengimpor perpustakaan ke dalam proyek. Sistem yang hebat. Mereka kira-kira sama, gunakan salah satu - Maven atau Gradle.

Selanjutnya - semacam sistem kontrol versi. Saya merekomendasikan Git karena populer dan ada banyak sekali tutorialnya. Hampir semua orang menggunakan Git, ini hal yang keren, Anda tidak bisa hidup tanpanya.

Dan semacam lingkungan pengembangan. Saya merekomendasikan Ide IntelliJ. Ini sangat mempercepat proses pengembangan, banyak membantu Anda, menulis semua kode boilerplate untuk Anda, secara umum, itu keren.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Tautan dari slide: SQLZOO, habrapost

SQL. Sedikit tentang backender. Sebenarnya ada kasus lucu di sini. Dua hari sebelum wawancara magang kedua saya, seorang gadis HR menelepon saya dan mengatakan bahwa dalam dua hari mereka akan bertanya kepada saya tentang SQL dan HTTP, saya perlu mempelajarinya. Dan saya hampir tidak tahu apa pun tentang SQL atau HTTP. Dan saya menemukan situs keren ini - SQLZOO. Saya mempelajari SQL dalam 12 jam, maksud saya, sintaks SQL, cara menulis kueri SELECT, GABUNG, dll. Situs yang sangat keren, saya sangat merekomendasikannya. Faktanya, dalam 12 jam saya mempelajari 90% dari apa yang saya ketahui sekarang.

Dan menyenangkan juga mengetahui arsitektur database. Ini semua jenis kunci, indeks, normalisasi. Ada serangkaian postingan tentang ini di Habré.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Di Java, selain SQL, ada berbagai macam sistem pemetaan relasional objek seperti JPA. Ada beberapa kode. Pada metode pertama ada beberapa kode SQL - PILIH nama id DARI info.pengguna DI MANA id DI ID pengguna. Dari database pengguna, dari tabel, ID dan nama mereka diperoleh.

Selanjutnya ada mapper tertentu yang mengubah suatu objek dari dasar menjadi objek Java. Dan ada metode ketiga di bawah ini yang benar-benar mengeksekusi kode ini. Semua ini bisa diganti menggunakan JPA dengan satu baris, yang tertulis di bawah. Ia melakukan hal yang sama - temukan All ByIdIn. Artinya, berdasarkan nama metodenya, ini menghasilkan kueri SQL untuk Anda.

Hal yang sangat keren. Saya sendiri, ketika saya belum tahu SQL, menggunakan JPA. Secara umum, perhatikan. Jika Anda terlalu malas untuk belajar SQL, itu adalah bencana. Dan, secara umum, tembak!

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Musim semi. Siapa yang pernah mendengar kerangka Spring? Apakah Anda melihat berapa banyak dari Anda? Bukan tanpa alasan. Musim semi disertakan dalam persyaratan setiap detik lowongan backend Java. Tanpanya, tidak ada perkembangan besar yang akan terjadi. Apa itu Musim Semi? Pertama-tama, ini adalah kerangka Injeksi Ketergantungan. Tentang ini juga akan memberitahu pembicara berikutnya. Namun singkatnya, ini adalah sesuatu yang memungkinkan Anda mempermudah mengimpor dependensi dari beberapa kelas ke kelas lainnya. Artinya, pengetahuan tentang ketergantungan disederhanakan.

Spring Boot adalah bagian dari Spring yang memungkinkan Anda menjalankan aplikasi server Anda dengan satu tombol. Anda pergi ke THID, tekan beberapa tombol, dan sekarang aplikasi server Anda sudah aktif dan berjalan di localhost 8080. Artinya, Anda belum menulis satu baris kode pun, tetapi sudah berfungsi. Hal yang sangat keren. Jika Anda menulis sesuatu milik Anda sendiri, tembak!

Musim semi adalah kerangka yang sangat besar. Itu tidak hanya mengambil aplikasi server Anda dan menyelesaikan Injeksi Ketergantungan. Ini memungkinkan Anda melakukan banyak hal, termasuk membuat metode REST API. Artinya, Anda menulis beberapa metode dan melampirkan anotasi Dapatkan pemetaan ke dalamnya. Dan sekarang Anda sudah memiliki beberapa metode di localhost yang menulis Hello world to you. Dua baris kode dan berfungsi. Hal keren.

Musim semi juga membuat tes menulis lebih mudah. Tidak ada jalan tanpa pengujian dalam pengembangan besar. Kode tersebut perlu diuji. Untuk tujuan ini, Java memiliki perpustakaan keren JUnit 5. Dan JUnit pada umumnya, namun versi terbarunya adalah yang kelima. Ada segalanya untuk pengujian, segala macam pernyataan dan hal-hal lain.

Dan ada kerangka Mockito yang mengagumkan. Bayangkan Anda memiliki beberapa fungsi yang ingin Anda uji. Fungsionalitas ini melakukan banyak hal, termasuk, di tengah-tengah, ia masuk ke VKontakte dengan ID Anda, misalnya, dan menerima nama depan dan belakang pengguna VKontakte dari ID tersebut. Anda mungkin tidak akan menyertakan VKontakte dalam pengujian, itu aneh. Tapi Anda perlu menguji fungsionalitasnya, jadi Anda membuat kelas ini, menggunakan Mockito, menirunya, menirunya.

Anda akan mengatakan bahwa ketika permintaan datang ke kelas ini dengan ID ini dan itu, ia mengembalikan beberapa nama belakang, misalnya, Vasya Pupkin. Dan itu akan berhasil. Artinya, Anda akan menguji semua fungsionalitas untuk mok satu kelas. Hal yang sangat keren.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Tautan dari slide

Pola desain. Apa itu? Ini adalah pola untuk memecahkan masalah umum yang muncul dalam pembangunan. Dalam pengembangan, sering kali muncul masalah yang identik atau serupa yang akan lebih baik jika diselesaikan dengan baik. Oleh karena itu, orang-orang menemukan praktik terbaik, pola tertentu, tentang cara mengatasi masalah ini.

Ada situs web dengan pola paling populer - refactoring.guru, Anda dapat membacanya, mencari tahu pola apa saja yang ada, membaca banyak teori. Masalahnya adalah hal itu praktis tidak berguna. Faktanya, pola tanpa latihan tidak terlalu berguna.

Anda akan mendengar tentang beberapa pola seperti Singletone atau Builder. Siapa yang mendengar kata-kata ini? Banyak orang. Ada pola sederhana yang bisa Anda terapkan sendiri. Tetapi sebagian besar polanya: strategi, pabrik, fasad - tidak jelas di mana menerapkannya.

Dan sampai Anda melihat dalam praktik kode orang lain di mana pola ini diterapkan, Anda tidak akan dapat menerapkannya sendiri. Oleh karena itu, latihan sangat penting dengan pola. Dan hanya membacanya di refactoring.guru tidaklah terlalu membantu, tapi pastinya layak untuk dilakukan.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Mengapa pola dibutuhkan? Katakanlah Anda memiliki kelas Pengguna tertentu. Ia memiliki Id dan Nama. Setiap Pengguna harus memiliki Id dan Nama. Kiri atas adalah ruang kelas.

Apa cara untuk menginisialisasi Pengguna? Ada dua opsi - konstruktor atau penyetel. Apa kelemahan kedua pendekatan tersebut?

Konstruktor. Pengguna baru (7, "Bond"), oke. Sekarang katakanlah kita tidak memiliki kelas User, tetapi kelas lain, dengan tujuh bidang numerik. Anda akan memiliki konstruktor yang berisi tujuh angka berurutan. Tidak jelas angka-angka apa ini dan angka-angka mana yang termasuk dalam properti mana. Desainernya tidak hebat.

Opsi kedua adalah penyetel. Anda dengan jelas menulis: setId(7), setName(“Bond”). Anda memahami properti mana yang termasuk dalam bidang mana. Tapi penyetel punya masalah. Pertama, Anda mungkin lupa menetapkan sesuatu, dan kedua, objek Anda bisa berubah. Ini tidak aman untuk thread dan sedikit mengurangi keterbacaan kode. Itu sebabnya orang datang dengan pola keren - Builder.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Tentang apakah ini? Mari kita coba menggabungkan keunggulan kedua pendekatan—setter dan konstruktor—dalam satu pendekatan. Kami membuat objek tertentu, Pembangun, yang juga akan memiliki bidang Id dan Nama, yang akan dibangun sendiri berdasarkan penyetel, dan yang akan memiliki metode Bangun yang mengembalikan Anda Pengguna baru dengan semua parameter. Kami mendapatkan objek dan penyetel yang tidak dapat diubah. Dingin!

Apa masalahnya? Di sini kita memiliki Builder klasik. Masalahnya adalah kita masih bisa lupa untuk memeriksa beberapa bidang. Dan jika kita lupa mengunjungi ID-nya, dalam hal ini di Builder diinisialisasi ke nol, karena tipe int tidak dapat dibatalkan. Dan jika kita membuat Nama “Bond” dan lupa mengunjungi kantor ID, kita akan memiliki User baru dengan id “0” dan nama “Bond”. Tidak keren.

Mari kita coba melawannya. Di Builder kita akan mengubah int menjadi int sehingga dapat dibatalkan. Sekarang semuanya baik-baik saja.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Jika kita mencoba membuat Pengguna dengan nama “Bond”, lupa memasukkan ID-nya, kita akan mendapatkan pengecualian penunjuk nol, karena ID tersebut tidak dapat dibatalkan, dan Pembuatnya memiliki pengecualian penunjuk nol, khususnya penunjuk.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Tapi kita masih bisa lupa memberi nama, jadi kita atur pemutaran ulang objek ke null. Sekarang, ketika kita membangun objek kita dari Builder, ia memeriksa bahwa bidang tersebut tidak dapat dibatalkan. Dan itu belum semuanya.

Mari kita lihat contoh terakhir. Dalam hal ini, jika kami memasukkan null pada runtime ID, alangkah baiknya jika kami segera mengetahui bahwa Anda melakukannya dan tidak keren jika Anda membuat kesalahan sekarang.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Anda perlu membuat kesalahan bukan pada saat pembuatan Pengguna, tetapi saat Anda menyetel null ke ID. Oleh karena itu, di Builder kita akan mengubah setter Integer menjadi int, dan dia akan langsung bersumpah bahwa mereka membuang null.

Singkatnya, apa gunanya? Ada pola Builder yang sederhana, namun penerapannya pun memiliki beberapa kehalusan, jadi sangat keren untuk melihat penerapan pola yang berbeda. Setiap pola memiliki lusinan implementasi. ini semua sangat menarik.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Bagaimana cara kita menulis Builder dalam kode produksi? Inilah Pengguna kami. Kami melampirkan rotasi Builder dari perpustakaan Lombok ke dalamnya, dan ia sendiri menghasilkan Builder untuk kami. Artinya, kami tidak menulis kode apa pun, tetapi Java sudah menganggap kelas ini memiliki Builder, dan kami dapat menyebutnya seperti ini.

Saya sudah mengatakan bahwa Java memiliki perpustakaan untuk hampir semua hal, termasuk Lombok, perpustakaan keren yang memungkinkan Anda menghindari penulisan boilerplate. Pembangun, DAPATKAN.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Pola dapat bersifat arsitektural - tidak hanya terkait dengan satu kelas, tetapi juga dengan sistem secara keseluruhan. Ada prinsip keren dalam desain sistem: Prinsip Tanggung Jawab Tunggal. Apa yang dia bicarakan? Fakta bahwa setiap kelas harus bertanggung jawab atas beberapa fungsinya sendiri. Dalam hal ini, kami memiliki Pengontrol yang berkomunikasi dengan pengguna, objek JSON. Ada Fasad, yang mengubah objek JSON menjadi model yang kemudian akan digunakan oleh aplikasi Java. Ada Layanan yang memiliki logika kompleks yang bekerja dengan model ini. Ada Objek Akses Data yang menempatkan model ini ke dalam database dan mengambilnya dari database. Dan ada databasenya sendiri. Dengan kata lain, tidak semuanya dalam satu kelas, tapi kami membuat lima kelas berbeda, dan itu pola yang lain.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Setelah Anda kurang lebih mempelajari Java, sangat bagus untuk menulis proyek Anda sendiri yang akan memiliki database, bekerja dengan API lain, dan mengekspos aplikasi server Anda ke klien REST API. Ini akan menjadi hal yang bagus untuk ditambahkan ke resume Anda, ini akan menjadi akhir yang keren untuk pendidikan Anda. Dengan ini Anda bisa pergi dan mendapatkan pekerjaan.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Berikut adalah contoh aplikasi server saya. Di tahun kedua saya, saya menulis makalah bersama teman-teman. Mereka sedang menulis aplikasi seluler untuk mengatur acara. Di sana, pengguna dapat masuk melalui VKontakte, menempatkan titik di peta, membuat acara, mengundang teman ke acara tersebut, menyimpan gambar acara, dll.

Apa yang saya lakukan dalam proyek ini? Menulis aplikasi server di Spring Boot tanpa menggunakan SQL. Saya tidak mengenalnya, saya menggunakan JPA. Apa yang bisa dilakukannya? Masuk ke VK melalui OAuth-2. Ambil token pengguna, buka VK dengannya, periksa apakah itu adalah pengguna asli. Terima informasi tentang pengguna melalui VKontakte. Ia mampu menyimpan informasi dalam database, juga melalui JPA. Simpan gambar dan file lain dengan terampil di memori komputer, dan simpan tautan ke file tersebut di database. Saat itu saya belum mengetahui ada objek CLOB di database, jadi saya melakukannya dengan cara ini. Ada REST API untuk pengguna, aplikasi klien. Dan ada pengujian unit untuk fungsionalitas dasar.

[…] Sebuah contoh kecil keberhasilan saya mempelajari Java. Pada tahun pertama saya di universitas, saya diajari C# dan diberikan pemahaman tentang pemrograman OOP - apa itu kelas, antarmuka, abstraksi, dan mengapa itu diperlukan. Itu banyak membantu saya. Tanpa ini, mempelajari Java cukup sulit; tidak jelas mengapa diperlukan kelas.

Mengapa mempelajari Java dan bagaimana melakukannya secara efektif. Laporan Yandex

Pada tahun kedua saya di universitas, mereka kembali mengajarkan inti Java, tetapi saya tidak berhenti di situ, saya sendiri belajar Spring dan menulis makalah kursus, proyek saya, yang saya sebutkan di atas. Dan dengan semua ini, saya magang di Yandex, lulus wawancara, dan masuk ke Yandex.Market. Di sana saya menulis backend untuk Beru, ini adalah pasar kami, dan untuk Yandex.Market itu sendiri.

Setelah itu, enam bulan lalu, saya dipindahkan ke tim lain di Pasar yang sama. Kami melakukan analisis untuk mitra bisnis. Kami berada di platform analitik, kami bertiga di backend, jadi saya memiliki pengaruh yang sangat besar pada proyek ini. Sebenarnya sangat menarik. Artinya, kami sebenarnya menyediakan data pasar - apa penjualannya, kategori apa, model apa, untuk mitra bisnis, perusahaan besar ternama. Dan kami hanya bertiga, kami menulis kode ini, dan itu sangat keren.

Terima kasih! Tautan yang berguna:
- "Java 8. Panduan Pemula".
- Struktur data.
- SQLZOO.
- Normalisasi Basis Data.
- Pola desain.
- Pola desain.
- Kode Bersih.
- Java yang efektif.

Sumber: www.habr.com

Tambah komentar