JavaRush /Blog Jawa /Random-JV /Sapa sing Software Engineer? Software engineering VS "jus...

Sapa sing Software Engineer? Software engineering VS "just" programming

Diterbitake ing grup
Kita menehi perhatian marang adaptasi artikel dening Samer Buna babagan bedane antarane teknik piranti lunak lan pemrograman, utawa kepiye carane ngembangake konsep piranti lunak beda karo "mung coding."
Sapa sing Software Engineer?  Rekayasa Perangkat Lunak VS
Kabeh insinyur piranti lunak bisa kode, nanging ora kabeh programer bisa ngembangake konsep piranti lunak. Sawetara wong ora seneng karo istilah "Software Engineer" (alias Software Engineer) amarga paling asring kita nggunakake tembung "insinyur" nalika ngomong babagan sing luwih fisik - konstruksi, contone. Artikel kita, mesthi, ora babagan istilah kasebut. Yen dumadakan nyebabake sampeyan ditolak, bisa gampang diganti karo sing ana gandhengane karo kreatifitas. "Software Creator", "Software Author"... utawa malah "Software Creator"!
Nalika kita ngomong babagan "insinyur piranti lunak," tegese wong sing tugas utamane ora mung nulis kode, nanging nggawe aplikasi sing berkualitas. Lan ing kono dheweke ndeleng panggilane, nggunakake pendekatan ilmiah lan metode statistik kanggo karyane. Kanggo dheweke, program ora mung cara kanggo entuk dhuwit kanggo panganan.
Kemampuan kanggo program ora kanthi otomatis nggawe wong dadi insinyur piranti lunak. Sapa wae bisa sinau kode, lan luwih gampang tinimbang sing katon. Sapa wae bisa nggawe program prasaja kanggo panggunaan dhewe, nanging iki ora njamin yen program sing padha bakal bisa digunakake kanggo wong liya. Conto favoritku yaiku: akeh sing nyanyi ing kamar mandi, nanging, sayangé, pagelaran iki ora mesthi pantes kanggo panggung profesional. Mesthine, kanggo pengalaman musik sing berkualitas, sampeyan bakal dadi profesional. Apa sampeyan butuh conto liyane?
  • Kita kabeh sinau matematika lan nulis ing sekolah, nanging ora nggawe kita dadi ahli matematika lan panulis.
  • Umume kita bisa nyiyapake sajian sing bisa ditrapake lan kadhangkala enak banget, nanging ora saben wong wani masak meja kanggo 100 wong kanggo pesta nedha bengi kedutaan. Ing kasus iki, kita nyewa juru masak.
  • Apa sampeyan wis siyap saiki kanggo ngandelake konstruksi omah anyar sampeyan marang anak tanggane sing nggawe karya agung saka Lego?
Titik utama sing dakkarepake ing artikel iki yaiku program sing prasaja beda banget karo program sing dirancang dening insinyur. Dhéfinisi sing paling gampang saka proses pemrograman: nggawe urutan tumindak sing diurutake kanggo komputer supaya bisa entuk sing spesifik minangka output, diwenehi parameter input. Proses rekayasa piranti lunak yaiku desain, nulis, nguji, lan kurasi program komputer kanggo ngatasi masalah kanggo akeh pangguna. Iki babagan nggawe solusi sing dipercaya lan aman sing bakal tahan uji wektu lan bisa ngatasi sawetara tantangan sing ora dingerteni.
Sapa sing Software Engineer?  Rekayasa Perangkat Lunak VS
Insinyur piranti lunak ngerti kabeh babagan masalah sing dipecahake, solusi sing diusulake, watesan solusi kasebut, privasi lan keamanan. Ing mratelakake panemume, yen wong ora ngerti inti saka masalah, ora kudu miwiti kanggo program solusi.

Pola pikir teknik - golek solusi sing ditrapake

Insinyur piranti lunak ora nganggep piranti lunak nulis minangka tujuan utama. Dheweke mikir babagan nyukupi kabutuhan lan ngrampungake masalah . Iki penting amarga ora saben masalah mbutuhake solusi piranti lunak. Sawetara bisa ditangani kanthi nggunakake program sing wis ana. Kedadeyan sawetara masalah kadhangkala bisa diprediksi luwih dhisik, lan kanthi bantuan desain program sing kompeten, bisa dihindari ing mangsa ngarep.

