İstemsiz bir programcı olmak: nasıl doğru yapmalı? [kapalı]


21

Geçmişim elektrik mühendisliği, DSP daha kesin. Şu anda üzerinde çalıştığım şirket, çoğunlukla analog donanımlar üreten çok çeşitli projeler yapıyor. Buradaki bilgisayarlardan herkesten biraz daha yakın olmak, çoğu zaman hem gömülü aygıtlar (mükemmel şekilde iyi durumdayım) hem de Windows veya Linux işletim sistemi için tek bir kod yazarım. İkincisi, benim için yabancı bölgedir.

Kodlayabilirim ve birkaç dil biliyorum (C / C ++, Java, bazı VB.NET), ancak bunları yalnızca sinyal ve görüntü işleme, sinir ağları ve diğer benzer uygulamalardaki algoritma simülasyonları için kullandım. Benim için programlama, her şeyden çok, hesaplamalı bir araç olmuştur. Bununla birlikte, tam teşekküllü bir yazılım yazmak zorunda kaldığım ve giderek daha fazla proje alıyorum ve bunu nasıl yapacağımı gerçekten bilmiyorum, çünkü hiçbir zaman yapmak zorunda kalmadım ve hiçbir zaman yeterince ilgilenmedim. İş talepleri nedeniyle kodlayıcılara belli bir dereceye kadar dönüşen birkaç mühendis gördüm ve çoğu da yaptıkları işte o kadar iyi değildi. Eminim birçok insan aynı şekilde karşılaştı.

İyi bir kullanıcı arayüzü, iyi bir iç mimarlık ve benzeri konularla uygun bir yazılım yazmayı öğrenirsem, nasıl yaparım? Neyin işe yaradığını ve neyin iyi olmadığını bana söyleyebilecek hiç kimsemiz yok. Yazabilirim göz önüne alındığında kod , kelimenin rawest anlamda başka ne iyi yazılım yazma konusunda bilinmesi gereken ve ben kendi başıma oraya nasıl?


Verdiğiniz dili bize kullandığınızı söylerseniz, size daha ayrıntılı cevaplar verebiliriz. Sonra tekrar, bu genel bir cevabın noktasını reddeder.
Sardathrion - Monica’ya

2
Örgün eğitim veya bir danışmanla doğrudan iş deneyimi olmadan, o zaman doğru yolu yapmak işlerin gerçekçi olmaz. Öğreniyorsun. Bilgisayar bilimi ve mühendisliğinin elektrik mühendisliğinden ayrılmasının bir nedeni var. Aklı başında bir şirket, yazılım mühendislerini işe uygulama arayüzleri, uygulama sürücüleri ve hatta ürün yazılımı yazmak için işe alacak, çünkü kaliteyi istiyorlar ve doğru yapılmasını istiyorlar ve bakımlarını yapıyorlar. Patronunuza yaptığınız şeyin uzmanlık alanınızın biraz ötesinde olduğunu ve bu görevlerin bir yazılım mühendisine en iyi şekilde bırakılması gerektiğini açıklardım.
maple_shaft

4
... Ben de sizin durumunuzun, başlıkta belirtildiği gibi “istemsiz” olduğunu düşünmediğimi eklemek istiyorum. Kendine, meslektaşlarının bilgisayar kullanmayı bile bilmediğini söyledin, yine de istemsiz bir yazılım mühendisi olmak zorundasın. Bu pek adil gözükmüyor. Faydalı bir yazılım yazma yeteneğinizi ve doğru şeyler öğrenme ve yapma arzunuzu, ancak patronunuza ve kendinize bazı şeylerin sizin kapasitenizde olmadığını kabul etmenin utanç verici olmadığını takdir ediyorum. Sizi bu role yerleştirme konusunda ciddi iseler, sizin için eğitim için harcamalarını isteyin.
maple_shaft

@maple_shaft Söylediğiniz çoğu şeye katılıyorum; ancak, akranlarımın bir bilgisayarı nasıl kullanacaklarını kullanmadıklarını asla söylemedim. Hiçbiri beni kanepeye çekebilecek bir yazılım mühendisi değil, ama hepsi bilgisayar uzmanı. Kodlama yapmakla ilgili bir sorunum yok, yeni şeyler öğrenmekten hoşlanıyorum ve bunu yapmakta gerçekten bir sorunum yok.
Phonon

