FRONTEND KAPSAM
Yazılım Geliştiriciler Teknolojik Baskıyı Nasıl Aşabilir ?
Bu yazı benim daha önceden yazmış olduğum Teknoloji’nin Geliştiriciler Üzerine Baskısı yazıma bir çözüm arayışı çabasıdır.
Jim Collins İyi den Mükemmel Şirkete Kitabından Alıntıdır
Konferans’ta bu kitap ile ilgili sunum yaparken bir kişi kalkıp,
“Bulgularınız yeni ekonomiye uyuyor mu ?” diye sorar.
O da “Evet dünya değişmeye devam ediyor ve değişmeyede devam edecek ama bu demek değildir ki ölümsüz ilkeleri aramaktan vazgeçelim. Şöyle düşünelim Mühendislik sürekli değişirken fiziğin kanunları sürekli yaptığımız şeyi, ebedi ilkeleri, dünya ne kadar değişirse değişsin hep kalıcı olacak olan şeyi, mükemmel şirketlerin fiziğini aramak olarak düşünmek hoşuma gidiyor. Evet belli bir alanda uygulama değişecektir(mühendislik) ama insan performansına dair değişmez yasalar (fizik) hep aynı kalacaktır.
Bu konuyu aynen bu yazıya uygulayabiliriz. Evet çevremizdeki teknoloji ve ekosistem çok hızlı değişiyor ama bazı ilkeler edinerek bunlara çok hızlı adapte olabilir, veya bu değişimlerden çok az etkilenerek yolumuza devam edebiliriz.
Burada kendi deneyimlerimden veya çevremde gördüklerimden bir takım çıkarımlar yaparak konuyu anlatmaya çalışacağım.
- İngilizce en önemli konulardan birisi yurt dışında teknoloji ile ilgili bir sürü kaynak bulunuyor, bu kaynaklardan faydalanabilmek için okuduğun blog postu, dinlediğin podcast veya izlediğin bir video anlayabiliyor olman gerekir.
- Bir şeyleri dil olarak Türkçesini anlıyor olman o kavramları, konuları anladığın anlamına gelmiyor tabi, çünkü beynin o kavramları kavraması için bir takım gerçek örneklemeler ihtiyacın var. Burda devreye en basitinden sandbox, playground çalışmalarını deneyebileceğin küçük örnekler ve projeler ile konuları daha iyi bir şekilde anlamaya çalışmalısın. Örneğin her bilgisayarda poc(proof of concept) ve samples klasörlerim olur.
- Üniversiteden çıktığımızda bir çok konuda ders almış oluyoruz, örneğin Algoritma, Veritabanı, Network, Linear Cebir, Mantık, İşletim Sistemi, Veri Yapıları, Object Oriented Programming, Programlama Dillleri , Bilgisayar Grafikleri, Tasarım Örüntüleri vs.. vs… Bu derslere ne kadar katılım gösterirsek gösterelim bunları Gerçek Projelerde, Ekip içerisinde geliştirmez ise bu konuları gerçekten öğrenemez. Bu konuda aşağıdaki söz bence çok önemli
Real learning is not memorizing knowledge. It’s understanding and knowing how to use and find knowledge. Learning is what you do with knowledge, how you integrate it, how you talk to your family, friends and classmates about it. That’s what learning is. (Dennis Littky)
Bilgiyi ezberlemek sizi bir yerlere götürmüyor, derslerde aldığınız bilgiler siz dışarıya çıkıp kullanmıyorsanız projelerinizde test etmiyorsanız, boşu boşuna bilgiler olarak durur ve temelleri de olmadığı için ne zaman hangi durumda kullanacağınızı bilemezsiniz. Neyi nerde kullanacağınızı bilmediğiniz bilgide öğrenilmiş olmaz.
O zaman temelleri sağlam atabilmek için aldığımız eğitimlerdeki konuları gerçek projelerde deneyimleyin.
4. Kendimi şanslı gördüğüm nokta genelde Türkiye koşullarında iyi ekiplerde çalışma imkanı buldum. Bu çok önemli özellike yeni mezun iken size yol gösteren büyükleriniz olması veya projelerde sizi zorlayan meydan okuyan işlerin olması çok çok önemli. Bu işler sizi pişirecek ve geliştirecektir.
5. Problemleri kendiniz çözmeye çalışın, Problem çözme yöntemini kendiniz geliştirin. Problem çözmek stackoverflow veya blog post içerisinden size yeten kısmı alıp kopyala-yapıştır olmamalı, bunu zaman kısıtıdan yapabilirsiniz ama aynı zamanda altındaki teknolojiyi, konuyu ve kavramları araştırıp anlamaya çalışın, Çevrenize hızlı gözüküyor olmanız bir süre size avantaj sağlar ama sonrasında (uzun yılllar) sonra kendinizi bomboş hissedebilirsiniz.
6. Sürekli sektör/domain değiştirip hep aynı seviyede işler yapmak, Örneğin kendimden örnek verirsem Askeri sektör, Oyun, Sosyal Medya, Telekomünikasyon, Kamu, Banka, Sigorta, Karar Destek Sistemleri, ARGE, Observability bir çok alanda çalıştım. Benim şansım ne kadar farklı alanlarda çalışırsam çalışayım genelde UI ve App geliştirme alanında projelerin hep başından 0'dan itibaren yaparken katılmam oldu.
- Bu alanlarda çalışırken Infra (altyapı), (SRE & DevOps) ekinin geliştirdiği soyutlamanın arkasında kalıp sürekli bu soyutlamalar arkasında Business/Domain kodluyorsanız birde Workflow ve Rule script ile bir engine tanımlıyorsanız bu altyapıları öğrenme sanşınız yok. Şirketler bunu her ne kadar soyutlarak daha hızlı ve daha az hataya açık kodlar geliştirmek istese bile , şirketinizden altyapıları size sürekli anlatmalarını isteyin, hatta zaman zaman bu altyapılarda kod geliştirmeyi talep edin.
7. Tek bir konuya odaklanıp onun tüm detaylarını öğrenmeye çalışarak derinlere inmeye çalışın. Standartları, temel mekanikleri öğrenmeye çalışın. Örneğin UI konusunda Teknoloji’nin Geliştiriciler Üzerine Baskısı yazımda bir çok değişken teknolojiden bahsettim ama bunun yanında UI değişmeyen temel ilkeleride bulunur. Temel çalışma prensipleri ve mekanikleri eğer bu konuları kendi alanınızda öğrenebilirseniz yeni çıkan herhangi bir teknolojiye adapte olmanız oldukça kolay olacaktır. Örneğin UI ile ilgili aşağıdaki konular çıkan teknolojiden bağımsızdır. Her işte benzer değişmeyen temel ortak noktaları öğrenmeye çalışın.
- Standartlar (HTTP, HTML, CSS, … vb)
- UI çalışma Mekanikleri (Ekran verilerini al, Validate Et, Kaydet vs.. )
- Renk Uyumları, Layout yapıları vs..
- Farklı farklı ortamlarda çalışma gereklerini anlama (Desktop, Mobil, Tablet …)
- Tasarım Örüntüleri
8. Teknoloji daha iyi şekilde öğrenmek için Tarihçesini anlamaya çalışın. Bu teknoloji öncesinde sırası ile hangi teknolojiler çıktı hangi kütüphane, hangi özellik neden çıktı, hangi problemi karşılamak için çıktı. Ben bunu yazılarımda özellikle vurguluyorum örneğin, kendi kendime de bu şekilde bağlantılar kurarak kafamda tutmaya çalışıyorum. Tarihsel bağlantı.
- JS Tarihçesi yazı grubunda ES5 ve sonrasında çıkan her yeni gelişmenin aslında arka planda hangi ihtiyaçtan kaynaklandığını anlatmaya çalışıyorum
- Fonksiyonel Programlamanın Tarihi gelişiminde bu bağlantıları anlatmaya çalışıyorum
- UI Bileşenleri nasıl Evrimleşti yazımda bu UI bileşenlerinin tarihi gelişimini anlamaya çalışıyorum
- Mimari Örüntülerde Monolitik Yapı, SOA, Microservice, Microfrontends, Severless vb.. konuları bir arada işleyerek tarihi Örüntü gelişimini anlatmaya çalışıyorum.
Özetle Neden — Sonuç ilişkisini Teknolojide kurabilirseniz. Bu teknolojik geliştirmeleri neden yaptıları anlarsanız, teknolojik adaptasyonunuz o kadar hızlı olur.
Okumaya Devam Et 😃
Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.