"Intellectuals ngrampungake masalah, genius nyegah"

- Albert Einstein

Sapa sing Software Engineer?  Rekayasa Perangkat Lunak VS
Masalah rumit asring mbutuhake nulis akeh program. Ana tugas sing mbutuhake aplikasi sing mlaku paralel, dene liyane mbutuhake eksekusi sawetara program. Sawetara masalah bisa ditanggulangi mung kanthi latihan pangguna. Sadurunge miwiti nggawe program, insinyur piranti lunak takon sawetara pitakon:
  • Masalah apa sing kudu dakrampungake?
  • Apa maneh sing bisa ditindakake kajaba nulis kode kanggo ngatasi masalah kasebut?
  • Apa sing bisa daklakoni kanggo nggampangake tugas kasebut nganggo aplikasi kasebut?

Kualitas program lan kualitas kode

Program sing apik jelas lan bisa diwaca. Padha gampang kanggo ngluwihi, muter uga karo program liyane, lan ora bakal ngipi elek kanggo nggarap. Kualitas kode ora bisa dirundingake. Mesthine dhuwur, iku kabeh. Nalika ngelingi, alesan kayata swasana ati ala coder utawa tenggat wektu sing ketat banget (oh, tenggat wektu kasebut!) Ora bisa ditampa. Salah sawijining aspek sing paling penting ing pangembangan piranti lunak yaiku ngrancang program kanthi cara sing gampang dijaga lan diowahi ing mangsa ngarep (halo, OOP!). Saiki, meh kabeh piranti lunak bisa diowahi, asring proses iki kedadeyan sanajan ora ana partisipasi pangguna utawa ora mbutuhake apa-apa saka pangguna kajaba "program sampeyan wis dianyari, klik OK utawa Tunda." Mesthi, pangguna duwe hak kanggo nuntut fitur-fitur anyar saka aplikasi (utamane yen kita ngomong babagan piranti lunak perusahaan sing wis suwe ditulis ing Jawa, utawa game online sing bisa dimainake nganti pirang-pirang taun).
Pengin ngerti luwih akeh babagan pemrograman Java? Gabung karo grup Java Developer !
A Piece saka kode dhewe meh ora bisa disebut migunani. Fungsi piranti lunak sing migunani diwiwiti ing ngendi potongan-potongan aplikasi sing beda-beda bisa saling komunikasi, ijol-ijolan data, lan kerja sama kanggo nindakake tugas nampilake data lan antarmuka menyang pangguna.
Sapa sing Software Engineer?  Rekayasa Perangkat Lunak VS
Program kudu dirancang karo titik-titik ing pikiran! Pesen apa sing ditampa? Acara apa sing dipantau? Kepiye otentikasi lan wewenang kedadeyan? Tandha liyane sing padha penting kanggo program sing apik yaiku kejelasan kode, dudu jumlah tes sing wis dilewati aplikasi utawa jangkoan tes sing apik. Pitakonan sing katon prasaja: "Apa ana wong liya sing bisa ngerti kodeku?", "Apa aku bakal bisa nulis kode iki dina iki lan ngerti ing sawetara minggu?" Kutipan populer babagan rong perkara sing paling angel ing pemrograman:

"Ana mung rong perkara sing angel banget: cache invalidation lan jeneng entitas"

- Phil Carlton.

Keterbacaan kode luwih penting tinimbang sing umum dipercaya. Sayange, ora bisa nemtokake metrik utawa paramèter sing tepat kanggo kajelasan kode. Ngapalake norma-norma basa sing ditampa umum, model piranti lunak sing apik, lan metode pangembangan bakal mbantu sebagian. Nanging biasane iki ora cukup. Kanthi wektu lan pengalaman, profesional sejati berkembang, supaya bisa diucapake, "rasa kajelasan," soko sing padha karo intuisi. Metafora nulis bisa dianggo kanthi apik ing kene: ngerti akeh tembung ora bakal mbantu sampeyan nulis sing ringkes lan jelas.

"Aku bakal nulis luwih cendhek, nanging aku ora duwe wektu."

- Mark Twain.