6
@Phonon Harika, bu iyi bir tutum, ancak şirketinizin size kitaplar, eğitim kursları aldığından ve bu rolü oynamanızı isterlerse öğrenmeniz için zaman verdiğinden emin olun. Tüm söylediğim bu. Pek çok şirket, sizi bu şeyleri satın almanın sizin sorumluluğunuzda olduğuna ikna ederek sizi aldatmaya çalışacaktır.
maple_shaft

Yanıtlar:


11

Size çok yardımcı olacak birkaç kitap var. Her zaman yanında kod tamamlandı öneriyoruz . Bu paha biçilmez bir referans. Çalıştığım önceki bir şirkette aynı zamanda her genç programcıya işe alındıktan sonra verdiğimiz kitaptı.

Pragmatik Programcı da gerçekten faydalı bir kaynaktır ve oldukça kısadır, ancak Kod Tamamlandıktan sonra okumanızı öneririm.

Bu kitaplar sizi daha sonra başlatacak, daha sonra kod, kod, kod ve kod daha fazla ...


6

Şirketim bunu sürekli yapıyor ... ve beni delirtiyor.

"Yazılım geliştiricisiyim, nasıl bir EE olabilirim?"

Bence cevabı oldukça açık. Çok zaman alıyor ve çok çalışıyor. Ve tabii ki, doğru öğrenme materyalleri. Mühendislik geçmişi, üniversitemde CS ve mühendislik okullarının bir sürü örtüşme ile aynı binada olmasına yardımcı oluyor. Algoritmalar ve matematik temelleri var.

Yeni gelenlerin çoğunun yaptığı bir hata, çiğneyebildiklerinden daha fazla ısırmak. Arayüzdeki materyalleri öğrenme, mimariler, kalite kodu ... çok önemli . Yıllar süren ve çoğu zaman yazılım şirketlerinde farklı uzman ekipleri tarafından yapılan bir şey.

Zamanında koyarsanız, kendi başınıza yeterince iyi olamayacağınızı söylememek. Sadece malzemelerin büyüklüğünün farkına varın, böylece hem kendinizi hem de A'yı boğmazsınız . boğulmazsınız Çıkın ya da B. Öğrenme sürecinizde büyük kısayollar alarak uygulamalarınıza büyük teknik borç oluşturun.

Bütün bu sebeplerden ötürü, "hepsini yakala" diye bir şey yok. En çok kullandığınız dil hakkında iyi puan alan bir kitap alıp, özellikle de kod incelemeleri için Stack topluluğuna katılarak başlamanızı öneririm.

Amazon.com'u deneyin, iyi kitap incelemeleri var.


3

Kitaplar : Ana şey, seçtiğiniz dilde (iyi) kitaplar okumaktır. Tercih ettiğiniz dili öğrendikten sonra, " Daha Etkili X" veya "Y en iyi Uygulamalar" vb. Yemek kitaplarını, sahip olabileceğin boşlukları doldurmakta çok iyi buluyorum. Sanırım, almanız gereken en az üç kitap var. Bir şey: dil anlayışınızı geliştirmek için alıştırmalar yapın ve kata kodlayın. Tabii ki, iyi bir xUnit şablonuna ihtiyacınız var .

Algoritmalar özel bir önem taşır ve onları kendi dilinizde yeniden ayrıntılandıran bir kitap seçmelisiniz. Tasarım Desenleri ve Anti-Patterns , herhangi bir dilde ne olursa olsun bilmeye değer.

Alt satır: zaman alır. Acele etme.


+1, fakat daima farkında olun, yalnızca bir kuralın istisnaları olmadığına dikkat edin: tüm kuralların istisnaları vardır.
Jan Hudec

@JanHudec: Burada hangisini aklınızda tuttunuz?
Sardathrion - Monica, 10:11

3

Kodlamayı emiyorsun. Evet.

Ancak - bu yazılımı teslim edemeyeceğiniz anlamına gelmez, bu insanları mutlu eder;)

Mütevazı olmak. Yaz "iş" olduğunu, mantığı size ihtiyacımız var. Her şey için kütüphane kodunu kullanın. Temel algoritmalar yazmayı denemeyin ( dizi sıralama gibi ), herhangi bir "fantezi numarası" kullanmayın, bazı draconian kod kurallarına sadık kalın .

