Chúng tôi đã tạo một bản ghi ngắn với những suy nghĩ chính từ Python Junior Podcast: trong đó chúng tôi đã thảo luận về nơi bắt đầu và nơi cần đi với tư cách là nhà phát triển Python mới bắt đầu. Gần đây chúng tôi có rất nhiều nội dung dành cho cấp trung và cấp cao, nhưng tập này chắc chắn dành cho cấp dưới.

Chủ đề chính:
- Lập trình viên mới vào nghề cần rèn luyện những kiến thức gì
phát triển web? - Nhà tuyển dụng mong đợi gì từ các nhà phát triển?
- Làm gì để tìm được việc làm khi chưa có kinh nghiệm?
- Làm thế nào một nhà phát triển Python có thể phát triển?
Python Junior Podcast là podcast lập trình dành cho những ai muốn hiểu rõ hơn về Python. Chương trình phát sóng được thực hiện bởi các nhà truyền giáo cộng đồng và giáo viên khóa học .
Những người tham gia cuộc trò chuyện:
- Valentin Dombrovsky,đồng sáng lập MoscowPython
- Zlata Obukhovskaya, Trưởng nhóm NVIDIA
- Grigory Petrov, nhà truyền giáo MoscowPython
- Alexey Shtyrnyaev, nhà phát triển tại FinEx, giáo viên của các khóa học Learn
Python
Tại sao Python tốt cho phát triển web
Valentin Dombrovsky: Tại sao Python phù hợp để phát triển web? Tại sao không phải là PHP hay JavaScript chẳng hạn?
Grigory Petrov: Vì vậy không có nhiều sự lựa chọn. Mặc dù thực tế là trong Web hiện đại, bạn thực sự có thể xây dựng một ứng dụng một trang hoặc ứng dụng web lũy tiến mà không cần phần phụ trợ - hoàn toàn sử dụng công nghệ giao diện người dùng, sử dụng JavaScript - nó vẫn quá phức tạp, được lập chỉ mục kém và yêu cầu các nhà phát triển giỏi.
Nếu chúng tôi muốn tạo một trang web hoặc dịch vụ, chúng tôi sử dụng một phương pháp kết hợp: một số phần phụ trợ triển khai logic và tạo các trang web, còn một số giao diện người dùng vẽ các trang web này trong trình duyệt. Và khi chúng ta cần nhanh chóng tập hợp tất cả lại với nhau để làm một việc gì đó, chúng ta thực sự không có lựa chọn nào khác.
Hãy xem xét các lựa chọn có thể.
- NS#. Microsoft thực sự tuyệt vời, họ đã tạo ra .NET Core và đang quảng bá nó bằng mọi cách có thể. Nhưng trước hết, đây là một công nghệ đa nền tảng mới và không phải mọi thứ đều suôn sẻ ở đó. Thứ hai, nó thực sự đắt tiền, có rất ít nhà phát triển C# - đơn giản vì nó không được ưa chuộng.
- Java. Nó phức tạp lắm. Tạo một trang web bình thường bằng Java không cần tới 10 dòng mã như trong Python. Đây là rất nhiều mã, đây là các khung và bạn cần biết chi tiết cụ thể về việc thiết lập máy chủ Java. Nói chung là đau khổ dai dẳng.
- PHP. Trong các phiên bản mới nhất, nó thật tuyệt vời. Tôi thậm chí sẽ nói điều này: PHP 7.2 không tệ hơn Python. Nhưng bạn không thể chỉ chọn và sử dụng PHP 7.2. Nếu một nhà phát triển bình thường, không phải hàng đầu tạo một trang web bằng PHP, anh ta sẽ không chỉ viết bằng 7.2: anh ta vẫn sẽ phải đọc một số sách giáo khoa, hướng dẫn, có rất nhiều mã kế thừa ở khắp mọi nơi và điều này không tốt lắm.
- JavaScript và Node.js. Thật tuyệt vời và rất hiện đại khi có một ngôn ngữ ở cả front-end và back-end. Chỉ là không ổn định lắm. Node.js là một điều tốt, nhưng việc triển khai nó trong sản xuất để nó không gặp sự cố và hoạt động ổn định lại có vấn đề. Ngoài ra, nếu muốn viết mã JavaScript chất lượng, chúng ta không cần JavaScript mà là TypeScript. Nhưng TypeScript phức tạp đến không ngờ, và các nhà phát triển bình thường sẽ phải căng não khi nhìn thấy nó.
Hãy bỏ qua Ruby, Haskell, Erlang và những thứ thích hợp khác, và chúng ta chỉ còn lại... Python. Một ngôn ngữ có cú pháp nhất quán, thư viện tiêu chuẩn thống nhất, tài liệu tốt nhất, các framework nhẹ phổ biến và sự kết hợp cực kỳ phổ biến của Django.
Hóa ra, mặc dù có nhiều lựa chọn nhất, nhưng nếu chúng tôi có các nhà phát triển bình thường, không phải hàng đầu, chúng tôi là một doanh nghiệp bình thường muốn tạo ra các trang web thông thường, chúng tôi không có bộ phận phát triển cho 50 người, thì chúng tôi sẽ sử dụng Python.
Cần có kiến thức gì để bước vào nghề?
Zlata Obukhovskaya: Tôi tin rằng bạn cần biết rõ về một khung - và biết những khung khác tồn tại và khi nào chúng được sử dụng. Tornado ở đâu, Django ở đâu, Flask ở đâu, aiohttp ở đâu, v.v.
Sẽ rất hữu ích nếu biết rằng có một thứ gọi là giao thức. Đặc biệt, kiến thức về giao thức http là trọng tâm trong việc xây dựng các ứng dụng web.
Ít nhất bạn cũng cần hiểu đại khái cách thức hoạt động của giao diện người dùng trong các dự án web: HTML, CSS, JS là gì.
Alexey Shtyrnyaev: Và biết tài liệu ở đâu. Nó là quan trọng nhất.
Grigory Petrov: Ở đây chúng ta đang bước đi trên một nền đất rất rung chuyển. Nếu chúng ta không may mắn và bằng cách nào đó chúng ta bắt đầu nghiên cứu nghiêm túc về giao diện người dùng hiện đại, thì nó sẽ phức tạp hơn khoảng 10 lần so với phần phụ trợ trong Python. Một nhà phát triển mới làm quen cần hạn chế sự tập trung của mình để có thể bắt đầu học HTML, nhưng không bị lạc trong tất cả các div, span, float này, cách mọi thứ được căn chỉnh và sắp xếp.
Alexey Shtyrnyaev: Cần một khóa học Bootstrap cơ bản. Và những điều cơ bản về HTML.
Trong năm đầu tiên, bạn không nên đào sâu vào các framework JS (nếu bạn tập trung vào backend). Khóa học Bootstrap cơ bản đã có sẵn các mô-đun: nếu bạn muốn một thanh trượt, hãy tạo một thanh trượt; nếu bạn muốn một menu nổi, hãy tạo một menu nổi.
Zlata Obukhovskaya: Tôi nghĩ rằng khi nghiên cứu về giao diện người dùng, bạn có thể đắm mình, đặc biệt, vào cách cung cấp số liệu thống kê chung cho các ứng dụng web. Bằng cách này, nhà phát triển sẽ chuyển sang bắt đầu tìm hiểu về nguyên tắc hoạt động của kiến trúc ứng dụng web và cách chúng tồn tại trong sản xuất.
Grigory Petrov: Có, tôi sẽ giới thiệu nó ngay trong trường hợp bạn chọn Python làm ngôn ngữ phát triển phụ trợ và, ví dụ: Django làm khung: Django có tài liệu trong Sách Django, nó thực sự rất hay, nó chứa mọi thứ mà Zlata đã nói, cô ấy thực sự tốt cho người mới bắt đầu.
Alexey Shtyrnyaev: Một số Django Girls cũng thích hợp để bắt đầu nhanh nếu mục tiêu của bạn là học Django. Đây là một hướng dẫn mà trong một ngày bạn có thể vượt lên trên, hiểu những điều cơ bản và khả năng của khung này.
Valentin Dombrovsky: Để chuẩn bị ghi podcast, chúng tôi đã biên soạn danh sách những gì một lập trình viên Python cần để phát triển web, trong đó tóm tắt những gì chúng tôi đã nói trước đó.
Những gì được bao gồm trong những điều cơ bản để phát triển web bằng Python
- Các khung web Django, Flask, aiohttp, Tornado, v.v. (và biết về sự tồn tại của những khung khác).
- Giao thức và API: chủ yếu là http, JSON-RPC, Bộ đệm giao thức, gRPC.
- ORM và di chuyển, cơ sở dữ liệu quan hệ, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Khái niệm cơ bản về HTML, CSS, Bootstrap, cũng như các khung công tác JS và JQuery.
- Nguyên tắc hoạt động của ứng dụng trong production, testing, unit test, autotests, version control systems, git.
Đàn em có cần thuật toán không?
Zlata Obukhovskaya: Lúc đầu, bạn không cần phải biết các thuật toán, chúng sẽ dần dần xuất hiện trong đầu bạn nếu bạn tham gia phát triển đủ lâu. Tôi biết rất nhiều kỹ sư giỏi chưa từng tham gia khóa học chính thức nào về thuật toán.
Grigory Petrov: Tôi muốn đổ thêm dầu vào lửa. Sự khao khát các thuật toán của chúng ta đến từ đâu?
Hiện tại chúng tôi không có nền giáo dục cơ bản về thuật toán, chúng tôi không biết cách đào tạo lập trình viên, chúng tôi không có nền tảng kỹ thuật.
Họ đang cố gắng làm điều này, nhưng ở đây chúng ta có câu chuyện về Hogwarts: chúng ta không thể tạo ra một trường học dành cho các pháp sư trong khi chúng ta không có một pháp sư nào. Vì vậy, trường đại học nên làm gì khi đến gặp họ và hỏi: “Bắt đầu đào tạo lập trình viên,” nhưng họ không có lập trình viên, vì mọi người đều làm việc tại Mail.ru, Rambler và Yandex, họ cảm thấy tốt ở đó?
Trường đại học nhìn và nói:
- Được rồi, lập trình. Hãy tìm một số lĩnh vực kiến thức liên quan và mời các chuyên gia từ đó. Hãy mời các nhà báo có thể viết quảng cáo, các kỹ sư điện có thể tạo ra các mạch điện và các nhà toán học có thể sử dụng các thuật toán.
Cuối cùng, hóa ra điều này cũng thực tế như việc dạy vật lý hạt cho người xây dựng chỉ vì gạch và xi măng được làm từ các hạt cơ bản.
Đồng thời, họ không nói về xi măng và gạch, bởi vì nhà vật lý đang cố gắng đào tạo một người thợ xây không biết cách xây nhà. Kết quả là, chúng tôi có được một người xây dựng có thể mô tả hoàn hảo cách "xi măng hoạt động", nhưng chưa bao giờ nhìn thấy nó và không biết cách làm bất cứ thứ gì từ nó.
Các thuật toán và cấu trúc dữ liệu rất tốt, nhưng đây là lĩnh vực ứng dụng rất nhỏ. Chúng rất cần thiết, chẳng hạn như nếu bạn đang viết công cụ trò chơi, trình biên dịch hoặc giao thức mạng.
Hầu hết các lập trình viên giải quyết các vấn đề kinh doanh không cần đến thuật toán và cấu trúc dữ liệu.
Toán học khó nhất ở đó là phép cộng hai lần rồi chia. Nó đòi hỏi kiến thức hoàn toàn khác nhau. Giải quyết các vấn đề kinh doanh chủ yếu đòi hỏi kiến thức ứng dụng hơn là kiến thức cơ bản.
Tốt hơn hết là một nhà phát triển mới làm quen nên hiểu biết về kinh doanh và cách lắp ráp chính xác và nhanh chóng các cấu trúc cần thiết từ các khối làm sẵn, cách gỡ lỗi, cách đảm bảo chúng không bị vỡ, biết lý do tại sao chúng bị vỡ, Điều gì sẽ xảy ra khi các yêu cầu thay đổi và chương trình bắt đầu “lắp đặt trên nền móng” giống như một ngôi nhà sau cơn mưa.
Đây là những điều thực tế và sự hiểu biết về cách viết phần mềm. Anh ta cần biết rằng ngoài trình gỡ lỗi, anh ta còn có một bộ công cụ sẽ hiển thị chính xác nơi chương trình đang chậm lại.
Valentin Dombrovsky: Tôi chợt nảy ra sự so sánh này: đây là bản dịch từ ngôn ngữ kinh doanh sang ngôn ngữ mà bạn có thể giao tiếp với máy tính. Nghĩa là, lập trình viên là một loại nhà ngôn ngữ học cụ thể.
Grigory Petrov: Kinh doanh cần một nhà văn, không phải một nhà ngôn ngữ học. Người viết không cần biết tại sao từ ngàn năm trước lại biến thành chữ này. Anh ấy cần có khả năng áp dụng những lời này.
Những gì bạn cần để tìm được công việc đầu tiên với tư cách là một nhà phát triển
Alexey Shtyrnyaev: Có lẽ không có một công thức chung nào về cách nấu cơm cho trẻ em.
Nếu bạn đến một công ty nào đó, họ sẽ thuê bạn không phải vì bạn biết Django, JSON và một vài thuật toán. Rất có thể bạn sẽ được thuê vì những kỹ năng mà công ty này cần ở đây và ngay bây giờ.
Có rất nhiều công ty và tất cả họ đều có những yêu cầu khác nhau. Không có lượng kiến thức phổ quát nào cần phải có để chuẩn bị thêm cho sơ yếu lý lịch và đi tìm việc làm.
Grigory Petrov: Khi chúng tôi ở VoxImplant đang tìm kiếm một số kỹ sư, giám đốc kỹ thuật của chúng tôi đã đưa ra yêu cầu cơ bản như sau: một người phải có khả năng giải quyết vấn đề. Rõ ràng là không phải lúc nào học sinh cũng làm việc này một cách hiệu quả, không phải theo cách tốt nhất và không phải lúc nào cũng chính xác, nhưng lý tưởng nhất là bạn giao cho một người một nhiệm vụ, anh ta sẽ cố gắng và giải quyết nó. Đây là kỹ năng mà các nhà tuyển dụng chủ yếu tìm kiếm.
Zlata Obukhovskaya: Những người đang tìm việc ở các lĩnh vực khác có một số lợi thế về mặt kinh doanh vì họ đã đi được một chặng đường nào đó và có thể giải quyết vấn đề một cách nhanh chóng. Đây là những kỹ năng mềm, thậm chí tôi còn gọi đó là văn hóa làm việc. Thông thường, sinh viên tốt nghiệp đại học vẫn chưa phát triển được văn hóa làm việc này.
Nhưng tôi vẫn muốn thử đưa ra một số công thức nấu ăn cho người mới bắt đầu.
Những bước đầu tiên dành cho nhà phát triển mới vào nghề
Zlata Obukhovskaya: Đầu tiên là đây vẫn là một loại dự án nào đó của riêng bạn, bởi vì bạn cần viết điều gì đó trong sơ yếu lý lịch của mình và hiển thị một danh mục đầu tư tối thiểu. Sẽ tuyệt vời hơn khi những dự án này không được thực hiện cho chính bạn mà là một dự án tự do - cho ai đó.
Sau những dự án đầu tiên, bạn đã có thể tạo sơ yếu lý lịch và gửi đến tất cả các công ty có vị trí trong tháng Sáu. Các cuộc phỏng vấn sẽ cung cấp cái nhìn sâu sắc về những gì công ty cần. Sớm hay muộn sẽ có người thuê bạn, ít nhất là ở một công ty nhỏ. Sau đó, kinh nghiệm làm việc này sẽ cho bạn cơ hội được nhận vào một công ty lớn hơn và thú vị hơn.
Valentin Dombrovsky: Nhân tiện, trong các khóa học của chúng tôi, chúng tôi chuẩn bị cho sinh viên thực hiện dự án của riêng mình trong vòng 10 tuần đào tạo. Ngoài ra, chúng tôi còn đào tạo kỹ năng phát triển nhóm. Đây chính xác là những kỹ năng mềm mà Zlata đã nói đến.
Alexey Shtyrnyaev: Theo kinh nghiệm của tôi, tôi có thể nói với bạn rằng có thể mất rất nhiều thời gian để tìm kiếm công việc đầu tiên của bạn. Khi bạn đang tìm kiếm một hoặc hai tháng, điều đó là bình thường. Nếu bạn gửi sơ yếu lý lịch của mình cho tất cả các công ty, đi phỏng vấn, trong tháng thứ ba bạn chắc chắn sẽ tìm được điều gì đó.
Valentin Dombrovsky: Bạn có thể cắt các dự án của riêng mình hoặc đảm nhận các dự án tự do đơn giản, đồng thời gửi sơ yếu lý lịch của bạn.
Nhà phát triển Python có triển vọng gì?
Zlata Obukhovskaya: Một nhà phát triển Python có thể đi bất cứ đâu. Bạn có thể tham gia thử nghiệm và tiếp tục phát triển thành kiến trúc sư cấp cao. Hoặc thậm chí vào quản lý. Có nhiều loại người quản lý kỹ thuật khác nhau và bạn có thể phát triển lên vị trí quản lý cấp cao. Bạn có thể phát triển về khoa học dữ liệu, DevOps, tham gia thử nghiệm tự động hoặc học máy.
Valentin Dombrovsky: Nói chung, có rất nhiều lựa chọn và cơ hội, bao gồm cả các khóa học của chúng tôi. Bạn không cần nhiều kiến thức ở đầu vào, nhưng sau đó bạn nên bao quát phạm vi rộng hơn, vì càng có nhiều kiến thức thì càng tốt cho bạn.
***
Đây chỉ là một phần của việc phát hành . Phiên bản đầy đủ của tập phim đã có sẵn .
Hoặc thậm chí nhìn:

Cảm ơn đã đọc, nghe hoặc xem.
Nguồn: www.habr.com
