Kodlama sıkıntı hissetmeye başladığında ne yapmalı, sanki hepsi aynı. [kapalı]


33

Commodore 64'te 6 yaşında programlama yapmaya başladım. Şimdi 28 yaşındayım ve Bilgisayar Bilimi dalında birinci sınıftan 4 tane ders almak zorundayım.

Bunca yıldan sonra yazma kodundan sıkılmaya başladım. Bilgisayar Bilimi alanında teorik bilgisayar dilleri ve ağ güvenliği alanında 10 yıllık C sistemi kodlama dersi aldım ve kod yazmaktan herhangi bir uyarı alamadım.

C, C ++, Python veya istediğiniz herhangi bir dilde kod yazabilirim, fakat yaptığım şey hakkında heyecanlanamıyorum. Herhangi bir zorluk hissedemiyorum. Çok iş parçacıklı kod, HTTPS MITM proxy ve herhangi bir özel algoritma becerisine ihtiyaç duymadan bir WSGI uygulaması yazdım.

Tüm bu yeni şeylerin aynı olduğunu hissediyorum, içinde daha basit (veya daha fazla) soyutlamalar veya otomasyon var, ama hepsi bana aynı geliyor. Tekrar tekrar. Hesaplanabilir dil tüm Turing hesaplanabilir, bu yüzden kodlama, kısmi bir işlevin bu alt kümesinde yalnızca benzer bir desen replikasyonudur.

Günlük işlerimde hata aramaktan, ya da kod üzerinde kıyaslama yapmaktan ya da sorunu X, Y, Z kütüphanesiyle düzeltmekten bile sıkıldım.

Ben çok meraklı bir insanım. Her zaman bir şey tarafından teşvik edilirim. Ama harika koda baktığımda bile yapamam. İşlerin nasıl yürüdüğü konusunda kendimi daha rahat hissediyorum.

Kariyerimde ilerleme kaydetme zamanı geldi mi? Veya Computer Science'ta daha zorlayıcı şeyler edinmek için mi? Belki de CS’de yüksek lisans derecesi olabilir mi?

"Peopleware" proje yönetimi konusundaki ilk kitabımı okumaya başladım ve yazılım geliştirme yaşam döngüsü ile daha fazla ilgilenmeye başladım. Ne yapmayı önerirsin?

Belki bazı arkadaşlarımın yaptığı gibi Google’a ya da Microsoft’a ya da Apple’a girmeye çalışıyorum. Veya belki de daha yönetimsel bir kariyer yolu. Ayrıca beni yönetime girme ihtimaline hazırlamak için iletişim kuralları ve "insan kişiliği" hakkında iyi bir kitap bulmaya çalıştım.

Baska öneri?

Not: Çok fazla ilgim var, depresyonda değilim :) Dağa, trekkinge, fotoğraf çekmeye ve spor tırmanmaya bayılıyorum, genel olarak yüzmeyi ve spor yapmayı seviyorum, bazen koşuyorum, aslında AC'den bugüne ülkem (İtalya) hikayesi hakkında kitap okuyorum ve gezileri çok seviyorum (bu yaz İspanya'da çok fazla yer görmek ve bir maratona gitmek için 4000 km. , 24 km yürüyüş fıtığı yaralanmamı sağladı), genel olarak tiyatro ve hayatı severim.


Herkese teşekkürler, bütün cevapları düşünmek bana yolumu daha net hale getirme fırsatı verdi.

Özet olarak, en çok oy alan cevabı genelleştirebiliriz.

Her şeyden önce, insanlar çalışmalarımızı yaşamınızı destekleme zorunluluğuna ve hayatta kalmanın tek sebebi değil (bu benim durumum değil), yani eğer çalışıyorsanız sadece yaşam sebebi iseniz oy kullanmaktadırlar. Gerçekten depresif bir duruma. Ev eşyalarının dediği gibi, Viyana sizi beklemiyor :)