Kemampuan kanggo ndandani kewan omo kanthi cepet lan gampang minangka fitur utama piranti lunak sing apik. Kesalahan ing program ngirim pesen sing jelas lan dicathet ing tengah kanggo dilacak. Nalika kesalahan anyar dilaporake, wong sing bakal ndandani kudu duwe kemampuan kanggo debug. Dheweke kudu gampang nyambung menyang sistem, ngakses informasi eksekusi sawayah-wayah, lan uga bisa kanthi gampang mriksa fungsi bagean saka sistem kasebut.

Lingkungan lan testing

Nalika insinyur piranti lunak ngembangake aplikasi, dheweke nindakake sing paling apik kanggo mesthekake yen bisa digunakake ing komputer kanthi arsitektur sing beda lan sistem operasi sing beda. Penting yen piranti lunak bisa digunakake ing resolusi lan orientasi layar sing beda, lan uga ora "mangan" memori lan daya pangolahan luwih akeh tinimbang sing dibutuhake.
Sapa sing Software Engineer?  Rekayasa Perangkat Lunak VS
Nalika nerangake aplikasi web, kudu bisa digunakake ing kabeh browser utama. Nalika nggawe aplikasi desktop, sampeyan kudu mesthekake yen diluncurake lan bisa digunakake kanthi bener ing Mac, Windows, lan Linux. Ya, program kasebut gumantung saka data, mula aplikasi kasebut kudu bisa digunakake sanajan ana sambungan data sing alon utawa ora ana. Kanggo nulis piranti lunak, insinyur mikirake kabeh pilihan skenario lan rencana kanggo nyoba. Kabeh diwiwiti kanthi milih pilihan sing cocog, sing kabeh bisa digunakake tanpa kesalahan. Dheweke banjur nyathet masalah potensial lan nulis menyang rencana tes. Sawetara insinyur miwiti kanthi nulis kode, sing diarani kasus tes, sing simulasi skenario kanggo kabeh kemungkinan masalah lan kesalahan. Banjur program ditulis sing bisa digunakake karo pilihan sing dianggep. Kemampuan unik insinyur piranti lunak sing duwe bakat ora ngerti carane nulis kode, nanging ngerti apa sing kudu ditindakake aplikasi kasebut minangka output lan cara entuk. Nalika syarat piranti lunak pelanggan ora lengkap lan bisa uga ambigu, insinyur kudu ngevaluasi lan "ngerti" kanthi bener.

Biaya lan efisiensi

Insinyur piranti lunak bisa ndandani masalah kasebut kanthi cepet ing pirang-pirang kasus. Yen sampeyan mikir nyewa programer berpengalaman sing "larang" bakal nambah biaya, pikirake maneh. Sing luwih berpengalaman programmer sing disewakake, luwih cepet dheweke bakal bisa nyedhiyakake solusi sing prasaja, rapi, dipercaya lan gampang digunakake. Ing jangka panjang, iki mesthi bakal nyuda biaya pangembangan piranti lunak.
Sapa sing Software Engineer?  Rekayasa Perangkat Lunak VS
Sampeyan uga perlu kanggo njupuk menyang akun biaya nglakokaké program. Program apa wae nggunakake sumber daya komputasi, lan ora gratis.
Tugas Software Engineer yaiku nulis kode efisien sing ora nggunakake sumber daya komputasi kanthi ora perlu.
Contone, cache data sing kerep diakses minangka salah sawijining strategi sing bisa digunakake kanggo entuk asil sing dikarepake. Nanging iki mung salah siji saka atusan alat lan solusi sing bisa nggawe program luwih cepet lan luwih efisien. Programmer anyar bisa uga menehi solusi sing murah, nanging nggunakake solusi kasebut pungkasane bakal biaya sampeyan lan klien luwih akeh tinimbang yen sampeyan kerja karo pangembang sing berpengalaman sing nggawe solusi efektif ing wiwitan.

Fokus ing pengalaman pangguna

