Aynen, ben de tavsiye ediyorum. Bu tavsiyeye elimden geldiğince uymak benim de kalıcı olarak birşeyler öğrenmeme vesile oldu. Yoksa nette bulduğum bir çok kursu bitirdiğimde bir süre sonra akılda kalan birşey olmadığını deneyimledim. Fakat projeler yapıp bilgisayarınızda, github ya da gitlab hesabınızda arşivledikçe birşeyler daha anlamlı ve kalıcı olmaya başlıyor.
İlle de özgün bir fikir üzerinden proje geliştirmek zorunda değilsiniz. Özgün olan elbetteki daha kıymetlidir fakat ilk etapta kendinizi geliştirmek için asıl önemli olan proje geliştirme sürecini deneyimlemenin ta kendisi.
Hobi amaçlı olarak yaptığım birkaç küçük projede “sıfırdan ileri seviyeye” şeklinde başlık attıkları kursların verdiklerinden daha çok şeyi daha kalıcı öğrenmek nasib oldu.
Geçen yıllarda forumda @aib ile parolayı telefonda güvenli saklama üzerine bir başlık açıp konuşma fırsatı bulmuştuk. Bana Android sistemindeki sandbox yapısından bahsetmişti. Problem durumum şuydu, artık yaşlı kabul edilebilecek anne ve babam sürekli e-devlet, e-mail, TC kimlik, telefon, banka uygulaması vb birçok şifrelerini/bilgilerini unutuyorlar ve bana soruyorlar. Ben ise kafamda tutamamaya başlayınca çözüm arayışı içine girdim. Google Keep Notlar gibi bir uygulamaya yazmak güvensiz geldi. Playstore’da bu işi yapacak çok fazla iyi uygulama var fakat kimi ücretli, kimi reklamlı, dahası kodlarını yazan kimdir/kim bilir ne yazmıştır diye yine güvensiz geldi (daha doğrusu canım kaşındı, kendime eğlenceli iş çıkarayım dedim). Hobi olarak boş zamanlarımda ufak ufak yazmaya başladım. Şu an sona yakınım fakat bu küçük ve özgün olmayan projede birçok yeni şey öğrendim;
- Sandbox mantığında uygulamaya özel çalışma alanı var, buraya zaten diğer uygulamalar erişemiyor, aynı şekilde sizin uygulamanız da diğer uygulamaların çalışma alanına erişemiyor. Fakat root yetkisine sahip bir uygulama başka uygulamanın alanına erişebiliyor(muş)
- Android işletim sisteminde * keystore denen bir yapı varmış ve burası özel anahtarları saklamak için tasarlanan, * hem yazılımsal hem de donanım seviyesinde koruma katmanı sağlayan bir yapıymış. Burada saklanan key’i, key’i oraya koyan uygulama kullanabiliyor. Cihaz rootlansa bile, root yetkisi olan başka biri yada başka uygulama erişemiyor. Uygulama burada saklanan keyi kullanarak veriyi sifreleyip veri tabanına kaydediyor, aynı şekilde buradaki keyi kullanarak veri tabanından aldığı bilginin şifresini çözüp gösteriyor.
- Uygulamayı geliştirirken tıkandığım bir yerde, kullandığım framework’u geliştirenlerin github kodlarını inceleyip bazı sınıfları override yapmak zorunda kaldım. Bu sayede istediğim şeyi başarabildim.
- * Lottiefiles diye bir animasyon ortamı varmış. Vektörel animasyon tasarlanabiliyormuş. Birçok platform özellikle lottie animasyonlarını destekliyormuş
- Android Java sınıflarına erişebilmek için pyjnius denen araçtan faydalanmayı tecrübe etmiş oldum.
- Geliştirme sürecinde uygulamayı yükleyip denemesini istediğim kişilerin geri dönütlerinden UI/UX mevzusunun ne kadar önemli olduğunu keşfetmiş oldum
- * Google material design denen tasarım prensiplerini biraz daha keşfetmiş oldum
- “Bir Label metni içinde ikon nasıl gösterilebilir“ diye interneti karıştırırken ikonlardan oluşan fontlar olduğunu öğrenmiş oldum
- vs vs
Daha birçok şey var yazmaya eriniyorum. Bu öğrendiğim kıymetli bilgileri hobi amaçlı olarak gerçek bir hayat problemimi çözmeye çalışmak için basit bir şifre/kıymetli bilgi tutma uygulaması projesi geliştirirken kazandım. Bunları kurslarda anlatmıyorlar. Bir projeye daldığında karşınıza çıkan problemler/ihtiyaçlar neticesinde öğrenmek zorunda kalıyorsunuz. Başka bir amatör hobi projemde çok daha kıymetli şeyler öğrenmek zorunda kaldım.
Lafı uzattım özür dilerim, tek amacım @ismailarilik kardeşinizin söylediği “proje yapın” önerisinin ne kadar önemli olduğunu gerçek örnek vererek ortaya koymak.
Siz de kendinizin ya da çevrenizdeki bir problemi çözecek bir proje yapmaya başlayabilirsiniz. Vakit kaybetmeden başlayın. Yapay zekayı kullanırken dikkatli olun. Öğreneyim derken işi ona yaptırıp seyirci kalmayın. Dokümantasyon tarama, dokümantasyon Türkçeleştirme, basit ya da başlangıç kod örneği verme vb şeyler için gayet faydalı olabiliyor.