İlk tavsiyem, kendinizi yalnızca herhangi bir rolle sınırlamamaktır. Bir uzman olmak ve belirli bir beceri setinde (örneğin PHP) derin bilgi sahibi olmak harika. Ancak, alan adınızın geri kalanında geniş bir bilgiye sahip olmak da önemlidir.
Deneyimlerime göre, çoğu takım PHP'nin temel işlevlerini yeniden yazma bilgisine sahip birini değil, onlara atılan herhangi bir sorunu ele alabilecek birini işe almak istemektedir (ancak bu bilgi düzeyine sahip olmak kesinlikle zarar vermeyecektir). Veya en azından ekibin karşılaştığı sorunları çözmeye yardımcı olabilecek biri. Örneğin, uygulamanızın azaldığı ve müşterilerin etkilendiği bir durum düşünün. Ellerinizi kaldırabilir ve "Ne yapacağım hakkında hiçbir fikrim yok ..." diyebilir veya sunucuya SSH gönderebilir, günlükleri taramaya başlayabilir, belirli bir dosya sisteminin disk alanının dolu olduğunu fark edip temizlemeye devam edebilirsiniz. Bu küçük bir örnek ama bence konu açık. Bir geliştirici olarak bu temel bilgiyle, söz konusu dosya sistemini izleyen ve belirli bir eşiğe ulaştığında temizleyen bir komut dosyası yazabilirsiniz. Artık menajeriniz için çok daha değerli oldunuz.
Kariyerim boyunca öğrendiğim bir diğer şey, işlerin hızlı hareket etmesi ve eğer devam etmezseniz geride kalacaksınız. Tüm çevreniz hakkında ne kadar çok bilgi sahibi olursanız (iş yönleri de dahil olmak üzere) o kadar iyi olursunuz. Bu, yaptığınız her şeyde uzman olmanız gerektiği anlamına gelmez, ancak en azından clueless olarak etiketlenmeme bilgisine sahiptir. Ne kadar tanıdık olursanız, o kadar uyarlanabilir olursunuz ve şirketiniz için o kadar değerli bir varlık olursunuz.
Sorularınızı özel olarak cevaplamak için ...
- Geliştirici olarak hangi sunucu öğelerini bilmeliyim?
Tüm uygulama yığınını tanıyın. Hangi web sunucusunun, veritabanının, önbellek mekanizmalarının vb. Kullanıldığını bilin. Ve hangi versiyonları da. Ortamı kendi sunucunuzda yeniden oluşturabileceğiniz kadar bilgi sahibi olun. Hangi, kendi başına, önemli. Sürprizleri azalttığı için, geliştirme ve üretimde az çok aynı ortamlara sahip olmaya çalışmalısınız ( http://12factor.net/dev-prod-parity ).
- Bir geliştirici olarak sunucuyla ne gibi ilişkileriniz var?
Bu gerçekten takıma bağlıdır. Benim özel durumumda, geliştiriciler çevreleri hazırlamada büyük rol oynamaktadır. Uygulamanın iç işleyişine en aşinayız ve bu nedenle onu çalıştırmak için hangi sunucu teknolojilerinin mevcut olduğunu belirlemek için en iyi konumdayız. Tüm takımların bu tür bir yaklaşıma sahip olmadığını hayal ediyorum, ancak tartışmaya kendinizi dahil edebilecek kadar aşina olmak büyük bir avantaj. Özellikle, sürüm kontrolü ile ilgili olarak, geliştirici olarak siz hangi teknolojinin seçildiğinden (Git, Subversion, Mercurial, vb.) Çok etkilenirsiniz ve bu nedenle kendinizi karar sürecine dahil etmeye çalışmalısınız.
Şimdi ne olacak?
Tüm bunları öğrenmeye en iyi nasıl yaklaşacağım konusundaki önerime gelince? Ayaklarını hareket ettir . Konuyla ilgili yapabileceğiniz her şeyi okumaya çalışmayın, çoğu işiniz bittiğinde muhtemelen beyninizden dışarı akacaktır. Bunun yerine sıfırdan bir şey geliştirmeye başlayın. Vagrant ile başlayın ; yeni oyun alanınız olarak kullanabileceğiniz bir sanal makineyi kolayca oluşturmanıza ve yönetmenize olanak tanır. Ardından, bir web sunucusu ve veritabanı yükleyin ve oluşturmaya başlayın. Bir uygulama için mükemmel bir fikriniz varsa, bunun için gidin ... değilse, bir öğretici bulun veya mevcut bir uygulamayı yeniden oluşturmaya çalışın. Mesele sadece tüm süreci tanımaktır. Ayrıca, bir PHP geliştiricisi olarak PHP'yi kontrol ettiğinizden emin olun : Doğru Yol... çok fazla mükemmel bilgi içeriyor. Ve en önemlisi, kendinizi strese sokmayın. Bir geliştiricinin yolunu izlediğinizi düşünüyorum, çünkü bu zevk aldığınız ve tutkulu olduğunuz bir şey ... bunu gözden kaçırmayın!