Programmer sing apik berkembang kanthi ngelingi Pengalaman Pangguna (UX). Interaksi manungsa-mesin minangka topik kanthi riset lan solusi tanpa wates. Solusi sing luwih akeh ditrapake, luwih apik program kasebut bakal metu. Kene sawetara conto, mung kanggo menehi sampeyan aran apa arah iki:
  • Nalika ngrancang formulir entri data kayata e-mail, program sing apik kudu nglirwakake kasus alamat e-mail. Ora bakal nggawe kesalahan yen tombol CAPSLOCK dipencet amarga alamat email unik ing huruf cilik. Yen program nampa alamat email anyar minangka input, priksa ing awal proses input kanggo menehi tandha pangguna yen dheweke nggunakake format alamat sing salah. Solusi iki kalebu cek sing jelas kaya tandha "@" sing ilang, lan uga sing ora jelas, kayata mriksa urutan karakter sing salah kaya "gmail.ocm"

  • Nalika pangguna dialihake kanggo nindakake sawetara tumindak, program sing apik kudu ngelingi posisi saiki lan bali maneh sawise rampung. Program sing apik uga kudu ngelingi data sing wis dikirim dening pangguna, sing penting kanggo interaksi luwih lanjut karo dheweke.

    Contone, sampeyan lagi nggoleki lelungan udara minangka Tamu ing Expedia. Mengko sampeyan arep nggawe akun. Aplikasi kasebut kudu nyimpen kabeh telusuran sadurunge ing akun anyar lan sampeyan kudu bisa ngakses saka piranti liyane.


  • Sapa sing Software Engineer?  Rekayasa Perangkat Lunak VS
  • Program sing apik dirancang kanthi nimbang skenario prilaku pangguna. Sampeyan ora mung perlu nambah fitur-fitur anyar kanthi basis "dadi-dadi"; sijine dhewe ing sepatu pangguna. Sawijining dina aku lagi pesen tiket pesawat lan kelalen nulis nomer frequent flyer. Sawise nampa konfirmasi, aku mutusake menyang situs web maskapai lan nambahake kanggo entuk diskon. Kanggo mangerteni carane nindakake iki, Aku ngaco watara ing situs kanggo apik 10 menit. Aplikasi kasebut ora jelas, mula aku mung ngumbara ing macem-macem kaca situs kanggo nemokake apa sing dibutuhake. Mengko, aku nemokake yen aku wis ndharat ing kaca tengen kaping pirang-pirang, nanging aku ora ngerti, amarga lapangan sing dibutuhake wis ilang ing antarane lapangan sing padha karo wangun gedhe.

    Ternyata kanggo ngowahi informasi trip, aku kudu nggulung kira-kira rong puluh baris formulir, ketik nomer kertu kasetyan lan nomer telpon, tanpa formulir kasebut ora bisa dikirim kanggo verifikasi. Iki minangka conto program sing dikembangake tanpa mikir babagan kepenak pangguna.

Reliabilitas, keamanan lan safety

Ing mratelakake panemume, prabédan paling penting antarane pangembang piranti lunak profesional lan amatir njupuk menyang akun paramèter kayata linuwih, keamanan lan safety saka aplikasi nalika nggawe.
Profesional sejatine ngerti manawa dheweke tanggung jawab kanggo keamanan lan keamanan solusi kasebut.
Bagean saka program kudu toleran karo input sing salah, status sing salah, lan interaksi sing salah. Iki pancen angel banget dileksanakake lan dadi sebab utama kenapa kita krungu critane wong sing mati amarga bug piranti lunak. Pangguna wis mlebu, mlebu lan bakal terus nglebokake data sing salah menyang program kasebut. Iki kudu ditampa minangka kasunyatan. Kajaba iku, sawetara bakal nindakake iki kanthi sengaja, kanthi tujuan ngilangi aplikasi kasebut lan entuk sumber daya sing kasedhiya.
Sapa sing Software Engineer?  Rekayasa Perangkat Lunak VS
Iki minangka conto nyata: Wong sing diduga tanggung jawab kanggo nglanggar data Equifax anyar iki dituduh gagal ing tanggung jawab proyek, yaiku ngembangake solusi kanggo nolak input ala lan ala ing kabeh produk piranti lunak sing kasedhiya kanggo umum. Kedadean sing ana gandhengane karo keamanan informasi ora mung kalebu input sing salah lan ala, nanging uga data sing salah diketik. Yen pangguna wis lali tembung sandhi, kaping pira dheweke bisa nyoba ngetik? Apa sampeyan bakal ngalangi dheweke sawise iki? Kepiye yen ana wong liya sing nyoba mblokir akun kasebut? Apa pangguna bisa ngirim kredensial liwat saluran data sing ora dienkripsi? Apa yen panjalukan login teka saka lokasi sing ora biasa? Apa sing bakal ditindakake yen nyoba mlebu katon otomatis? Apa sing wis sampeyan lakoni kanggo nglindhungi pangguna saka skrip lintas-situs, pemalsuan panjalukan lintas-situs lan phishing umum? Apa sampeyan duwe strategi serep yen ana serangan DDoS ing server sampeyan? Pitakonan iki mung nyorot sawetara masalah sing kudu digatekake. Program sing dilindhungi ora nyimpen informasi penting ing wangun teks. Iki nglindhungi kanthi cipher siji-arah sing rumit (sing gampang dienkripsi nanging meh ora bisa didekripsi tanpa kunci). Iki minangka langkah serep yen program kasebut disusupi. Peretas bakal nemokake data sing dienkripsi sing ora ana gunane. Masalah sing ora dikarepke muncul sanajan ing program sing paling apik. Programmer sing ora siyap kanggo kedadeyan kasebut meh ora bisa diarani profesional. Nganti dheweke ngarepake tumindak sing ora dikarepake, dheweke dudu insinyur. Dheweke minangka "penulis program sing ora aman." Kesalahan ing program ora mesthi ketok. Kemampuan intelektual kita kanggo ngantisipasi lan nyegah kesalahan sing dikenal diwatesi. Iki sebabe insinyur piranti lunak ngerti pentinge alat sing apik supaya bisa nulis piranti lunak sing bener lan aman.

