İlk olarak, bu sorunun biraz uzun ve belirsiz olabileceğini ve bunun için özür dilerim. Bu muhtemelen "anlayan" herkes için kısa bir adla temel bir sorundur, ancak kendimi bu konuda eksik bulduğumdan, lütfen sorunu açıklarken yanımda olun.
Yaklaşık 11 yaşımdan beri bu şekilde ya da bu şekilde programlama yapıyorum. Bu, çoğunlukla kendime en baştan her şeyi öğrettiğim anlamına geliyor. Teknik bir eğitim aldım, ancak kesinlikle Bilgisayar Bilimi'nde değil (Fotonik Mühendisliği'nden mezun oldum). Tabii ki programlama kurslarımız vardı, ama bu çoğunlukla benim için temel şeylerdi ve çok yeni şeyler öğrenmedim. Sevinç için kendimi eğitmeye devam ettim ve her zaman programlama konusunda kariyer yapacağımı biliyordum, ancak o zaman tüm projelerim oldukça küçüktü. Onları aklımda tutmakta ve korumakta hiç sorun yaşamadım.
Şimdi kendimi bir ekipte lider buluyorum, ancak kurumsal bir ortamda değil - mühendislik uygulamaları için bilimsel yazılım (C ++ 'da) geliştiren üniversitede çalışıyorum. Aniden proje büyüyor (göreceli olarak) ve çoğu zaman zihnimi etrafına sarmakta sorun yaşıyorum. Çoğunlukla iki şey için çok zaman ve çaba harcıyorum:
- Bir süre üzerinde çalışmadığım bir kod bölümüne geri dönmek zorunda kaldığımda, nasıl çalıştığını hatırlamakta zorluk çekiyorum. İlgili sınıfların başlık dosyalarını incelemek ve kaynak dosyalarda yol boyunca yerleştirdiğim yorumları okumak için çok zaman harcıyorum. Keşke bir tür "şematik" olsaydı resme daha kolay bakabilir ve yeniden kazanabilirim;
- Değişikliklere girdiğimde, bazen yapmaya çalıştığım şeyin başka bir yerde bir şeyleri kıracağını (ya da daha kötüsü, sadece çalışma zamanında bir sürpriz olarak göründüğünü) yarı yolda fark ediyorum. Geri dönüp farklı bir şekilde yapmaya başladım, sadece başka bir bileşen üzerindeki etkisini ihmal ettiğimi öğrenmek için. Keşke işlerin nasıl yapıldığını, yapmaya çalıştığım şeyin diğer bileşenleri etkileyeceğini ve değişiklikleri uygulamaya başlamadan önce ayrıntılı olarak planlama yapmamın bir yolunu görebileceğim bir "mimari diyagramı" olmasını isterdim.
Birlikte çalıştığım insanların çoğu benimkine benzer hikayelere sahip - güçlü teknik yönelim ve bazen büyük beceriler, ancak işlerini organize etmenin hiçbir yolu yok. Bununla birlikte, projeleri genellikle benimkinden çok daha küçüktür, bu yüzden bir şekilde başa çıkmaktadırlar. Her neyse, bunun benim için anlamı, kendi başıma olduğum ve iyi uygulamaları öğrenecek kimsem olmadığı.
BT yönetiminde bir lisansüstü dersi aldım ve oldukça tatmin edici bulurken, çoğunlukla programcı olmayanları hedefliyor, proje yönetimi metodolojileri, bütçe / program tahminleri, kurumsal mimari vb. Sorun değil, ben de bunları öğrenmeye çalışıyorum. Tabii ki, bazı araçlar (UML gibi) ve yazılım geliştirme süreçlerinin türleri (kademeli, yinelemeli, çevik ...) tanıtıldı, ancak açıkçası çok ayrıntılı değil ve ne seçip kullanmam gerektiğine karar vermekte zorlandım ( ve ne ölçüde).
SO üzerinde yazılım tasarımı hakkında birçok soru ve cevap okuyordum - bunu veya bu aracı veya metodolojiyi kullanarak yapmakla ilgili birçok şey var ve UML belgelerinin sorunlarımı çözeceğine ikna olsaydım - kullanmaya başlayın. Ama bazı insanlar buna yemin ediyor, diğerleri bunun işe yaramaz olduğunu söylüyor. Daha yüksek bir soyutlama seviyesine cevap arıyorum - Yaşadığım iki sorunu çözmenin yolları var mı ve bunu kişisel olarak nasıl yapıyorsunuz? Muhtemelen belirli bir araca bağlı kalmadan bunu yapabilmek için ne öğrenmeliyim? Bunlar zaman zaman modası geçiyor ve projenin türüne bağlı olarak uygulanabilirliklerinin değişeceğini düşünüyorum.
Okuduğunuz için çok teşekkür ederim, daha kısaca ne demek istediğimi söyleyemedim (yazılım tasarım deneyiminden ve kelime bilgisinden yoksun).