Bu hatırlatıcıdan sonra insanlar şunları önerir:

  • teknik karmaşıklığı arttırmak Aslında, mücadeleyi artırmak ve bu konuda daha az sıkılmak için çalışıyorum.
  • Uzmanlık alanını, yönetici olmaya çalışan ya da işinizle ilgili teknik olmayan alanlarda biraz daha dikkatli hale getirmeye çalışan teknik olmayan bir alana dönüştürün.
  • uzmanlık alanını başka tür bir teknik zorlukta değiştirmek, sistem programcısı mısınız? İnsanlara yönelik uygulama geliştirme konusunda daha az sıkılmaya çalışın, böylece faydalı yazılımınızı kullanarak insanları daha rahat görünebilirsiniz
  • bilgisayar bilimlerinizde akademik yolunuzda biraz ilerleme yapmak

Amacım, bilgisayar biliminde doğru cevabı ilerletmektir, çünkü benim programlamanın, elde etmenin tek bilgisayar bilimi yolu olmadığını düşünüyorum ve bilgisayar bilimlerinde yazılım mühendisliği bakıcısından farklı bir yol bulmanın daha iyi olabileceğini düşünüyorum.


10
Bu gerçekten moral bozucu. Neden yönetici olmak istiyorsun?

14
Maalesef sizin için ve zor gibi görünse de, yöneticilerin nasıl etkili bir şekilde iletişim kuracaklarını anlamaları gerekiyor. Yukarıda yazdıklarınız son derece net değil ve zar zor anlaşılır. Yönetime kariyer değişikliği yapmayı planlıyorsanız, her şeyden önce iletişim becerileriniz üzerinde çalışırdım. Durumun için üzgünüm.
George

9
@George: Sanırım (ama emin değilim) bu ana dili olarak İngilizce bilmeyen / yazamayan biri tarafından yazılmış.
SinirliFormsDesigner'la

2
Bu konuyla ilgili eğlenceli bir metafor için metaprogramlamanın ne işe yaradığını görün (her şeyi aynı şeyi yapıyor).

2
@ George: ders dışı, İngilizce benim ilk dilim değil. İngilizcemi geliştirmek ve kodlama konusundaki hayal kırıklığımı açıklamak için bazı düzenlemeler yapmaya başladım.
19:11

Yanıtlar:


50

Bunun olması gerekiyordu.

Öncelikli ilgi alanınız kodda yatıyorsa, sizi bir süre kalıcı olarak çıldırmış, sinirli ve depresyona sokacaktır.

Ürün geliştirmekle ilgilenin ve insanların onları kullandıklarını görün. Kod yazmanın nihai amacı bu değil mi? Kod sadece daha büyük bir şey yapmak için bir araçtır.


İlk ilgi alanım sadece kodlama değil, bir sporcuyum, tiyatroya gitmeyi, seyahate çıkmayı ve yeni bir yer görmeyi seviyorum, her yıl 2/3 Avrupa şehri ve yaz tatilimde 4000km. Mesele bu değil. Kodlamanın geri dönüşü olmayan bir noktaya geldiğimi düşünüyorum. işimdeki bütün problemler üstesinden gelmek o kadar zor değil ve daha fazla zorluk alamıyorum. Bence doğru cevap, işi değiştirmek ve daha karmaşık bir problemde daha fazla zorluk çekmektir. Aslında ben zaten bir araştırma ve geliştirme bölümünde yaşıyorum.
Boos


2
+1 Amaçsız kodlamanın ne yararı var? Bir ev yerine bir duvar inşa etmeye benzer.
Mayank

+1 Kodlamaya başladım ve bugüne kadar (10 yıldan fazla) sadece oyun yapmak ve insanların zevk aldıklarını görmek için devam ettim. Sonunda hiçbir şey bilmediğimi anlamaya başladığım, gerçekten zor dönemlerde bulundum. O andan itibaren her şeyi yeniden öğrendim, çünkü yine de insanlar için oyunlar yapmak istedim.
Klaim

Bu kesinlikle benim için çalıştı. Geçenlerde karımın firması için küçük bir bedava geliştirme işi yaptım ve yazılımı desteklerken kıçımda biraz acı çekiyordu, kodlamada bir süredir hissetmediğim bir keyfe vardım.
hermiod