Piranti sing dibutuhake

Ora ana keraguan manawa kita butuh alat pangembangan sing beda lan apik. Peran kasebut asring disepelekake, nanging nyatane dheweke ngirit akeh wektu lan gaweyan, nyederhanakake sawetara tugas kanthi urutan gedhene. Mbayangno yen sampeyan isih kudu ngunggah file liwat FTP kanggo penyebaran, supaya bisa ngomong, cara lawas. Bayangake masalah jaringan lan kinerja debug tanpa Chrome DevTools! Lan carane ora efisien kanggo nulis kode JavaScript tanpa ESlit lan Prettier dina iki!
Sapa sing Software Engineer?  Rekayasa Perangkat Lunak VS
Alat apa wae sing nyuda wektu umpan balik nalika sampeyan nulis kode kudu disambut. Nalika aku nemokake alat sing sadurunge ora pati ngerti, nanging pancen migunani lan efektif, aku mung bisa nyesel yen aku ora nggunakake sadurunge wayahe seneng.
Piranti sing luwih apik lan modern bakal mbantu sampeyan dadi programmer sing luwih apik. Temokake, gunakake, apresiasi, lan yen bisa, tambahake. Lan aja nganti digantung ing bab sing padha: sapa ngerti, bisa uga nganggo alat anyar sampeyan bakal nglampahi wektu nginstal lan sinau sapisan, banjur sampeyan bakal ngatasi masalah kaping pirang-pirang luwih cepet?

Evolusi rekayasa piranti lunak

Ora ana sing bisa sinau teknik piranti lunak sajrone rong wulan, nem wulan, utawa malah setaun. Sampeyan ora bakal diajari carane dadi insinyur piranti lunak ing kursus, universitas, utawa boot camp. Aku wis sinau suwene rong puluh taun kepungkur lan terus sinau saiki. Aku bisa kanthi gampang nyebut dhewe minangka programmer sing berpengalaman mung sawise sepuluh taun sinau lan ngembangake, nggawe lan njaga aplikasi sing digunakake dening ewu pangguna. Rekayasa piranti lunak ora kanggo kabeh wong, nanging kabeh wong kudu sinau ngatasi masalah nggunakake komputer. Yen sampeyan bisa sinau nulis program prasaja, sampeyan kudu. Yen sampeyan bisa sinau nggunakake piranti lunak sing kasedhiya kanggo umum, sampeyan kudu. Yen sampeyan bisa sinau nggunakake piranti lunak open source lan ngatur dhewe, sampeyan duwe superpower! Saben dina nggawa pangembang tantangan anyar, masalah anyar, mulane rekayasa piranti lunak dibutuhake. Tugas utama profesi iki yaiku nggawe piranti lunak supaya wong biasa ora kudu ngatasi nganti pirang-pirang taun. Supaya ora perlu sinau dawa kanggo interaksi karo program. Nanging, insinyur piranti lunak terus-terusan mikir babagan nggawe alat sing luwih apik sing bisa ngatasi masalah sing luwih rumit, lan nindakake kabeh kanggo mesthekake yen masalah anyar katon arang banget.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION