Bagaimana cara memilih insinyur perangkat lunak aplikasi web? [Tutup]

10

Bagaimana saya harus memilih seorang insinyur perangkat lunak aplikasi web?

Posisi (permanen) adalah untuk menulis ulang klien dari aplikasi server klien desktop yang ada. Halaman tidak akan dihasilkan secara dinamis di server, tetapi server akan mengekspos API lengkap dengan cara apa pun yang diperlukan, misalnya panggilan JSON RPC, dan dapat membuat file statis tersedia. Ini akan menggantikan klien yang harus diunduh dan dipasang oleh orang, sehingga memerlukan peramban yang layak dengan pengaturan yang wajar (mis. JavaScript diaktifkan) tidak masalah. Hampir semua kasus penggunaan adalah untuk PC desktop. Ini tidak akan dapat diakses oleh mesin pencari (ini adalah aplikasi perusahaan).

Kita bisa menulis semuanya dalam satu halaman, tetapi tidak harus. Hampir semua ditulis oleh insinyur perangkat lunak aplikasi web yang bersangkutan. Pustaka sumber terbuka yang tepat untuk digunakan juga terserah insinyur, layaknya.

Saya secara khusus mencari saran tentang kualifikasi apa yang harus dicari / diverifikasi dalam sebuah wawancara, karena memilih seorang insinyur perangkat lunak aplikasi web pada umumnya adalah topik yang terlalu luas.

Sunting - Posisi ini murni pemrograman JavaScript dalam browser (dan bertanggung jawab atas HTML dan CSS) - pengembang lain akan mengembangkan server tetapi posisi ini dapat meminta fasad di atas API. Tidak ada Ruby, ASP, JSP, dll. Karena lapisan server web sangat tipis dan hanya menerjemahkan panggilan ke API lapisan bisnis dan mengembalikannya sebagai JSON (atau apa pun, tetapi JSON tampaknya lebih mudah).

psr
sumber
FYI - Ini bukan duplikat dari programmers.stackexchange.com/questions/105114/... , yang cukup spesifik untuk situs e-commerce dan lebih khusus menanyakan apakah pertanyaan kunci harus: "Apakah Anda sendiri, atau dengan satu atau dua mitra, pernah membawa produk ke pasar? Saya tidak peduli apakah itu berhasil atau gagal, tetapi ceritakan tentang hal itu. "
psr
Saya memperbaiki judul dalam pertanyaan yang Anda tautkan, karena pertanyaan yang diajukan cukup spesifik. Sayangnya, yang ini tidak. Dari faq : Pertanyaan Anda harus dicakup secara wajar. Jika Anda dapat membayangkan seluruh buku yang menjawab pertanyaan Anda, Anda terlalu banyak bertanya.
Robert Harvey
Jika saya membatasi untuk kasus ini, maka apakah itu umumnya tidak berguna?
psr
Apa kekhawatiran Anda yang paling mendesak? Saya dapat memberi Anda generalisasi, seperti jangan terlalu khawatir tentang apa yang TLA miliki pada CV mereka. Berdasarkan posisi yang Anda jelaskan, mereka harus menjadi pemecah masalah, dan sedikit penarik yang mengerti lebih dari sekadar membangun aplikasi CRUD. Jika mereka memiliki kualitas-kualitas ini, mereka dapat menangani masalah spesifik teknologi yang Anda hadapi. Ini juga tergantung pada apakah ini merupakan posisi penuh waktu yang sedang berlangsung atau kontrak sementara.
Robert Harvey
Sungguh, bagaimana cara menyewa seorang insinyur perangkat lunak aplikasi web. Secara khusus, saya kira kualifikasi apa yang harus dicari / tes dalam wawancara
psr

Jawaban:

2

Sebagai pengembang web yang terutama bekerja pada aplikasi perusahaan yang berurusan dengan sistem legacy, saya dapat menawarkan beberapa saran tentang apa yang membuat saya sukses, dan mudah-mudahan itu akan membantu.

Saya tidak yakin apakah Anda mencari situasi sementara / konsultasi untuk memberi Anda satu aplikasi, atau FTE untuk mengembangkan dan mempertahankan jangka panjang ini, tetapi ini harus berlaku dalam kedua kasus tersebut, saya pikir.

  • Saya terutama menggunakan Ruby. Ini membuat prototyping cepat sangat cepat dan mudah, dan Rails membuatnya mudah untuk mem-bootstrap proyek baru. Sekarang, saya tidak tahu seperti apa lingkungan Anda, apakah Anda memiliki mandat kelembagaan untuk bahasa, platform, perkakas, tetapi jika Anda dapat menyewa pengembang yang mahir dalam bahasa / kerangka kerja modern yang fleksibel yang membuat penulisan DSL untuk ditangani API asing relatif cepat dan mudah, itu nilai tambah. Pada dasarnya, bahasa apa pun dengan sifat Lisp akan lebih unggul dalam hal ini. Juga, mempekerjakan seseorang yang mahir dalam bahasa dengan ekosistem perpustakaan open-source yang bagus untuk menangani abstraksi umum adalah suatu keharusan.
  • Jika Anda dapat menemukan seseorang yang terbiasa berurusan dengan sistem warisan dan mengabstraksi keanehan mereka, itu jarang terjadi dan Anda harus menjelajahinya. Kebanyakan pengembang digunakan untuk membangun proyek dari bawah ke atas (atau dibawa masuk untuk memelihara proyek yang ada) dan membangun sesuatu yang baru untuk berinteraksi dengan sesuatu yang lama membutuhkan ... bukan keahlian, per se, tetapi pendekatan.
  • Ketika Anda mengatakan "server akan mengekspos API dengan cara apa pun yang diperlukan," itu agak kabur, tapi saya kira Anda maksudnya ada pengembang yang ada yang dapat mengimplementasikan API di server? Saya akan menjelaskan bahwa posisinya akan melibatkan bekerja dengan para pengembang untuk menentukan API. Jika Anda dapat memberikan contoh jenis interaksi yang diperlukan, dan tanyakan pada kandidat pemikiran awal mereka tentang bagaimana menerapkannya, itu mungkin bisa dikatakan. Saya pikir fakta bahwa pemikiran awal Anda adalah JSON RPC menunjukkan Anda condong ke arah yang benar, jadi waspadalah terhadap siapa pun yang memiliki visi interaksi XML dan XSLT yang kompleks.
  • Jika Anda dapat mengharapkan dukungan JavaScript browser yang layak, cari seseorang yang berpengalaman dengan kerangka kerja JS seperti Backbone.js, JavaScriptMVC, dll. Anda dapat melakukan seluruh aplikasi (pada dasarnya) di dalam browser dan mungkin menyajikannya dengan Node.js atau apalah. ... jadi lihatlah ke arah pengembang JS yang baik. Jika mereka mengatakan mereka lebih suka menulis JS dalam CoffeeScript, mereka mungkin JS devs yang lebih baik.

Hanya beberapa pemikiran dari pengalaman saya di parit, tetapi jika departemen saya merekrut pengembang baru, inilah yang akan saya katakan kepada mereka untuk dicari.

Saya berharap departemen saya memiliki anggaran untuk pengembang lain ...

Jason Lewis
sumber
Server ada dan pengembang lain (selain pengembang baru) akan membuat API terjadi. Tidak akan menyentuh sistem lama atau bertanggung jawab atas kekhasan - orang lain akan melakukannya, meskipun pengembang ini bisa meminta fasad tertentu. Tidak ada ruby, karena tidak ada halaman yang dihasilkan secara dinamis - dan pengembang ini akan menjadi pengkodean JavaScript murni dalam browser (bertanggung jawab atas HTML dan CSS juga). Jika pada akhirnya kami tidak menyewa pengembang lain, saya sebenarnya akan melakukannya sendiri di Backbone.js menggunakan JSON RPC, jadi terima kasih untuk sedikit validasi.
psr
1

Catatan: Ini hanya pendapat saya, jadi jangan melemparkan wastafel dapur ke arah saya;)

Saya pikir Anda munging nama-nama dari dua posisi yang jelas berbeda (yang dapat sedikit membingungkan).

Insinyur Perangkat Lunak : Seorang insinyur. Orang yang kuat dalam memecahkan masalah abstrak yang tidak harus terikat pada platform tertentu. Pengetahuan yang kuat tentang pola desain, algoritma (baik algoritma yang dikenal serta desain dan analisis algoritma), beberapa kekuatan dalam aljabar linier dan mungkin beberapa kalkulus. Ketika mempekerjakan seorang insinyur perangkat lunak di masa lalu, saya belum khawatir tentang pengetahuan domain spesifik mereka seperti kemampuan mereka untuk memecahkan masalah yang kompleks.

Pengembang Aplikasi Web : Seseorang yang mengetahui seluk beluk membangun aplikasi web. Memahami arsitektur server vs sisi klien dan bagaimana berkomunikasi secara efektif antara keduanya. Sudah terbiasa dengan standar W3C, baik negara yang sudah selesai maupun WIP. Memahami cara kerja basis data dan cara mengoptimalkan bila perlu (optimasi kueri, penyimpanan basis data, pengindeksan, dll). Juga pahami berbagai mekanisme caching dan cara lain untuk mengoptimalkan aplikasi mereka. Juga memahami konvensi semantik.

Mungkin ada beberapa hal di sana yang saya lewatkan yang mungkin saya isi ketika saya memikirkan mereka.

Dari uraian tentang apa yang Anda cari, menurut saya sepertinya Anda sama sekali tidak mencari insinyur perangkat lunak; Anda sedang mencari pengembang aplikasi web.

Jadi, hal pertama yang akan saya lakukan adalah mempersempit siapa yang Anda cari dan keahlian apa yang Anda harapkan dari seorang kandidat. Mungkin sedikit membantu Anda.

Demian Brecht
sumber
Lihat programmers.stackexchange.com/questions/45681/… - menulis persyaratan pekerjaan untuk pengembang aplikasi web. Dari situlah nama itu berasal. Saya ingin pengembang aplikasi web bekerja secara murni di akhir browser (seperti yang sudah saya sebutkan). Jadi tidak ada hal DB yang relevan. Keterampilan Rekayasa Perangkat Lunak akan.
psr
Betulkah? Anda ingin seseorang yang bekerja pada sistem web yang tidak mengerti hal-hal database dan sisi server ?? Eesh.
Demian Brecht
Belum lagi .. Ini tidak terlalu sering bahwa pengembang aplikasi sisi klien akan perlu tahu ini seperti bagaimana melintasi luasnya pohon terlebih dahulu, atau bagaimana menentukan waktu kejadian terburuk untuk algoritma atau implementasi yang diberikan sebuah cryptosystem. Hanya mengatakan. Karena itu, jika Anda menyewa untuk Google atau Amazon, saya dapat menarik kembali pernyataan itu.
Demian Brecht