İyi IDE kullanın. Bu çok önemlidir, çünkü kodunuzu biçimlendirmenize ve yazım hatalarını / basit hataları izlemenize yardımcı olur.

" Kod Tamamlandı " ve " Pragmatik Programlayıcı " gibi kitaplar okuyun , kendinizi zorlamaya çalışın ve OOP'yi öğrenin (basit ve kodunuzu daha iyi durumda tutmanıza yardımcı olacaktır).

SVN kullanın , sık sık işlem yapın - böylece değişikliklerinizi geri alabileceksiniz (bir şeyi mahvedeceğiniz zaman).

Gerçek bir programcı olan birini bulunMümkünse, akademik bir geçmişi olan . Böylece onunla acemilikle ilgili problemlerinizi paylaşarak ve aydınlatıcı cevaplar alarak konuşabileceksiniz.

Ve elbette en önemli şey kodlamayı, kodlamayı ve kodlamayı sürdürmektir .


ps: İşe yarayan C ++ kodunu yazabiliyorsanız ve sinir ağları yazıyorsanız (!) - o zaman beyniniz programlama için çok uygundur;) İyi şanslar!


2

Burada iyi cevaplar var.

Lehinize büyük bir dönüş bilmek istediğiniz basit bir gerçektir.

Elbette, yazılım mühendisliğinin (elbette sağlıklı şüphecilikle almanız gereken) çoğu, pişman olmayacağınız şekilde nasıl yapılacağıyla ilgilidir. Bir örnek, bir kaynak kod sürüm kontrol sisteminin kullanılmasıdır. Bir diğeri kodu dosyalara bölmektir, böylece parça parça üzerinde çalışmak daha kolaydır. Bir diğeri ise düzenlilik - kod biçimlendirme ve adlandırma kurallarına ilişkin bir bağlayıcı olmaktır . Kesin sözleşmeler, bu konuda tutarlı olmak kadar önemli değil.

Bu şekilde, bir yıl veya daha fazla bir süre içerisinde koda geri döndüğünüzde, "Bu karışıklığı kim yaptı?" Diye düşünmezsiniz. Çok fazla kırılma riski olmadan bir şeyleri bulabilecek ve onları değiştirebileceksiniz. **

Başlamak için iyi bir yol, çeşitli örnek programlar bulmak ve bunların üzerinde çalışmaktır. O zaman onları ihtiyaçlarınıza göre uyarlayabilirsiniz.

** En büyük baş ağrılarımdan biri, biçimlendirme ya da isimlendirmeyi düşünmeyen insanlar tarafından yazılan kodla çalışmaya çalışıyor.


1

İşlerin nasıl yapılıp ne yapılmadığına dair pek çok iyi kaynak varken, en önemlisi, çok fazla kod görmek ve onunla çalışmak ve kendiniz için korumanın ne kadar kolay ya da karmaşık olduğunu görmek.

Öğrenmenin iyi bir yolu, ilk tasarımı yapmak için deneyimli bir kişiye sahip olmak ve kodunuzu gözden geçirmekten ve size kullandıkça size yararlı teknikleri göstermektir. Bu nedenle, herhangi bir şansınız varsa, patronlarınızı, öncü (küçük) yazılım projelerinde ve projelere öncülük etmesi için yazılım tasarlamada tecrübesi olan en az bir yazılım mühendisini işe almaya ikna ederseniz, bunun en iyi seçenek olacağını düşünüyorum.

Eğer kimsenin sizi yönlendirmesini sağlayamazsanız, bugünlerde güçlü bir açık kaynak hareketi var. Belki işinizde açık kaynak kodlu bazı araçlar kullanıyorsunuzdur, bu yüzden bunlardaki hataları düzeltmeye çalışın veya kullandığınız basit özellikleri eklemeye ve bu şeyleri ilgili toplulukla nasıl yapacağınızı tartışmaya çalışın. Gerçek pratik problemler üzerine kitaplarda bulacağınız genel kuralları nasıl uygulayacağınızı öğrenmek, uygulamalı öğrenme alıştırmasıdır.


0

Kalite kodlaması ve mimari kaygılarını öğrenmek için gerçekten önereceğim bir şey "Bob Amca" nın (Robert Martin) öğretileri olacaktı. İyi ısırık büyüklüğünde, belki de aşırı derecede kaprisli ve bazı iyi kitaplara sahip 1 dolarlık videoları var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.