Yazılım mühendisleri ve programcılar arasındaki temel farklar nelerdir?
İşe alırken, sistemimizi tasarlamamıza, süreçleri tanımlamamıza, teknik özellikler oluşturmamıza, gelişmiş yeniden düzenleme uygulamamıza vb. Yardımcı olacak biri ile bir kontrol listesinden programlama görevlerini tamamlamamıza yardımcı olacak biri . Birincisine Yazılım Mühendisi ve ikincisini Programcı diyebileceğinize inanıyorum.
Gerçekten bir şirkete bağlı, çünkü bir mezhebi veya diğerini zorlamak için yasal bir çerçeve olduğunu düşünmüyorum, ya da en azından farkında olduğum ve bu ülkeden ülkeye değişebilir (örneğin, terimin kullanımı "mühendis" aslında Fransa'da oldukça düzenlenmiştir, ancak "küfürlü" vakalar için izin verilen varyantlar vardır).
Genel eğilim şöyle söylenir:
A programcı konum genellikle bir bilgisayar programının kodunu üretmek için işe alınan bir profesyonel konumudur. Bu nasıl kod yazılacağını biliyorsunuz, bir algoritmayı anlayabilirsiniz ve spesifikasyonları takip edin anlamına gelecektir. Bununla birlikte, genellikle sorumluluk açısından orada durur.
A geliştirici konum genellikle kabul edilir programcı konumunun süper türü. Aynı sorumlulukları kapsar, artı - bir yazılım bileşenini tasarlama ve tasarlama yeteneği ve teknik belgeleri yazma (dahil özellikleri). Sen en azından teknik olarak - başkalarına liderlik edebilirsin (yani, programcılar), ama mutlaka bir takım değil (fuzz geliyor ...)
Bir mühendis konumu genellikle belirli bir derece derecesine sahip, bazıları mühendislik bilgisi ve - bir sistemi tasarlayabilme (olduğu gibi: birlikte bütün bir yazılım varlığını oluşturan yazılım bileşenleri/modüllerinin bir kombinasyonu). Temel olarak, siz daha geniş bir resme bakın ve siz tasarlayıp açıklayabiliyorsunuz ve daha küçük modüllere ayırabiliyorsunuz.
Ancak, tüm bunlar tartışmalı ve dediğim gibi ABD/İngiltere ülkelerinde farkında olduğum yasal bir gereklilik yok. Bununla birlikte, Fransa'da sadece bir mühendislik okulundan (Komisyon des Titres d'Ingenieurs ya da bunun gibi bir şey tarafından tanınan) gelirseniz kendinize "mühendis" diyebilirsiniz. Bir "Mühendis Dereceniz" olduğunu söyleyemezsiniz, ancak mühendislik ve teknolojilerin portemantına giren bir disiplin üzerinde çalıştıysanız, "Mühendislikte Dereceniz" olduğunu söyleyebilirsiniz.
Bazı ülkelerin benzer bir ayrımı olabilir, gerçekten bilmiyorum.
Yazılım mühendisi unvanına geri dönelim ... Bir keresinde, öğretmenimden biri sınıfımıza - ve haklı olarak - şunu söyledi - bugün itibariyle "yazılım mühendisliği" diye bir şey yok . Çünkü bir şey (bir bina, bir araç, bir donanım parçası ...) mühendislik yapmak, tasarımını ve üretiminin tüm aşamalarını hayal edebileceğiniz ve ihtiyacınız olacak kaynakları ve dolayısıyla üretim maliyeti.
Bu çoğu "gerçek" mühendislik disiplini için geçerlidir. Tabii ki dalgalanmalar var (örneğin, malzemelerin fiyatları zaman içinde değişecektir), ancak çok sınırlı teorik modeller (tasarım ve planlama için) ve ampirik modeller (eskisinden herhangi birini erişilebilir kısıtlamalar içinde tutmak için) bir projenin sonlandırma tarihini ve kaynak kullanımını tahmin etmenizi sağlar.
Yazılımla ilgili en büyük sorun, henüz orada olmamasıdır. Yazılım mühendisliğini hedeflemek istiyoruz, ama henüz orada değiliz. Çünkü çok akıcı ve dinamik bir ortamımız var, projeler için çok değişken kısıtlamalar var ve süreçlerimizde geriye dönük bir olgunluk eksikliği var. Elbette daha iyi olduğumuzu söyleyebiliriz (yine de sert verilerle tartışılabilir), ancak sadece 60'lardan beri varız (önceki projeler aslında yalnızca donanım bilgisayarlarına daha yakındı, dolayısıyla ironik olarak gerçek mühendisliğe daha yakındı) ). Oysa bir asırdan fazla süredir motorlu taşıtlar, birkaç bin yıldır genel olarak taşıtlar ve daha da fazla bin yıl boyunca inşaat yapıyoruz (ve aslında dünyanın bazı bölgelerinde oldukça iyi olduk, karşılaştırmalı olarak bizim yeni gösterişli yazılım oyuncaklar ile oynayan komik çocuklar).
Biz son tarihleri sistematik olarak tahmin edemiyoruz, biz maliyetleri doğru bir şekilde sistematik olarak tahmin edemiyoruz, biz doğal ve dış riskleri etkin ve kararlı bir şekilde sistematik olarak tanımlayamıyor ve azaltamıyoruz =. Yapabileceğimiz en iyi şey, döngüleri ve ek yükü azaltmak için süreçleri optimize etmek için elimizden gelenin en iyisini yapmaya çalışırken, yeterince iyi guesstimates üretmektir.
Ama bakın, belki de mühendislik budur. Birisi bir "yazılım mühendisi" hakkında konuştuğunda, düşünmesi ve hedeflemesi gereken de budur.
Bu, programlama rutinlerinin basit eylemi veya uygulamaların daha gelişmiş eylemi ile birbirinin yerine geçemez gibi görünüyor.
Yine de her şey bir trend meselesi. Son zamanlarda, takımdaki herkesin Kıdemli Yazılım Geliştiricisi (evet, büyük harfler, çünkü bu bizi özel hissettiriyor, değil mi?), Yaş olarak gerçek bir ayrım yapmadan (yeterince adil, benim görüş) ve becerilerin (uh-oh ...) ve sorumlulukların (şimdi sadece PR vızıltısı için ayrı olarak iyi olamaz) ayrımı değil.
Aynı zamanda bazen sadece bir alışkanlık gücü ve bir endüstrinin kültürüne ve jargonuna özgü. Gömülü yazılım üretimi için daha fazla konum, yazılım mühendisleri için başlıklar kullanır. Çoğunlukla muhtemelen bu alanda da donanım ile her zaman belirli bir ölçüde uğraşmanız gerekeceği anlamına gelir, bu nedenle açıkça üretimin ve ürettiğiniz tüm "sistemin" diğer yönleriyle ilgilenirsiniz. Sadece içindeki çukurlar bitmiyor. Diğer yandan, spektrumun mühendislik yazılımı üretim pozisyonlarında kullanıldığını gerçekten görmüyorsunuz. Bunun nedeni, bu endüstrinin öncüllerinden birinden mimetik bir evrim geçirmesidir (örneğin, gömülü mühendislik, otomobil mühendisliğinde köklerini bulur) veya sadece bir konuma az çok kredi/ağırlık vermek istedikleri için.
Ve sis içindeki herkesi kaybettiğinizden emin olmak için, o zaman her ikisini de karıştıran diğer başlıkları bulacaksınız ("Yazılım Geliştirme Mühendisi" veya "Testteki Yazılım Mühendisi" gibi!) diğer alanlarla daha da çılgın köprüleri vurgulamak ("Yazılım Mimarı" nı ve "yazılım mimarisinin" utanmaz bir kelime hırsızlığı olabileceğini düşünün). Ve gelmelerini sağlayın: Sürüm Mühendisi, Değişim Geliştirme Yöneticisi, Yapı Mühendisi (o da orada ffaaarrrrrr gider). Ve bazen sadece "mühendis".
Umarım bu bir cevap olmasa da yardımcı olmuştur.
Oh, ve bu yeni şirketinizin sizi yeni bir unvanla cezbetmeye çalıştığı veya unvanları gerçekten önemsemediği veya gerçekten daha yüksek bir pozisyona sahip olacağınız anlamına geliyor. Bilmenin tek yolu, iş şartnamenizi okumak, onlarla konuşmak ve nihayetinde bunu denemek ve kendiniz yargılamaktır. Umarım ikinci seçenek ve bundan memnun olursunuz (ve potansiyel olarak daha fazla para kazanırsınız). ;)
Yazılım mühendisleri kendileri için yazılım yazan kişilere "yazılım mühendisleri" diyen şirketlerde çalışan kişilerdir.
Programcılar kendileri için yazılım yazanlara "programcılar" diyen şirketlerde çalışan kişilerdir.
Ayrıca geliştiriciler veya yazılım geliştiricileri vardır. Bunlar, kendileri için yazılım yazan kişilere sırasıyla "geliştiriciler" veya "yazılım geliştiriciler" adını veren şirketlerde çalışan kişilerdir.
"Yazılım Mühendisi", "Programcı" ve "Geliştirici", "Kodlayıcı" var ve "SOA uzmanını" asla unutamazsınız.
Bunların hepsi, CV'lerinde anlamlı bir şey söyleyemeyen, önceki pozisyonlardaki gerçek rolleri (sadece iş unvanı değil) gibi pazarlama terimleridir.
İş ilanlarında, fark İK kişisine bağlıdır.
Alt satır: her insanın "kodla çalışan iyi bir çalışanı yapan şey" konusunda kendi düşüncesi vardır ve bazıları böyle ve bu tür becerileri bu ve bu tür başlıklarla ilişkilendirmeyi sever.
Ne yapmak gerekiyor? İş ilanları, gerekli beceriler hakkında açıklayıcı olmalı ve özgeçmişler, adayın deneyim ayrıntılarını açıklamalıdır.
Fark yok. Aynı şey. Bununla birlikte, şirketler terimleri kullanarak resmi iş tanımlarına sahip olabilirler ve daha sonra terimin şirkete özgü bir anlamı olabilir.
Programlama kodla ilgilidir. Yazılım mühendisliği nihai ürünle ilgilidir.
Bazı ülkelerde, "Mühendis" profesyonel bir mühendis olma zorunluluğunu beraberinde getirir, yani P. Müh. kimlik bilgileri arasında tasarı. Bununla birlikte, diğer alanlarda, birkaç yıl önce Washington eyaletinde çalışan bir "Softwere Tasarım Mühendisi" olduğum gibi bir fark olmayabilir.
Bu gerçekten şirketin pozisyonları nasıl tanımladığına bağlıdır. Bir yazılım mühendisi olarak daha fazla tasarım karar fırsatına sahip olacaksınız, ancak bir geliştirici olarak size UML diyagramları verecekler ve programı yazacaksınız.
Ancak, gerçek bir set tanımı yoktur, böylece başlığa dayanarak insanlar ne yaptığınızı veya ne kadar deneyimli olduğunuzu bilir.
Bir mimar/geliştirici olduğumda, başlığım bilgisayar bilimciydi, ancak ilk iki kişi kolayca tanımlanmadığı için insanlara bir programcı olduğumu söyleyebilirim, ancak çoğu insan bir programcının ne yaptığını biliyor.
Bir başlık sizin için önemliyse, mühendis bir geliştiriciden daha yüksek ses çıkardığı için yenisini kabul edin.
Deneyimlerime göre şu anlama gelebilecek bir "resmi farklılık" olduğunu düşünmüyorum:
Ayrıca, değişen moda terimleri vardır ... Önce terim "programcı", sonra "yazılım mühendisi" ve şimdi "geliştirici" gibi görünüyor ...
İş tanımını veya belirli bir şirketteki birine okumak daha iyidir
Yazılım Mühendisleri, çok büyük sistemler üzerinde çalışma eğilimindedir; Örneğin 5 ila 16 yıl. Programcılar bu kodlama klişesine sahip olma eğilimindedir ve başka bir şey değildir. Ancak bu gerçekten çalıştığınız organizasyona ve İK'nın yukarıda açıklanan rolü nasıl pazarladığına bağlıdır. Aslında aynı şeyler. Sadece bir başlığa çok fazla bağlı olmayın çünkü eşanlamlı.