21

Sorunuza bir soru ile cevaplayacağım ...

Bir programcının işi kodlamak veya problem çözmek mi?

Sıkıldığını söylüyorsun, çünkü kod yazmak daha önce yapmış olduğun bir şeye benziyor, her kod parçasını daha önce yapmış gibi.

Peki bu kodun yazılması gereken kod olduğu sonucuna nasıl geldiniz ? Çoğu problemin bunu çözmek için yüzlerce yolu vardır, fakat sadece en iyi yol var.

Gerçekten bir zorluk, merak ya da çözüm bulma ya da problem çözme konusundaki ilginizi bulamazsanız, gerçekten bir değişimden kaynaklanıyorsunuz. Buna rağmen yazılım geliştirme yönetimi olacağından emin değilim. Problem çözme konusundaki bu kadar ilgisizliği hisseden bir yazılım yöneticisi için çalışmak istemem. Muhtemelen, farklı problemlerle farklı bir endüstri olmalı.

Problem çözmeyi seviyorsanız, ancak kodlamayı sevmiyorsanız, belki çözecek kadar problem bulamıyorsunuzdur. Ne zaman işim sıkıcı hissetmeye başlarsa çözülecek bir sorun olduğuna inanıyorum. Neden yoğun iş yapıyorum? Yoğun işi işimden kaldıracak ne tür bir çözüm bulabilirim? Programlamanın güzelliği budur.


1
@Rnesis: Problem çözmeyi seviyorum, kodlamayı sevmeyi bıraktım! bu benim "sorum" kalbidir. Tüm programların problemi her zaman aynı şeylerdir, bir şeyler arayın, başka bir tane sipariş edin, eğer başkaları için bir DB'ye bağlanırsa, uzaktaki bir servisle bağlantı kurarsa, onunla iletişim kurarsa, başka bir servisle bağlantı kurarsanız, vs
boos

1
@boos - Yanıtınız için teşekkürler, "sorun çözmeyi seviyorsanız" için bir paragraf ekledi.
Nicole

9

Bana öyle geliyor ki, bir sürü prosedürel programlama yaptınız ve bundan yoruldum - ki bunu tamamen anlıyorum. Adım adım belirtme olduğunu hemen her prosedürel dilde aynı.

Oldukça fazla çalışmayan aktiviteniz var gibi göründüğü için, şu anda bildiklerinize benzemeyen bazı kavramları öğrenmenizi öneririm ve - evet - çokça var, ama başlamak için Haskell'i tavsiye ederim çünkü

  • işlevsel - sonunda bir programla sonuçlanan daha büyük işlevleri yapmak için bir araya getirdiğiniz işlevleri yazarsınız.
  • yavaş değerlendirme - yerine adım adım belirleme, çalışma zamanı çeker gerektiğinde gerekli değerleri. Bu, programlarınızda sonsuz listelerle uğraşmanın çok yaygın olduğu anlamına gelir.
  • kalıp eşleştirme - eğer büyük yapılar varsa, parametrelerin neye benzediğine ilişkin kalıpları listeler ve çalışma zamanı uygun kalıbı seçer ve karşılık gelen kodu çalıştırır.

İşte tam bir sıralama işlevi:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

( Bir açıklama için bkz. Http://www.haskell.org/haskellwiki/Giriş#Ease_of_understanding )

Bunlardan herhangi biri sizin için yeniyse, maceraya başlamanızı tavsiye ederim.

İyi şanslar, iyi eğlenceler.


+1 Bu, OP'yi okuduktan sonra geldiğim aynı sonuç. OP'nin prosedürden uzaklaşması gerekiyor. Programlama dünyası çok daha büyük, sadece dışarı çıkıp keşfetmesi gerekiyor! :)
Darknight

8

Bilgisayarlar tüketicileri sıkıyor. Makineyi bütün gün makine etkileşimlerine kodladığınızda, makine her zaman aynı şekilde tepki verir. Projenin yapılması iyi, ancak bir süre sonra sıkıcı. Bu, doğrudan makineyle ilgili olmayan bir şeyle monotonluğun parçalanmasına gerçekten yardımcı oluyor.

