Python Junior Podcast'indeki ana düşünceleri içeren kısa bir transkript hazırladık: burada başlangıç düzeyindeki bir Python geliştiricisi olarak nereden başlayacağımızı ve nereye gideceğimizi tartıştık. Son zamanlarda orta ve yaşlılar için çok fazla içeriğimiz var ama bu bölüm kesinlikle gençlere yönelik.

Ana konular:
- Acemi bir programcının hangi bilgiyi uygulaması gerekir?
web Geliştirme? - İşverenler geliştiricilerden ne bekliyor?
- Deneyimsiz iş bulmak için ne yapmalı?
- Bir Python geliştiricisi nasıl gelişebilir?
Python Junior Podcast, Python'u daha iyi anlamak isteyenler için bir programlama podcast'idir. Yayınlar topluluk evanjelistleri tarafından yürütülüyor ve kurs öğretmenleri .
Konuşmaya katılanlar:
- Valentin Dombrovski,MoskovaPython'un kurucu ortağı
- Zlata Obukhovskaya, NVIDIA ekip lideri
- Grigori Petrov, Evangelist MoskovaPython
- Alexey Shtyrnyaev, FinEx'te geliştirici, Learn kursları öğretmeni
Python
Python neden web geliştirme için iyidir?
Valentin Dombrovsky: Python neden web geliştirmeye uygundur? Örneğin neden PHP veya JavaScript olmasın?
Grigory Petrov: Yani pek fazla seçenek yok. Modern Web'de aslında tek sayfalı bir uygulama veya arka uç olmadan aşamalı bir web uygulaması oluşturabilmenize rağmen - yalnızca ön uç teknolojileri kullanarak, JavaScript kullanarak - hala çok karmaşıktır, zayıf şekilde dizine eklenmiştir ve harika geliştiriciler gerektirir.
Bir web sitesi veya hizmet yapmak istiyorsak, birleşik bir yaklaşım kullanırız: Bazı arka uçlar mantığı uygular ve web sayfaları oluşturur, bazı ön uçlar ise bu web sayfalarını tarayıcıda çizer. Ve hepsini hızlı bir şekilde bir şey üzerinde bir araya getirmemiz gerektiğinde, aslında başka seçeneğimiz yok.
Olası seçeneklere bakalım.
- C#. Microsoft gerçekten harika, .NET Core'u yaptılar ve onu mümkün olan her şekilde tanıtıyorlar. Ancak öncelikle bu yeni bir platformlar arası teknoloji ve orada henüz her şey yolunda değil. İkincisi, gerçekten pahalıdır, çok az C# geliştiricisi vardır - bunun nedeni popüler olmamasıdır.
- Java. Karmaşık. Java'da normal bir web sitesi oluşturmak, Python'da olduğu gibi 10 satır kod gerektirmez. Bu çok fazla kod, bunlar çerçeveler ve Java sunucularını kurmanın ayrıntılarını bilmeniz gerekiyor. Genel olarak sürekli acı ve ıstırap.
- PHP. En son sürümlerde harika. Hatta şunu da söyleyeyim: PHP 7.2 Python'dan daha kötü değil. Ancak PHP 7.2'yi alıp kullanamazsınız. Sıradan, en iyi geliştirici olmayan bir geliştirici PHP'de bir web sitesi yaparsa, yalnızca 7.2'de yazmayacaktır: yine de bazı ders kitaplarını, öğreticileri okumak zorunda kalacak, her yerde çok sayıda eski kod var ve bu pek iyi değil.
- JavaScript ve Node.js. Hem ön uçta hem de arka uçta tek bir dilin olması harika ve çok moderndir. Sadece pek istikrarlı değil. Node.js iyi bir şey ama çökmemesi ve stabil çalışması için onu üretimde dağıtmak sorunlu. Ayrıca kaliteli JavaScript kodu yazmak istiyorsak JavaScript'e değil TypeScript'e ihtiyacımız var. Ancak TypeScript beklenmedik derecede karmaşıktır ve ortalama bir geliştiricinin beyni bunu gördüğünde kaynar.
Ruby, Haskell, Erlang ve diğer niş şeyleri bir kenara bırakalım ve elimizde Python kalsın. Tutarlı sözdizimine, tek tip bir standart kütüphaneye, en iyi belgelere, popüler hafif çerçevelere ve çok popüler Django'ya sahip bir dil.
En geniş seçeneğe rağmen, en iyi geliştiricilere değil de sıradan geliştiricilere sahipsek, sıradan web siteleri yapmak isteyen sıradan bir işletmeyiz, 50 kişilik bir geliştirme departmanımız yok, o zaman Python'u alıyoruz.
Mesleğe girmek için hangi bilgilere ihtiyaç vardır?
Zlata Obukhovskaya: Bir çerçeveyi iyi bilmeniz ve diğerlerinin ne olduğunu ve bunların ne zaman kullanıldığını bilmeniz gerektiğine inanıyorum. Tornado nerede, Django nerede, Flask nerede, aiohttp nerede vb.
Protokol diye bir şeyin olduğunu bilmek faydalı olacaktır. Özellikle http protokolü bilgisi, web uygulamaları oluşturmanın merkezinde yer alır.
Ayrıca web projelerinde ön ucun nasıl çalıştığını en azından kabaca anlamanız gerekir: HTML, CSS, JS nedir.
Alexey Shtyrnyaev: Ve belgelerin nerede olduğunu bilin. Bu çok önemli.
Grigory Petrov: Burada çok kaygan bir zemine basıyoruz. Şanssızsak ve bir şekilde modern ön ucu ciddi şekilde incelemeye başlarsak, o zaman bu Python'daki arka uçtan yaklaşık 10 kat daha karmaşık olacaktır. Acemi bir geliştiricinin HTML öğrenmeye başlayabilmesi ancak tüm bu div'ler, aralıklar, kayan noktalar, her şeyin nasıl hizalandığı ve sıralandığı arasında kaybolmaması için odağını sınırlaması gerekir.
Alexey Shtyrnyaev: Temel bir Bootstrap kursuna ihtiyacınız var. Ve HTML'nin temelleri.
İlk yılda JS çerçevelerine dalmamalısınız (eğer arka uca odaklanıyorsanız). Temel Bootstrap kursunda zaten hazır modüller bulunmaktadır: kaydırıcı istiyorsanız kaydırıcı yapın; kayan menü istiyorsanız kayan menü yapın.
Zlata Obukhovskaya: Ön uç üzerinde çalışırken, özellikle statiğin web uygulamalarına genel olarak nasıl verildiğine kendinizi kaptırabileceğinizi düşünüyorum. Böylece geliştirici, web uygulamaları mimarisinin prensipte nasıl çalıştığını ve üretimde nasıl yaşadıklarını öğrenmeye başlamak için sorunsuz bir şekilde ilerlemeye başlar.
Grigory Petrov: Evet, arka uç geliştirme dili olarak Python'u ve örneğin çerçeve olarak Django'yu seçmeniz durumunda hemen bunu önereceğim: Django'nun Django Kitabında belgeleri var, gerçekten harika, Zlata'nın söylediği her şeyi içeriyor, gerçekten yeni başlayanlar için iyi.
Alexey Shtyrnyaev: Amacınız Django'yu öğrenmekse, bazı Django Kızları hızlı bir başlangıç için de uygundur. Bu, bir gün içinde en üst aşamaya geçebileceğiniz, temelleri ve çerçevenin neler yapabileceğini anlayabileceğiniz bir eğitimdir.
Valentin Dombrovsky: Podcast'i kaydetmeye hazırlanırken, daha önce söylediklerimizi özetleyen bir Python programcısının web geliştirme için neye ihtiyaç duyduğunun bir listesini derledik.
Python'da web geliştirmenin temellerine neler dahildir?
- Web çerçeveleri Django, Flask, aiohttp, Tornado, vb. (ve diğerlerinin varlığından haberdar olun).
- Protokoller ve API'ler: öncelikle http, JSON-RPC, Protokol Tamponları, gRPC.
- ORM ve geçişler, ilişkisel veritabanları, SQLAlchemy, SQL, PostgreSQL, MySQL.
- HTML, CSS, Bootstrap'in yanı sıra JS çerçeveleri ve JQuery'nin temelleri.
- Üretimde uygulama işleminin ilkeleri, test etme, birim testleri, otomatik testler, sürüm kontrol sistemleri, git.
Gençlerin algoritmalara ihtiyacı var mı?
Zlata Obukhovskaya: İlk başta algoritmaları bilmenize gerek yok; yeterince uzun süre geliştirmeyle meşgul olursanız, bunlar yavaş yavaş kafanızda belirecektir. İyi bir resmi algoritma kursu almamış bir sürü iyi mühendis tanıyorum.
Grigory Petrov: Ateşe yakıt eklemek istiyorum. Algoritma tutkumuz nereden geliyor?
Şu anda algoritma konusunda temel bir eğitimimiz yok, programcı yetiştirmeyi bilmiyoruz, teknik altyapımız yok.
Bunu yapmaya çalışıyorlar ama karşımızda Hogwarts'ın hikayesi var: Tek bir büyücümüz yokken büyücüler için bir okul oluşturamıyoruz. Bu nedenle, bir üniversite onlara gelip "Programcı yetiştirmeye başlayın" diye sorduğunda ne yapmalıdır, ancak programcıları yok çünkü herkes Mail.ru, Rambler ve Yandex'de çalışıyor, orada kendilerini iyi hissediyorlar mı?
Üniversite bakar ve şöyle der:
- Tamam programlama. İlgili bazı bilgi alanlarını bulalım ve oradan uzmanları davet edelim. Metin yazabilen gazetecileri, elektrik devreleri yapabilen elektrik mühendislerini, algoritma kullanabilen matematikçileri davet edelim.
Sonunda bunun, tuğla ve çimento temel parçacıklardan oluştuğu için bir inşaatçıya parçacık fiziğini öğretmek kadar pratik olduğu ortaya çıktı.
Aynı zamanda çimento ve tuğladan da bahsetmiyorlar çünkü inşaatçı yetiştirmeye çalışan fizikçi nasıl ev inşa edileceğini bilmiyor. Sonuç olarak, "çimentonun nasıl çalıştığını" mükemmel bir şekilde tanımlayabilen, ancak onu hiç görmemiş ve ondan nasıl bir şey yapılacağını bilmeyen bir inşaatçı elde ediyoruz.
Algoritmalar ve veri yapıları çok iyi ama bu çok küçük bir uygulama alanı. Örneğin bir oyun motoru, derleyici veya ağ protokolü yazıyorsanız bunlara acilen ihtiyaç vardır.
Çoğu programcı, algoritmalara ve veri yapılarına ihtiyaç duyulmayan iş sorunlarını çözer.
Buradaki en zor matematik iki kere toplayıp sonra bölmektir. Tamamen farklı bir bilgi gerektirir. İş sorunlarını çözmek, temel bilgiden ziyade esas olarak uygulamalı bilgi gerektirir.
Acemi bir geliştiricinin iş anlayışına sahip olması ve gerekli yapıların hazır bloklardan nasıl doğru ve hızlı bir şekilde monte edileceği, bunların nasıl hata ayıklanacağı, parçalanmamalarından nasıl emin olunacağı, neden parçalandıklarını bilmek daha iyidir. gereksinimler değişince ve program yağmurdan sonra bir evin "temeline oturmaya" başladığında ne olur?
Bunlar pratik şeyler ve yazılımın nasıl yazılacağına dair bir anlayıştır. Hata ayıklayıcıya ek olarak programın tam olarak nerede yavaşladığını gösterecek bir dizi araca sahip olduğunu bilmesi gerekiyor.
Valentin Dombrovsky: Aklıma şu benzetme geldi: İş dilinden bilgisayarla iletişim kurabileceğiniz bir dile çeviri bu. Yani programcı bir tür spesifik dilbilimcidir.
Grigory Petrov: İşletmenin bir dilbilimciye değil, bir yazara ihtiyacı vardır. Yazarın bin yıl önce bu kelimenin neden buna dönüştüğünü bilmesine gerek yok. Bu sözleri uygulayabilmesi gerekiyor.
Geliştirici olarak ilk işinizi bulmak için neye ihtiyacınız var?
Alexey Shtyrnyaev: Muhtemelen Junior'ın nasıl pişirileceğine dair evrensel bir tarif yoktur.
Bir şirkete gelirseniz sizi Django, JSON ve birkaç algoritma bildiğiniz için işe almazlar. Büyük ihtimalle bu şirketin burada ve şimdi ihtiyaç duyduğu beceriler için işe alınacaksınız.
Pek çok şirket var ve hepsinin farklı gereksinimleri var. Daha fazla özgeçmiş hazırlamak ve iş bulmak için edinilmesi gereken bu kadar evrensel miktarda bilgi yoktur.
Grigory Petrov: Biz VoxImplant'ta birkaç mühendis ararken teknik direktörümüz temel gerekliliği şu şekilde formüle etti: Bir kişi sorunları çözebilmelidir. Bir gencin bunu her zaman etkili bir şekilde, en iyi şekilde ve her zaman doğru şekilde yapamayacağı açıktır, ancak ideal olarak bir kişiye bir görev verirseniz, o onu zorlar ve çözer. Bu, işverenlerin öncelikli olarak aradığı beceridir.
Zlata Obukhovskaya: Başka alanlarda iş arayan insanlar iş açısından bazı avantajlara sahipler çünkü zaten bir yol kat etmişler ve sorunları hızlı bir şekilde çözebiliyorlar. Bunlar sosyal beceriler, hatta çalışma kültürü bile diyebilirim. Çoğu zaman üniversite mezunları bu çalışma kültürünü henüz geliştirememişlerdir.
Ama yine de yeni başlayanlara bir çeşit tarif vermeyi denemek isterim.
Acemi bir geliştirici için ilk adımlar
Zlata Obukhovskaya: Birincisi, bunun hala kendinize ait bir proje olması, çünkü özgeçmişinize bir şeyler yazmanız ve minimal bir portföy göstermeniz gerekiyor. Bu projelerin kendiniz için değil, birisi için serbest bir proje olarak yapılması daha havalı.
İlk projelerden sonra zaten bir özgeçmiş hazırlayıp Haziran pozisyonlarının bulunduğu tüm firmalara gönderebilirsiniz. Röportajlar şirketlerin neye ihtiyaç duyduğuna dair fikir verecektir. Er ya da geç birisi sizi en azından küçük bir şirkette işe alacak. Daha sonra bu iş deneyimi size daha büyük ve daha ilginç bir şirkete girme fırsatı verecektir.
Valentin Dombrovsky: Bu arada kurslarımızda öğrencileri 10 haftalık eğitim içerisinde kendi projelerini yapmaya hazırlıyoruz. Ayrıca ekip geliştirme becerilerini geliştiriyoruz. Bunlar tam da Zlata'nın bahsettiği sosyal beceriler.
Alexey Shtyrnyaev: Deneyimlerime dayanarak söyleyebilirim ki, ilk işinizi aramanız çok uzun zaman alabilir. Bir veya iki ay aradığınızda bu normaldir. Özgeçmişinizi tüm şirketlere gönderirseniz, görüşmelere giderseniz, üçüncü ayda mutlaka bir şeyler bulacaksınız.
Valentin Dombrovsky: Kendi projelerinizi kesebilir veya basit serbest projeler üstlenebilir ve aynı zamanda özgeçmişinizi gönderebilirsiniz.
Bir Python geliştiricisinin ne gibi beklentileri var?
Zlata Obukhovskaya: Bir Python geliştiricisi her yere gidebilir. Teste girebilir ve kıdemli bir mimar olarak gelişmeye devam edebilirsiniz. Hatta yönetime bile girebilirim. Farklı teknik yönetici türleri vardır ve üst düzey yönetime kadar büyüyebilirsiniz. Veri biliminde, DevOps'ta gelişebilir, otomatik testlere veya makine öğrenimine geçebilirsiniz.
Valentin Dombrovsky: Genel olarak kurslarımız da dahil olmak üzere birçok seçenek ve fırsat var. Girişte çok fazla bilgiye ihtiyacınız yok, ancak daha sonra daha geniş bir yelpazeyi kapsamanız tavsiye edilir, çünkü ne kadar çok bilgi sahibi olursanız sizin için o kadar iyi olur.
***
Bu, sürümün yalnızca bir kısmı . Bölümün tam versiyonu mevcut .
Hatta şuna da bakın:

Okuduğunuz, dinlediğiniz veya izlediğiniz için teşekkürler.
Kaynak: habr.com
