Bir Java Geliştiricisinin Yol Haritası
Bir arkadaşım, geliştiricilerin neden her zaman bu kadar mutlu olduğunu merak ediyordu. Aldığı cevap basit ve şaşırtıcıydı: Canları ne istiyorsa onu yapıyorlar ve çok para kazanıyorlar. Yazılım geliştiricilerin dünyasına hoş geldiniz.![Eski Seviye 06 - 1](https://cdn.codegym.cc/images/article/19d25706-3262-447b-8e1b-d8f628e6d1b3/800.jpeg)
yazılımcı maaşı
Size geliştiricilerin maaşlarından bahsetmek istiyorum. Arazi maaşlarla nasıl yatıyor, nereye gitmeli ve nerede çalışmamalısınız. Bir geliştirici değilseniz ve kendi başınıza çözmeye çalışırsanız, oldukça tartışmalı bir veri elde edebilirsiniz. Ana nokta, bir geliştiricinin maaşını etkileyen ana faktörün nitelik değil, istihdam yeri olmasıdır. Bazen, eşit nitelik düzeyi göz önüne alındığında, iyi ve kötü istihdam yeri arasındaki fark 2 ila 10 kat(!) Olabilir. Bir ayda iki kat daha nitelikli hale gelip iki kat daha fazla ödeme alamazsınız. Ancak bir ay içinde iş yerini değiştirebilir ve iki kat daha fazla maaş alabilirsiniz. İki aylık akışta bir kez maaşım üç kat arttı (!) – Unutulmaz bir deneyim. Öyleyse, hangi yerin en iyi olduğunu bulalım.- Bir şirketin ana işinin yazılım geliştirme olup olmadığı
- Şirketin küresel veya yerel pazara yönelik olup olmadığı
- Ana ofis nerede bulunur: gelişmiş ülke veya gelişmekte olan ülke
Belirli sayılar
Maaşlar dünyanın farklı yerlerinde farklı olduğu için, başlangıç noktası olarak 5 yıllık deneyime sahip Kıdemli Java Geliştiricisi maaşını alıp “en fazla 5 yıl” olarak adlandırmayı öneriyorum. Aşağıdaki tüm rakamlar bu miktarın yüzdesi olarak verilecektir. İşte dünyanın farklı şehirlerindeki “maksimum 5 yıllık” maaşlardan bazı örnekler:![Eski Seviye 06 - 2](https://cdn.codegym.cc/images/article/1afaa877-5c1d-4093-91f9-af2b596fc1f1/800.jpeg)
![Eski Seviye 06 - 3](https://cdn.codegym.cc/images/article/417f0805-fde8-4d4d-a3e9-f6d0ea805e7c/800.jpeg)
![Eski Seviye 06 - 4](https://cdn.codegym.cc/images/article/89ad7cb7-db6d-4f32-ad72-4be161d604f8/800.jpeg)
Aptalca şeyler yapmazsan neler başarabilirsin?
Programlama alanında kendi kendine eğitiminiz üzerinde hemen şimdi çalışmaya başlarsanız, maaşınız şöyle görünebilir:![Eski Seviye 06 - 5](https://cdn.codegym.cc/images/article/06c56ee7-2f9d-4e5e-aae4-e702673789de/800.jpeg)
Plan
0-3 ay (Öğrenci)
Programlama hakkında çok az şey biliyorsun. Bunu okulda veya bir kolejde temel düzeyde okumuş olabilirsiniz. Yapmanız gereken programlamayı öğrenmek ve Java öğrenmek. Hedefiniz, seviye 3 veya üzeri bir şirkette Java Junior Developer olarak iş bulmaktır. Planın ilk üç ayında hiçbir şey alamayacaksınız çünkü programlamayı yeni öğreniyorsunuz. Ama ne kadar erken başlarsan o kadar iyi. En iyi zaman ŞİMDİ. Gelecekte, bir ailen ve bir sürü kredin olduğunda, yeniden kalifiye olmak çok daha zor olacak. Hatanızı düzeltmek için, en azından bir yıllık normal yaşam için ödemek üzere bir kenara para ayırmanız gerekecek. Aptalca hatalar yapmayın.3-15 ay (Java Junior Developer)
Zaten bir yazılım geliştiricisi olarak çalışıyorsunuz ve deneyiminiz her geçen gün artıyor. Rahatlama. Küreklere dinlenmeden önce yapacak çok şeyin var. Yapmanız gereken şey – Orta Düzey Geliştirici olarak ihtiyaç duyacağınız teknolojileri incelemek. Bunlar ne? Dünya sürekli değişiyor. Sana tavsiyeler yükleyeceğim ve hayat her şeyi değiştirecek. Web'de birkaç boş pozisyon bulun ve neye başvurmanız gerektiğini görün. Bruce Eckel'in "Java'da Düşünmek" adlı kitabını okuduğunuzdan emin olun. Java Junior Developer olarak çalışmaya başladığınız ilk yıldaki hedefiniz , Java Middle Developer seviyesine ulaşmaktır. Kimse bunun kolay olacağını söylemiyor ama hedef odaklı bir insan için bu mümkün. Maaşınızı anında "maksimum 5 yıl"ın %40'ına kadar artıracaktır (SF ve Londra için 50.000$, Bangalore için 6.000$).2-b yıllık programlama (Java Orta Geliştirici, seviye 1)
Geçen yıl iyi bir iş çıkardınız ve şimdi bir Java Orta Düzey Geliştiricisisiniz. Kıdemli Java Geliştirici maaşının %50'sini kazanarak oldukça iyi yaşayabilirsiniz. İş yerinde size bazı ciddi görevler veriliyor ve deneyiminiz önemli ölçüde artıyor. İki veya üç yıl içinde Kıdemli Java Geliştiricisi düzeyine ulaşacaksınız. Aceleye gerek yok. Zaten maaşta büyük artışlar almayacaksın. Yapmanız gereken tasarım modellerini öğrenmek, McConnell's Code Complete'i okumak. Kodunuzun kalitesini ve ekip becerilerinizi mükemmelleştirin. Her ay bilgisayar programlama üzerine 1 kitap okuma kuralı oluşturun. Sonra, 4 yıl içinde diğerlerinden 50 kitap daha akıllı olacaksın. Ertelemeyin: daha fazla boş zamanınız olmayacak, ayrıca büyük olasılıkla bir aile kuracaksınız veya varsa, daha da büyüyecek. Senin hedefinKıdemli Java Geliştiricisi olarak uzmanlaşmak için birkaç teknoloji seçmektir. Hepsini öğrenemezsin, biliyorsun. Ve tek bir uzmanlık alanında guru olmak her zaman için iyi bir karardır.![Eski Seviye 06 - 6](https://cdn.codegym.cc/images/article/07ba983e-9cf5-4f2d-8b63-90df726b6aa5/800.jpeg)
3-b yıllık programlama (Java Orta Geliştirici, seviye 2)
Artık deneyimli bir Orta Düzey Geliştiricisiniz ve Kıdemli Geliştirici olmayı düşünüyorsunuz. Keyifli olduğu kadar prestijli. Maaşınız “maksimum 5 yıl”ın %60'ını aşıyor (Bangalore'da 10.000 $, Kiev'de 25.000 $, Berlin'de 40.000 $, New York'ta 80.000 $). Bu andan itibaren talep üzerine sizin gibi profesyoneller için teklif yükseliyor. Her zaman birkaç gün içinde bir iş bulabilirsin ve neredeyse hiçbir zaman şu an kazandığından daha az kazanamayacaksın. Bu, elbette, aptalca bir şey yapmazsan. yapman gereken şeyseçtiğiniz teknolojileri incelemeye devam edin. Daha iyi çalış. İşvereninizin iyiliği için değil, kendi iyiliğiniz için. Gelecek vaat eden teknolojileri içeren projelere katılmak için başvurun (şu anda bu makalenin yazıldığı sırada BigData gibi). Her halükarda günde 8 saatinizi ofiste geçireceksiniz, bunun için neden biraz daha para almıyorsunuz ve daha da önemlisi, gelecekte ihtiyaç duyacağınız en değerli deneyim. Amacınız yeni bir iş bulmak. İyi bir ekip her zaman bulunur. Yeni projeler ve teknolojilerle karşılaşacaksınız. Koltuğunuza kök salmanıza gerek yok. Hâlâ üçüncü düzey bir şirkette çalışıyorsanız, dördüncü düzey bir şirkette çalışmayı düşünün.5. yıl programlama (Java Kıdemli Geliştiricisi, seviye 1
Artık bir Kıdemli Geliştiricisiniz. Belki de haketmedin ve hissediyorsun. Yine de tebrik ederim. Şu anda bulunduğun konuma layık olup olmaman önemli değil, önemli olan gelecekte buna layık olman. İyi bir iş bulmanın ve gereken seviyeye geldikten sonra bunun tersinin daha iyi olduğu konusunda hemfikir olacağınızı düşünüyorum. Ayda bir kitap okuma tavsiyemi umarım unutmamışsınızdır? Artık herhangi bir öğrenci bilgi ve becerilerinizi kıskanacak. Daha spesifik olmak gerekirse, onlar için dua edecek. Bir düşünün: ciddi bir kazancınız var, “maksimum 5 yıllık” maaşın %90'ına yakın. Muhtemelen hala gençsin. Dünya ayaklarınızın altında. yapman gereken şeyseçtiğiniz teknolojileri yeniden değerlendirmek için. Belki de uzmanlığı değiştirmeniz gerekir. Dünya değişti, teknolojiler değişti ve son iki yılda oldukça fazla bilgi edindiniz. Şimdi seçtiğiniz şey, önümüzdeki birkaç yıl boyunca sizin için manşet olacak. En sevdiğiniz teknolojileri seçme zamanı. Amacınız büyüme yönünüzü seçmektir. Sayıları çoktur, kimse hepsini adlandıramaz, ancak seçiminiz hemen şimdi yapılmalıdır. Bugün küçük bir değişiklik yaparsanız, gelecekte büyük bir değişiklik elde edeceksiniz.6. yıl programlama (Java Kıdemli Geliştirici, seviye 2)
Geleceğinize karar verdiniz ve hayalinizin gerçekleşmesi için çalışıyorsunuz. İlerleme arzusuyla birlikte doğru seçilmiş bir yön ve sonuç uzun sürmeyecek. Tebrikler. Hayalini gerçekleştiren bir kişinin daha olduğunu görmek beni mutlu ediyor. Derin bir gerçek var. İnsanlar genellikle bir yılda başarabileceklerini abartır ve beş yılda yapabileceklerini hafife alır. Beş yıl öncesine bakın. Böyle. Yapmanız gereken akılsız kararlardan kaçınmak ve tembel olmamaktır. Amacınız yön seçmek ve ilerlemek. Yoksa burada bittiğini mi düşündün? Mezuniyetini hatırla. Bu bir son değil, sadece başlangıç.Gelecekteki uzmanlığınız
![Eski Seviye 06 - 7](https://cdn.codegym.cc/images/article/896e521a-6e71-467f-9066-8538285f1f7d/1080.jpeg)
Java Developer'ın kariyeri
Geliştiricinin kariyeri diğerlerinden farklıdır. İyi para kazanmak için yönetici olmanıza gerek yok. Bir Kıdemli Geliştiricinin yönetici-patronundan daha fazla kazandığı sıklıkla olur. Ne kadar çok deneyim kazanırsanız, patronunuzla iş ilişkileriniz o kadar güçlü olur, "patron-ast"tan "yıldız ve yönetici"ye dönüşür. Geliştiricilerin, projeleri ve boş pozisyonları seçtiklerini bildikleri için![Eski Seviye 06 - 8](https://cdn.codegym.cc/images/article/974ae291-df1d-4ce3-aaf5-29cad8d43679/800.jpeg)
İki yüz yaşındaki geliştirici
En çok programlamayı seviyorsanız, o zaman bu sizin yolunuz: Kıdemli Geliştirici, ardından Teknik Lider Geliştirici ve bir mimar. Bu şekilde 50 yıl ve daha uzun süre geliştirici olarak çalışabilirsiniz. Çoğu durumda Kıdemli Geliştiricilerin ve Teknoloji Lideri Geliştiricilerin maaşları, yöneticilerininkinden fazladır. Öyleyse paranızın karşılığını alın.Müdür. diğerleri gibi olmadığın için şanslısın
Düşmanın yanına gittin. Şaka yapıyorum. Harika organizasyon becerileri keşfederseniz, yollarınız: Takım Lideri ve ardından Proje Yöneticisi. Size bölüm başkanı olma ve kendi işinizi açma şansı verecektir. İstediğin bu, değil mi?Ev kalbinin olduğu yerdedir
![Eski Seviye 06 - 9](https://cdn.codegym.cc/images/article/63d085b9-b1d0-45b3-9f1e-0a4ec1883e75/800.jpeg)
Napoli'yi görün ve ölmeyin.
Henüz bir ailen yok ve seyahat etmeyi seviyorsun . oMasa senin her şeyin. Bir müşteri bulun, saat başına 20-50$'lık bir ücreti kabul edin, yanınıza bir dizüstü bilgisayar alın ve gidin! Maaşınız dünyanın herhangi bir yerinde yaşamak için yeterli olacaktır. Neden hayallerinizi gerçekleştirmeye hemen başlamıyorsunuz?Programlamak istemiyorum, ben bir kızım..
Eğer bir kızsanız , doğum iznine ihtiyacınız olabilir . Kulağa cinsiyetçi bir şaka gibi geliyor, ki öyle. Yine de, içinde çok fazla sağduyu var. Büyük olasılıkla, doğum izni alarak çok fazla doğum izni parası alabilirsiniz (yüksek sosyal korumaya sahip ülkelerde). Hiçbir şey ödemeyen şirketler var ve iyi ödeyenler var. Öğrencilerimden biri doğum iznine giderken yıllık maaşının üçte birini aldı. Ve bu, 2009 baharında işten çıkarmalar sırasında oldu. Ve bir buçuk yıl içinde en azından Orta Geliştirici olarak geri dönebilirsiniz.Seviye 6
![Eski Seviye 06 - 10](https://cdn.codegym.cc/images/article/c26ec3c8-8a08-4404-b92b-21557796c6e7/800.jpeg)
1 Elly. Nesne görünürlüğü. hükümsüz
- Selam dostum! - Merhaba Elly! Bugün bana ilginç bir şey anlatır mısın? -Bugün size bir cismin ömründen bahsedeceğim . Bir nesne oluşturulduktan sonra, en az bir değişken adresini depolayana kadar (en az bir nesne referansı vardır) var olur (yaşar). Artık referans yoksa, nesne ölür. Örnekler:![Eski Seviye 06 - 11](https://cdn.codegym.cc/images/article/70ecf870-832e-438a-94c0-433ae6dab2ee/512.jpeg)
2 Profesör, Çöp toplama
![Eski Seviye 06 - 12](https://cdn.codegym.cc/images/article/a4a7bf6c-5233-4d13-a720-ca630b7fa73e/1080.jpeg)
3 Elly, bitir
- Tekrar merhaba! Şimdi size finalize() yöntemine kısa bir giriş yapacağım . Bu yöntem, nesne yok edilmeden önce Java sanal makinesi tarafından nesne üzerinde çağrılır. Aslında, bu yöntem yapıcının tersidir. Bu yöntemde, bir nesne tarafından kullanılan kaynakları serbest bırakmak mümkündür. - Object sınıfında bu yöntem vardır, bu nedenle her sınıfta buna sahiptir ( Java'daki tüm sınıfların Object sınıfından miras alındığı ve onun yöntemlerinin bir kopyasını içerdiği kabul edilir ). Sınıfınıza finalize() yöntemini yazarsanız, bu sınıfın nesneleri yok edilmeden önce çağrılacaktır. Örnek:![Eski Seviye 06 - 13](https://cdn.codegym.cc/images/article/a8882f08-1770-499b-8541-8962af6914c1/512.jpeg)
4 Elly, Nesne ömrü
- Ayrıca size nesnenin ömrü hakkında birkaç ilginç şey söylemek istiyorum. Java'da nesneyi kazara kaybetmek çok zordur; bir nesne referansınız varsa, nesnenin kesinlikle canlı olduğu anlamına gelir. - Bir nesne referansının içinde bu nesnenin bir numarasını – adresini bellekte saklar. Bu sayıyı değiştiremez, artıramaz veya azaltamazsınız. Hafızada sadece adres varken referans oluşturamazsınız. Yalnızca yeni bir nesne oluşturabilir ve referansını bir değişkene atayabilirsiniz. Yeni bir referans almanın tek yolu bu. - Anlıyorum. Yani, tüm nesne referanslarını null (silme) olarak ayarlarsam, nesne referansını asla alamayacağım ve ona erişemeyeceğim? - Evet. Ancak çoğu zaman bunun tersi doğrudur - kullanılmayan çok fazla canlı nesne vardır.Çoğu program düzinelerce nesne oluşturur ve bunları çalışma zamanında farklı listelerde saklar, ancak bu listeleri asla temizlemez. - Çoğunlukla, programcılar istenmeyen nesneleri "silinmiş" olarak etiketler, hepsi bu. Listelerden çıkarılması kimsenin umurunda değil. O kadar büyük Java programları şişme eğilimindedir - kullanılmayan nesneler bellekte canlı kalır. - Bu kadar. Gelecekte her zaman dikkatinizi kullanılmayan nesnelere ve bunların uygun şekilde imha edilmesine çekeceğim. - ОK, teşekkürler. Referanslarla ilgili birkaç şeyi açıklığa kavuşturdunuz.5 Diego, Nesne ömrü görevleri
- Selam dostum! İşte size birkaç görev:Görevler | |
---|---|
1 | 1. Cat sınıfının finalize() yöntemi Korumalı bir yöntem yazın void finalize() , Cat sınıfında Fırlatılabilir atar |
3 | 2. Kedi ve Köpek Sınıfları ve her sınıf için finalize() yöntemi Her Kedi ve Köpek sınıfında , ekrana nesnenin yok edildiğini belirten bir mesaj görüntüleyen bir finalize() yöntemi yazın. |
3 | 3. Cat sınıfından 50.000 nesne ve Dog sınıfından 50.000 nesne Bir döngüde Cat sınıfından 50.000 nesne ve Dog sınıfından 50.000 nesne oluşturun. (Java sanal makinesi kullanılmayan nesneleri yok edecektir, bu nedenle finalize() yöntemi en az bir kez çağrılacaktır). |
4 | 4. Cat sayacı Cat sınıfı yapıcısında [public Cat()], cat sayacını (aynı sınıfın statik değişken catCount) 1 artırın . finalize() yönteminde 1 azaltın. |
6 Elly, Statik sınıflar ve yöntemler
- İşte yeni ve ilginç bir konu. Size statik değişkenler ve yöntemlerden bahsetmek istiyorum. - Statik değişkenleri zaten duymuştum. Statik yöntemler hakkında da sanırım. Ama daha fazla ayrıntıya sahip olmak istiyorum. - Bir sınıfta değişkenleri bildirirken, bu değişkenlerin tek bir paylaşılan örnekte mi yaratıldığını yoksa her nesne için kopyalarının mı oluşturulması gerektiğini belirtiriz. Varsayılan olarak, bu sınıfın her nesnesi için sınıf değişkeninin yeni bir kopyası oluşturulur. İşte göründüğü gibi: - cat1.name ve cat2.name![Eski Seviye 06 - 14](https://cdn.codegym.cc/images/article/7a75f73b-2ff1-4f6b-befd-9750d4b9e36a/512.jpeg)
![Eski Seviye 06 - 15](https://cdn.codegym.cc/images/article/ad249170-a3ef-4165-9f34-eda62b8583cb/512.jpeg)
![Eski Seviye 06 - 16](https://cdn.codegym.cc/images/article/8ec6718d-391a-4430-8f64-93a26514b88b/512.jpeg)
![Eski Seviye 06 - 17](https://cdn.codegym.cc/images/article/474f4874-a110-4dbd-aa9a-ef7a43b2cd5e/512.jpeg)
7 Risha, Statik sınıflar ve yöntemler
- Statik metotlara ek olarak statik sınıflar da vardır . Bu durumu daha sonra ele alacağız, size bunun bir örneğini göstereceğim:![Eski Seviye 06 - 18](https://cdn.codegym.cc/images/article/276e92dc-a35e-4148-9640-dec042a08a19/512.jpeg)
8 Diego, Statik yöntemdeki görevler
- Selam dostum! Statik yöntemlerle ilgili bazı ilginç görevler şunlardır:Görevler | |
1 | 1. Cat Sınıfı ve statik değişken catCount Cat sınıfına bir statik değişken int catCount yazın . Verilen değişkenin 1 artırılması gereken bir yapıcı [ public Cat() ] oluşturun. |
2 | 2. Statik yöntemler: int getCatCount() ve setCatCount(int) Cat sınıfına iki statik yöntem ekleyin: int getCatCount( ) ve setCatCount (int). |
3 | 3. Sınıf Kullanımı Statik bir yöntem uygulayın double getDistance(x1, y1, x2, y2) . Noktalar arasındaki mesafeyi hesaplamalıdır. Geçen parametrenin karekökünü hesaplamak için double Math.sqrt(double a) yöntemini kullanın. |
4 | 4. ConsoleReader Sınıfı 4 statik yöntemi olan bir ConsoleReader sınıfı yazın: - Klavyeden dizeleri okumak için string readString() - sayıları klavyeden okumak için int readInt() - klavyeden kesirli sayıları okumak için çift readDouble() - void readLn () enter tuşuna basmayı beklemek için [readString() kullanın] |
5 | 5. StringHelper Sınıfı 2 statik yöntemi olacak bir StringHelper sınıfı yazın: - String multiple(String s, int count), stringin tekrarlanan sayım sürelerini döndürmelidir. - String multiple(String s), 5 kez tekrarlanan string s'yi döndürmelidir. Örnek: Amigo → AmigoAmigoAmigoAmigoAmigo |
9 Profesör, nesne statik kapsamı ve ömrü
![Eski Seviye 06 - 19](https://cdn.codegym.cc/images/article/77240abd-fb6c-4f52-a2b3-9cb326912345/1080.jpeg)
10 Temmuz
- Selam dostum! Bugün harika bir iş çıkardın. Bu yüzden sana daha fazlasını veremem. Haydi oturun, gösteri başlıyor:11 Kaptan Sincap
- Merhaba asker! - Günaydın efendim! - Size harika haberlerim var. İşte becerilerinizi pekiştirmek için hızlı bir kontrol. Bunu her gün yapın ve becerilerinizi hızla geliştireceksiniz. Görevler, Intellij IDEA'da yapılacak şekilde özel olarak tasarlanmıştır.Intellij Idea'da yapılacak ek görevler | |
---|---|
1 | Cat sınıfı ve statik değişken catCount Cat sınıfına public int catCount statik bir değişken yazın . Bir yapıcı [public Cat()] oluşturun. Bir cat (yeni bir Cat nesnesi) oluşturduğunuzda catCount statik değişkeninin 1 artmasına izin verin . 10 nesne Cat oluşturun ve catCount değişkeninin değerini görüntüleyin . |
2 | 2. Statik kediler
değişkeni oluşturmak için kod satırını kullanın: public static ArrayList<Cat> cats = new ArrayList<Cat>(); |
3 | 3. Bir statik değiştiriciyi taşıyın Kodun derlenmesi için bir statik değiştiriciyi taşıyın. |
4 | 4. Minimum sayıda statik anahtar sözcük Kodun derlenmesini ve programın başarıyla tamamlanmasını sağlamak için minimum sayıda statik anahtar sözcük ekleyin. |
5 | 5. Yeni fikirler var mı? Düşünelim...
|
6 | 6. KissMyShinyMetalAss KissMyShinyMetalAss adında bir sınıf yazın. Bu sınıftan bir nesne oluşturun, ardından ekranda görüntüleyin. |
7 | 7. Üç statik değişken adı 3 genel statik değişken yazın: String Solution.name , String Cat.name , String Dog.name |