Về vai trò của nhiệm vụ kiểm thử trong cuộc đời của một nhà phát triển

Bạn đã có bao nhiêu cuộc phỏng vấn kỹ thuật trong đời?

Trong 35 năm qua, tôi đã tham dự XNUMX cuộc phỏng vấn kỹ thuật thuộc mọi loại hình và đặc điểm cụ thể có thể tưởng tượng được - từ các công ty khởi nghiệp ở Kazakhstan để mua thịt tập thể cho mùa đông đến các ngân hàng và dịch vụ fintech của Đức và Mỹ; tập trung vào lập trình, phân phối và quản lý; từ xa và trong văn phòng; có giới hạn và không giới hạn về thời gian; căng thẳng và thoải mái, bằng các ngôn ngữ khác nhau.

Điều này, cùng với ~20 cuộc phỏng vấn mà tôi tự thực hiện với tư cách là một nhà tuyển dụng - một con số đủ để tôi trở thành vua của các cuộc phỏng vấn để đưa ra nhận xét sau (ban đầu hoàn toàn không rõ ràng) và xác lập bản thân mình trong đó: Tôi tin rằng phần lớn nhờ có quá nhiều cuộc phỏng vấn, nó bắt đầu giống như một thói quen ngoài lề, tôi đã nghiên cứu ngăn xếp của mình ở cấp độ chuyên nghiệp và trở thành một chuyên gia cạnh tranh, mặc dù thực tế là tôi đã làm việc trong lĩnh vực phát triển web được 10 năm.

Bài viết này gửi đến những lập trình viên mới bắt đầu cuộc hành trình và chưa sử dụng hết kiến ​​thức chuyên sâu của mình. Trong đó, tôi muốn mở rộng luận điểm về lợi ích giáo dục to lớn của các bài kiểm tra và các câu hỏi kỹ thuật được hỏi trong các cuộc phỏng vấn - đồng thời mời mọi người tham gia bot telegram mới viết của tôi Hiện thực hóaBot, theo kế hoạch của tôi, bạn có thể thực hiện một cuộc phỏng vấn kỹ thuật ít nhất mỗi ngày cho đến khi chúng kết thúc. Và để chúng không kết thúc, bạn cũng có thể chia sẻ một nhiệm vụ, câu hỏi kỹ thuật thú vị hoặc một tình huống hữu ích/thú vị đã trải qua trong cuộc phỏng vấn.

Tôi sẽ cho bạn biết thêm về bot bên dưới, trước tiên hãy tìm hiểu lý do tại sao việc biết và hiểu câu trả lời cho các câu hỏi và nhiệm vụ kỹ thuật này lại quan trọng đến vậy, ngay cả khi bạn đã chạy thành công các dự án tự do trong nhiều năm.

Tại sao chất lượng kiến ​​thức cơ bản của chúng ta lại không được như mong muốn?

Các cuộc phỏng vấn kỹ thuật, nếu bạn chưa trở thành vua của các cuộc phỏng vấn, là một căng thẳng nghiêm trọng đối với cơ thể, cũng như việc tìm kiếm một công việc nói chung - cho dù bạn là một chuyên gia mới vào nghề, một người chuyển đổi hay một nhà phát triển đã từng làm việc trong một công việc. diễn ra trong một thời gian dài (và ở thời đại chúng ta “dài” có thể được coi là một năm).

Trong nhiều cuộc phỏng vấn, có yếu tố con người làm tăng thêm sự căng thẳng này. Người phỏng vấn của bạn có thể không phải là Alena Vladimirskaya, mà là một lập trình viên bình thường như bạn đã tìm thấy, người mà khó có thể mong đợi những nhiệm vụ phù hợp và sự đánh giá của họ, hoặc một trưởng nhóm khó tính, người sẽ chờ đợi thời điểm để giảm bớt mức độ nghiêm trọng của mình trong ánh mắt của anh ấy nhìn bạn, đặt câu hỏi: Đối với bạn, sự nhanh nhẹn là gì!?