Hem fotoğrafçılıktan hem de kullanıcı deneyimini çalışmaktan ilham aldım. Bir düşünün, Apple, diğer satıcılar sıcak bir tepki verdiğinde Santa Clara'dan çıkacak bir sonraki şey için kendilerine saldıran insanların sesini nasıl alabilir? Apple, Verizon'da iPhone'u serbest bırakmak için çok uzun süre direnmediyse, Android'in bu kadar büyük bir yanıt alacağını düşünüyor musunuz? Size büyük bir ipucu vereyim: bu ürünlerin teknik olarak gelişmiş olması gerekmez. Çılgınlığın psikolojik bir bileşeni var.

Ürün tasarımını ve kullanıcı deneyimini anlamak, çoğumuzun öğrenmesi gereken çok şey var. Birini tıkatan ne? İnsanların yerleşik çözümü terk etmelerini sağlayacak kadar havalı bir şeyi nasıl tasarlarsınız? Apple gibi kendi teknoloji kültünüzü nasıl yaratırsınız (sizin bir kült lider zihni olmayı istemiyorum)? Bunların hepsi çok ilginç ve teşvik edici sorular. Yazılım geliştirmeye geri dönüyorlar - ama şimdi odak noktanız farklı.


1
+1 Programlamada büyük memnuniyet duyuyorum ve tasarım yönünden dolayı hoşuma gittiğini düşünüyorum, ancak programlamanın görsel olarak eksikliğini kabul etmiyorum, beni tamamiyle tamamlamıyor. Ben de fotoğrafçılığa bayılıyorum ve grafik veya mimari gibi başka tasarım türlerini de denemeye çalışıyorum.
Nicole

Oyun programlamayı deneyin: D, çoğunlukla görsel problemler var
Dominique McDonnell

7

Muhtemelen, yeterli teknik zorluk çekmiyor musunuz?

  • Yüksek oranda dağınık sistemleri deneyin. Mikrosaniye hassasiyetle bir kümedeki 1000 bilgisayardan günlük toplamak için bir sistemi kolayca kodlayabilir misiniz?
  • Zor zamanları dene. Tüm işlemlerinizi bir motorun bir dönüşünde toplayın.
  • Bilgisayarla görmeyi veya görüntü işlemeyi deneyin. Matematik becerileri, formül kodlama becerileri, optimizasyon becerileri hepsi kullanışlı.
  • AI'yi dene. IBM'in bilgisayarında Jeopardy nasıl oynanıyor? Muhtemelen bu alanda bazı algoritmik karmaşıklıklar söz konusudur.

Vb Tabii ki, başlangıçta sıkıcı değil, sizin için zorlu bir alanda daha az kazanmaya hazır olun.


4

"Doğru" bir çözümü olmayan bir alana taşınarak motivasyon buldum, editoryal araçlar yazıyorum ve çalışmam kullanıcılar için faydalı bulduğu kadar iyi. Teknik olmayan birçok insanla tanışıyorum ve birlikte çalışmak için ihtiyaç duydukları yazılımı geliştirmenin yollarını aramaya çalışıyoruz, insan etkileşimi buluyorum ve bakış açılarını sürekli olarak değiştirmem gerekiyor ve aniden kodlama artık çok sıkıcı.

Yine de herkes için olmadığını biliyorum, bazıları çalışmanızın kalitesini diğerlerinden daha zor objektif bir ölçüye sahip olma güvensizliği ile başa çıkıyor.

Ancak dikkate değer olabilecek bir seçenek.


4

Evet, bazen birisinin gerçekte aynı tür kodları tekrar tekrar yazdığını hissediyorum. Ama hayır, ondan henüz sıkılmadım. Neden?

Çünkü temel olarak kodlamada yeni kodlama yöntemleri ve yeni, özlü, zarif ifade etmenin yollarını keşfetmekten zevk alıyorum. Bunun nasıl yapılacağının iki yolu vardır: Yeni programlama dilleri öğrenmek veya yeni kütüphaneler veya çerçeveler öğrenmek.