Một ngày nọ, không đưa ra câu trả lời cần thiết, nhưng, như bạn hiểu, không thể đoán trước cho câu hỏi này, tôi không nhận được lời đề nghị nào, điều mà tôi vô cùng hạnh phúc.

Bằng cách cố gắng tránh sự căng thẳng này và những chuyển động không cần thiết nói chung, chúng ta không chỉ tránh xa việc tiếp xúc ồn ào với sự thiếu hiểu biết của mình về một số đặc điểm cơ bản của ngôn ngữ, mà còn giảm bớt sự thiếu hiểu biết này ít nhất một chút.

Vấn đề là trong thực tế có rất ít nơi chúng ta có thể gặp phải loại vấn đề này.
Bất kỳ nhà phát triển nào đã từng làm việc ở nhiều nơi sẽ xác nhận rằng các vấn đề cơ bản hoặc sáng tạo được đặt ra trong các cuộc phỏng vấn hiếm khi liên quan đến những gì một lập trình viên giải quyết trong cuộc sống thực - không có đệ quy, đồ thị và hệ thống điều khiển thang máy không đồng bộ trên hành tinh với tiêu cực lực hấp dẫn ở một nhánh khác của thiên hà. Không may thay.

Liên quan đến JavaScript gốc của tôi, có một ví dụ điển hình - nếu React.JS không xuất hiện, 98% lập trình viên JavaScript sẽ tiếp tục sống trong sự thiếu hiểu biết may mắn về ràng buộc là gì - hơn 20 năm sau khi nó xuất hiện - và sẽ tiếp tục bối rối, nhận được câu hỏi về nó trong các cuộc phỏng vấn và chỉ những người phát minh ra tất cả các thư viện, khung và mô-đun có tính trừu tượng cao này mới tiếp tục làm việc với nó. Ngày nay, nhờ có phản ứng, con số này đã giảm xuống khoảng 97%.

Rõ ràng, nhận thấy sự “tách biệt với thực tế” của những nhiệm vụ này, nhiều nhà phát triển đã bỏ qua chúng hoặc lãng phí thời gian đắm mình vào chúng - và tiếp tục thực hiện công việc hàng ngày của họ, tức là nói một cách hình tượng, đi qua bãi mìn của sự phát triển để sản xuất không chỉ không có máy dò mìn mà còn không biết mình đang ở trong bãi mìn.

Hậu quả của việc thiếu kiến ​​thức cơ bản về ngôn ngữ là gì?

Câu trả lời cho câu hỏi này có vẻ tầm thường, nhưng vì lý do nào đó, bản chất con người là luôn đẩy giải pháp của mình vào góc xa - và điều này đóng một vai trò đáng buồn trong cuộc sống của các lập trình viên cấp trung và cấp hai, kéo dài con đường của họ lên những đỉnh cao (và chiều sâu). ) về kiến ​​thức ngôn ngữ trong vài năm.

Mã ứng dụng sử dụng các khung và thư viện mà họ quen viết hàng ngày không thể được coi là đáng tin cậy nếu họ viết nó mà không có đủ hiểu biết về các khía cạnh khác nhau của việc triển khai nó. Một minh họa điển hình cho điều này từ thế giới JavaScript là số phận của thư viện JQuery, vốn từng là động cơ của sự tiến bộ và ngày nay, là một lĩnh vực kiến ​​thức khép kín, tách biệt khỏi phần còn lại của ngôn ngữ, chiếm vị trí tự nhiên trong thị trường - các tập lệnh bán chuyên nghiệp được viết vội vàng và hoạt động khi cần thiết như một món quà dành cho bố cục nhanh tương tự trên bootstrap từ những người làm nghề tự do rẻ tiền.

Tương lai của các dự án được phát triển với cách tiếp cận vô trách nhiệm như vậy, mặc dù do thiếu hiểu biết, là tầm thường và ngắn ngủi: những tổn thất đáng kể về thời gian, thất bại, tổn thất tài chính và danh tiếng, và kết quả là, sự nhiệt tình tiếp tục giảm sút. sự hợp tác.