Yeni bir programlama dili öğrenmek denedim her dilde benim için daha kolay oldu. Ve bir süre sonra, çok ilginç olmaktan çıktı. Ancak, yaklaşık bir veya iki yıl önce, nihayet, bir programlama paradigması OOP'tan yeni bir meydan okuma olacak kadar farklı olan fonksiyonel programlamaya başladım. Bunun programlama yeteneklerimi gerçekten zenginleştirdiğini ve bana bir programlama problemine bakabileceğim yeni bir bakış açısı sunduğunu hissediyorum. Şimdi sadece farklı programlama dilleri yerine farklı programlama paradigmalarını keşfetmeye çalışıyorum. Bu daha büyük bir meydan okuma.

İkincisi, yeni bir kütüphane, çerçeve veya API öğrenmek: Doğru söylediğiniz gibi, yeni çerçeveler çoğu zaman yeni sorunları çözmez; sadece farklı bir şekilde çözerler, örneğin ek bir soyutlama katmanı ekleyerek. Bu belki de mümkün çünkü bugünün bilgisayarları önceki makinelerden daha güçlü; veya belki de, çünkü bir bütün olarak yazılım yazma konusunda daha iyi oluyoruz.

Bu son bit muhtemelen biraz açıklama gerektiriyor. Bir örnek vereceğim: Uzun zamandır, programlama becerilerimi uygularken, yazdığım kodun bakımı için gerçekten ciddi bir düşünce vermedim. Bir işte programlama yapmaya başladığımdan beri bakış açım değişti. Korunabilir kod yazmak bir şirket ortamında genellikle çok önemlidir, çünkü kodlama için harcadığınız her saat gerçek paraya mal olur, bu nedenle bir şirket mümkünse mevcut yasaya uymaya çalışır ve olasılıkla geçmesi gerekenler Bir halef kodunuz.

Bakım yapılabilir kod yazmanın aslında büyük bir zorluk olduğunu biliyorum. Çoğu zaman zeki ve son derece optimize edilmiş montaj kodu yazmayacağınız anlamına gelir (Mel'in Hikayesi - Gerçek Bir Programcı , kimseyi hatırlamıyor musunuz? ;-) Bunun yerine, soyutlamanın avantajlarından daha fazla yararlanabilirsiniz. Kodunuzu bazı iş kurallarına ve sorunlu alana ne kadar yaklaştırırsanız, o kadar iyidir. İşte tüm bu yeni kütüphanelerin girdiği yer. Kodunuzu yazmanıza izin veriyorlarsa, temiz, açık, özlü ve anlaşılması kolay, o zaman bu iyi bir şey.

Üzgünüm bu cevap biraz uzunsa. Programlamadaki motivasyonumun nereden geldiğini göstermeye çalıştım ... ve bir zamanlar aynı şekilde hissettiğinizi ve sonunda neden motivasyonunuzun bırakıp bırakmadığını (ve neden) bilmek isterim.


tüm diller ve tüm paradigmalar ve genel bir şekilde "Turing Makinesi" ne hatırlatılabilir ki, yeni bir dil öğrenirseniz yeni bir çerçeve, tüm hesaplamalar bir turing makinesi ile yapılabilir, bu yüzden kodlama konusunda daha fazla heyecanlanamam. Temiz kod yazmayı seviyorum ve bazen meslektaşımla şaka yapmak için çok garip bir kod pasajı yazmayı seviyorum.
Boos

1
+1 Ben de böyle hissediyorum. Sanırım kişisel favorim yeni bir şey yapmak değil, mümkün olan en iyi şekilde yapmak. Alabileceğim en iyi iltifat, "Kodunu okudum ve mükemmel anladım." Kimsenin daha iyisini yapmak için bir şey düşünemediği kod incelemelerini seviyorum.
Michael K

@boos, teoriden hoşlanıyorsanız, o zaman cs / matem / fizik bölümünden kaybedeceğiniz binlerce konu vardır.
Job

3

Kod yazmaktan bıktıysanız, sizi heyecanlandırmazsa, sizi sıkarsa bir değişiklik zamanı gelebilir. Bir yönetim pozisyonuna geçmeyi düşünebilir ve yılların tecrübesine göre diğer kodlayıcıları yönetebilir ve yönlendirebilirsiniz. Ya da sistemleri ve diğer insanların uygulamanın çoğunu yapacağını planlayabileceğiniz ve planlayabileceğiniz sistem mimarisine doğru kaydırmaya çalışın.

Ya da kariyerleri tamamen, bilgisayarlarla kesinlikle ilgisi olmayan bir şeye çevirebilirsin. Birisi size verebilirse kendinize hayalinizdeki işin ne olacağını sordunuz mu?


3

Mikrodenetleyicilerle oynamaya başlayın. Düşünebildiğim programlama yeteneğinin en canlandırıcı ve heyecan verici uygulaması.


2

Arka planımızın başlangıç ​​noktaları, benzer makinelerde hem 6 yaş hakkında programlamaya başladığımız hem de çeşitli nedenlerle programlamanın içinde ve dışında olacağımıza benziyor. Derecelerimin hiçbirinin programlama ile ilgisi yok - tüm müzik derecelerim var - ancak bazı yüksek lisans düzeyinde bilgisayar bilimleri dersleri aldım.

Haklısınız, bence programcılar sık ​​sık aynı problemleri tekrar tekrar çözüyor ve “yeni” nin “eski” ye dayandığını gözlemliyorsunuz. Bu gerçeği idrak etmen senin kredin için; Çok sayıda geliştirici ve iş adamı, yeni teknolojileri eski teknolojilerden tamamen kopuk olarak görüyor.

Bu yüzden, bu tür problemleri çözmek senin için ilginç değil. Ne ilginç olurdu? Genel olarak problem çözmeyi sever misiniz? Belki bir "iş" yazılımı geliştiricisi olarak bir hayat sizin için değil.

Cevaplardan daha fazla soru verdiğimi biliyorum, ancak umarım bu soruları yanıtlamanın almanız gereken yönle ilgili bazı bilgiler sağlayacaktır.


2

Bana sıkışmış gibi geliyor. İçinde olmak istemediğin bir durumdasın ve ondan nasıl çıkacağını bilmiyorsun. Tavsiyem basittir: sadece farklı şeyler yapmak için farklı bir şeyler yapın. Sorununuzu çözmese bile, muhtemelen sizi sıkıştıracaktır.

C, C ++, Python veya istediğiniz herhangi bir dilde kod yazabilirim, fakat yaptığım şey hakkında heyecanlanamıyorum. Herhangi bir zorluk hissedemiyorum. Çok iş parçacıklı kod, HTTPS MITM proxy ve herhangi bir özel algoritma becerisine ihtiyaç duymadan bir WSGI uygulaması yazdım.

Yanlış anlamayın (bunlar iyi başarılardır), fakat bu programlamadaki zorlu ve heyecan verici sorunların kapsamlı bir listesi değildir. Çözülmesi gereken çok sayıda zor problem var. En zorlayıcı problemler ölçekte çalışmaktır. Bir WSGI uygulaması yazdınız, ancak günde milyarlarca sayfa görüntüsü alabilecek bir tane yazdınız mı? Çok iş parçacıklı kod yazdınız, ancak çok bilgisayarlı kod yazdınız mı (yüzlerce bilgisayarla)?

Kısacası, teknik olmayan bir şey yapmayı denemek istiyorsanız, bunun için gidin. Ama bunu yapma, çünkü çözülmesi gereken tüm problemleri çözdüğünü hissediyorsun çünkü durum böyle değil.


Tabii ki, burada çok zorlu şeyler olduğunu biliyorum :) Şu anda biraz kodlayıcıyım! Sorun şu ki programlama şeylerinin etrafındaki karmaşıklık beni mutlu etmiyor. Anladığım kadarıyla, kazanılmış hissetmek için daha fazla akademik çalışma yapmam gerekiyor. Neyse teşekkürler :)
23:11
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.