Mặt khác, đối với một người đã chọn con đường lập trình viên, ít ai có thể so sánh được niềm vui khi hiểu được những gì mình đang làm. Hiểu rằng anh ta, giống như Nam tước Munchausen, đang phi ngựa qua bãi mìn. Khỏi phải nói, một người chủ tử tế cũng có thể nhìn thấy rõ ràng những người đang liều lĩnh bước qua bãi mìn và những người đang đơ người thiếu quyết đoán khi bước một bước trong tình huống có thể chạy nhảy mà không cần suy nghĩ gì?

Hiện thực hóaBot

Sau khi thấy được lợi ích của các cuộc phỏng vấn và cũng nhận ra rằng việc tham gia các cuộc phỏng vấn trống không hoàn toàn có tính đạo đức, tôi nghĩ sẽ thật tuyệt nếu tạo ra một bot trong đó người mới bắt đầu hoặc nhà phát triển đang chuyển sang ngôn ngữ khác có thể tham gia đào tạo giáo dục mà không cần dùng đến những cuộc phỏng vấn thực tế đến mức đó, trong đó nó đã xảy ra với tôi. Và nhớ lại cách các lập trình viên thích thảo luận và so sánh các vấn đề mà họ phải giải quyết - đặc biệt nếu đó là những vấn đề không tầm thường - tôi nhận ra rằng mọi thứ đều phù hợp, bác bỏ mọi nghi ngờ và thì đấy.

Bot hiện có 3 chức năng đơn giản:

  • Đăng ký một ngôn ngữ/khuôn khổ cụ thể để nhận nhiệm vụ mới cho nó. Bạn đăng ký và khi nhiệm vụ đến, bạn sẽ nhận được chúng trong bản tin hàng ngày
  • Xuất bản một nhiệm vụ hoặc nhiệm vụ kiểm tra - Trong cuốn sách của tôi họ nói rằng chia sẻ là quan tâm
  • Một trình tạo tên tuyệt vời mà bạn có thể chọn chữ ký tối ưu cho văn bản của tác vụ bạn xuất bản, bao gồm cả từ điển nữ tính, không phải không có các nhà nữ quyền

Hiện tại có các ngôn ngữ sau để bạn lựa chọn: JavaScript, Java, Python, PHP, MySQL. Việc lựa chọn có phần hạn chế do giới hạn hiểu biết của tôi. Tôi hy vọng có thể thêm vào danh sách này với sự giúp đỡ của cộng đồng habra.

Bot được khởi chạy ở định dạng rock and roll thuần túy, không mong đợi thanh toán cho bất kỳ thứ gì.
Bạn có thể truy cập nó bằng liên kết này: Hiện thực hóaBot

Tóm tắt về thực hiện kỹ thuật

Bot này là một trong một số dự án nhỏ mà tôi sẽ mang đến phiên bản công khai đầu tiên của miniframework nguồn mở của mình để phát triển các bot có cấu trúc phức tạp, được đặt tên dễ thương là Hobot và có sẵn trong NPM dành cho những người khó tính.

Khung này được xây dựng trên cơ sở Telegraf.JS và TypeScript, phiên bản không-không-đầu tiên của nó, được trang bị một ví dụ về sử dụng, có thể xem tại github và thử ngay. Tôi sẽ sớm tải lên phiên bản 0.0.2, được mở rộng và chải chuốt cho một người từ bên ngoài và sẽ dành một bài viết riêng cho nó (thân cây). Tôi sẽ rất vui nếu nó trở nên phù hợp với ai đó như đối với tôi.

Vậy bạn đã phải tham dự bao nhiêu cuộc phỏng vấn?
Tôi chắc chắn bạn có điều gì đó để nói!

Nguồn: www.habr.com

Thêm một lời nhận xét