JavaRush /Blog Java /Random-VI /Một ngày trong cuộc đời của một nhà phát triển Java. Phần...
alex8894
Mức độ
Санкт-Петербург

Một ngày trong cuộc đời của một nhà phát triển Java. Phần 1

Xuất bản trong nhóm
Xin chào các đồng nghiệp thân mến! Sau khi xuất bản " 20+ Years Later ", một số độc giả đã yêu cầu tiếp tục câu chuyện. Tôi có thể nói về điều gì khác? Có vẻ như tôi đã đề cập đầy đủ đến chủ đề biến một “người có râu” thành nhà phát triển Java. Sẽ có thể rút ra một số kết luận không sớm hơn sau một năm làm việc. Và sau đó tôi quyết định mô tả đơn giản một ngày làm việc điển hình của tôi diễn ra như thế nào. Dưới phần cắt “Một ngày trong cuộc đời của một nhà phát triển Java.” Khi còn trẻ, tôi thích ngủ. Khi tôi còn là một enkey, tôi thường ngủ đến trưa và đến làm việc lúc ba giờ, thậm chí ba giờ rưỡi. Mỗi lần tôi đáp lại yêu cầu định kỳ của ban quản lý là “hãy đến như những người khác”, tức là vào lúc 9 giờ sáng, theo cùng một cách - họ nói, tôi cần làm việc trên máy tính khi không làm phiền ai. Nó lăn. Nhưng theo tuổi tác, dường như có điều gì đó đã thay đổi trong cơ thể, và giờ tôi giống một “chim sơn ca” hơn là một “cú đêm”. Đó là lý do tại sao bây giờ tôi đến làm việc đầu tiên (hoặc một trong những người đầu tiên). Hôm nay, tôi là người đầu tiên, và tôi có nửa giờ hoặc một giờ im lặng cho đến khi những người khác, ít “chim sớm” hơn bắt kịp. Đã đến lúc lên kế hoạch ngay hôm nay. Tôi phát triển trên Linux Mint. Mình thích nút Start, khiêm tốn và sang trọng chứ không như kiểu xếp gạch này. Trình quản lý máy tính để bàn Cinnamon không bị quá tải về hiệu ứng hình ảnh, nhưng về mặt đánh bóng thì nó kém hơn một chút so với MacOS, tất nhiên, đây là tiêu chuẩn trong vấn đề này. Thật dễ dàng để so sánh, có một chiếc máy Mac ở bàn bên cạnh, một nhà thiết kế UX đang làm việc đằng sau nó. Tôi cũng hầu như không có phàn nàn gì về bản thân hệ điều hành: nó hoạt động nhanh và rất ổn định, tôi chỉ khởi động lại nó ba lần trong thời gian này - khi tôi tắt máy tính trong kỳ nghỉ dài. Trên thực tế, nó cũng tải gần như ngay lập tức, ngay cả màn hình giật gân cũng không có thời gian xuất hiện vì tất cả máy tính của nhà phát triển đều được trang bị ổ SSD. Trước hết, tôi mở ứng dụng email Thunderbird, các lá thư đến đó chứa thông tin về những thay đổi đối với các trang mà tôi quan tâm trên wiki (có cài đặt và thông số kỹ thuật), nhưng điều chính là thông báo từ trình theo dõi. Điều thú vị gì đã xảy ra với chúng ta? Ồ, họ trở về sau khi thử nghiệm một tính năng mà tôi đã hoàn thành ngày hôm qua, có vẻ như họ đã tìm thấy một lỗi. Vâng, đúng vậy. Tôi cần phải sửa nó càng sớm càng tốt, có thể tôi sẽ có thời gian trước khi người kiểm tra đến và anh ta sẽ xem xét ngay các chỉnh sửa trước khi bắt tay vào “công trình chưa hoàn thiện” nào đó. Đó là điều đầu tiên cho ngày hôm nay. Vì vậy, đây là về “công trình chưa hoàn thành” của tôi, mà tôi đã viết trong suốt lần chạy nước rút vừa qua. Có vẻ như lần này anh đã thành công chống chọi lại mọi vòng địa ngụcđang trong giai đoạn thử nghiệm và có lẽ ngày nay nó sẽ cần được sáp nhập vào nhánh chính của dự án. Nhưng điều đó sẽ đến sau, sau bữa trưa. Ngay cả ngày nay, chúng tôi sẽ phải làm việc trong các devops và cập nhật gian hàng từ chi nhánh nơi quá trình phát triển hiện đang được tiến hành, chúng tôi cần hiển thị chức năng mới. “Sức mạnh lớn đi kèm với trách nhiệm lớn”, lệnh sudo hiển thị cảnh báo trước khi cấp quyền root. Theo cách dịch hơi lỏng lẻo của tôi, cụm từ này nghe giống như “bạn càng có thể làm nhiều thì bạn sẽ càng phải làm nhiều hơn”. Vì vậy, không có gì đáng ngạc nhiên khi tôi, người mang “dấu quản lý” lại thường xuyên nhận được những nhiệm vụ “biên giới” như vậy. Vâng, hãy bắt đầu. Hôm qua tôi đang làm việc trên một tính năng khác và bây giờ tôi cần quay lại chi nhánh nơi có lỗi. Người dùng Windows thường yêu thích tất cả các loại shell đồ họa và sử dụng Turtle (TortoiseGit), nhưng đối với tôi, điều đó dễ dàng và quen thuộc hơn thông qua dòng lệnh. Nhìn chung, dòng lệnh trong Linux là một kiệt tác nhỏ, vô cùng chu đáo và mạnh mẽ, đặc biệt là khi kết hợp với Midnight Commander. Chúng tôi đã chuyển đổi, bây giờ chúng tôi cần xây dựng lại dự án. Tôi gõ lệnh gradle clean ass. Tôi không biết liệu lệnh này ban đầu là do các tác giả lớp dự định hay được tạo ra một cách tình cờ, nhưng nó chỉ đơn giản là dọn dẹp và xây dựng lại dự án (ass là viết tắt của lắp ráp chứ không phải điều đầu tiên tôi nghĩ đến). Trên javarush, gradle chỉ được đề cập ngắn gọn là “và các hệ thống xây dựng khác”. Có, gradle không có lợi thế hơn maven trong việc tập hợp các dự án giáo dục. Hầu hết các hướng dẫn và cách thực hiện trên internet cũng sử dụng maven. Sự xuất hiện và ngày càng phổ biến của gradle có thể là do mức độ phức tạp của việc xây dựng các dự án hiện đại ngày càng tăng nhanh. Dự án mà tôi tham gia bao gồm hàng chục thành phần, trong đó phần phụ trợ được viết bằng Java, giao diện người dùng bằng Javascript và các bài kiểm tra bằng Python. Nhân tiện, ngày nay, việc tập hợp một dự án Javascript là một quy trình riêng biệt và hoàn toàn phức tạp, thậm chí còn có tên - Quy trình làm việc trên web và cây phụ thuộc ở đó gần như trải dài như trong Java. Chà, ít nhất bạn không cần phải lắp ráp các thành phần Python, à, hầu như không cần... Sau khi lắp ráp và khởi chạy (điều này cũng không tầm thường), bạn cần nâng cấp và khởi tạo với dữ liệu thử nghiệm toàn bộ môi trường có quan hệ và cơ sở dữ liệu NoSql, hàng đợi tin nhắn và bộ đệm trong bộ nhớ. Sau đó, tất cả những thứ này cần được tập hợp lại và chạy trên máy chủ CI, sau đó được triển khai bằng ansible. Đồng thời, quá trình phát triển chủ yếu được thực hiện trên Windows, và các máy chủ “chiến đấu”, demo, thử nghiệm và các máy chủ tiền sản xuất khác đương nhiên là trong Linux. Tôi thực sự không tưởng tượng được làm thế nào có thể triển khai những thứ như vậy trong maven, nhưng khá tốt ở cấp độ. Thực tế là tệp xây dựng lớp được viết bằng Groovy. Đó là một ngôn ngữ rất buồn cười, họ nói nó là sự kết hợp giữa Java và Ruby, nhưng tôi không biết Ruby, nhưng tôi biết một chút Javascript và nhiều cấu trúc từ nó cũng hoạt động. Những người tạo ra gradle đã triển khai một API sao cho trong các trường hợp đơn giản, tệp xây dựng trông khá khai báo (và nhân tiện, theo ý kiến ​​​​của tôi, nó thậm chí còn dễ đọc hơn pom.xml của Maven), nhưng nếu bạn cần thứ gì đó phức tạp hơn, tất cả tính khai báo này bị loại bỏ, các biến, hàm, lớp xuất hiện - tóm lại là tất cả các tính năng của Groovy, nhân tiện, có thể được biên dịch và thực thi trên cùng một JVM như mã Java. Bản thân hợp ngữ, như tôi đã đề cập, là đa nền tảng, nhưng nó tương tác với môi trường, vì vậy nó cũng cần được kiểm tra trong Windows. Để làm điều này, tôi đã cài đặt Windows trên máy ảo. KVM đang phát triển nhảy vọt và nếu hệ thống khách được cấu hình chính xác, ảo hóa gần như không thể nhìn thấy được. Có, Spice hiện hỗ trợ hai màn hình, độ phân giải màn hình được điều chỉnh tự động và trình điều khiển thiết bị ảo hóa gần như không làm giảm hiệu suất. Đôi khi tôi thấy mình nghĩ rằng mình không cảm thấy có nhiều khác biệt giữa hai nền tảng. Tuy nhiên, Java là một công cụ tuyệt vời đã mang hai thế giới hoàn toàn khác nhau và đôi khi thậm chí là thù địch lại gần nhau hơn - thế giới phần mềm độc quyền, vết nứt, keygen và serial,được ví dụ điển hình bởi Windows và thế giới hệ thống mở Linux. Vì vậy, dự án đã được tập hợp, chúng tôi khởi chạy nó (tất nhiên, cũng thông qua gradle) và xem xét. Vâng, vâng, thật xấu hổ cho bộ râu xám của tôi, tôi đã không thực hiện một trong những yêu cầu của quá trình sản xuất, nó đây, được viết bằng màu đen và trắng trên wiki. Ở công việc trước đây, tôi thường xuyên gặp phải tình huống này và luôn cảm thấy bối rối không biết tại sao nhà phát triển lại có thể bỏ sót toàn bộ đoạn trong đặc tả. Vâng, dễ dàng! Tôi nghĩ về điều đó, tập trung vào một vấn đề khác - và có một lỗi xảy ra. Chỉ ở đây, nhờ một số giai đoạn thử nghiệm, cô ấy mới bị bắt, nhưng ở vị trí trước đó - à, dù chuyện gì đã xảy ra. May mắn thay, công việc ở đây sẽ không kéo dài lâu. Tôi sắp ra mắt Idea Ultimate, đây là một trong số ít sản phẩm trả phí được sử dụng trong quá trình phát triển. Về nguyên tắc, bạn có thể sử dụng Phiên bản cộng đồng, nhưng bạn sẽ nhanh chóng làm quen với những tính năng hay, chẳng hạn như tích hợp với Spring. Bạn cũng cần một vài thiết bị đầu cuối để ghi nhật ký, một trình duyệt cho giao diện người dùng và wiki, một thiết bị đầu cuối khác có dòng lệnh, mọi thứ đều di chuyển, nhấp nháy... Nói chung, hình ảnh trên màn hình của hai màn hình bắt đầu trở nên đáng sợ. ngoại hình giống như những gì được chiếu trong các bộ phim kinh phí thấp, mô tả công việc khó khăn của một hacker. Nhưng đây vẫn chỉ là những điều nhỏ nhặt, nhưng tôi nhớ khi tôi phải nâng cấp và định cấu hình một cụm chuyển đổi dự phòng - bảy cửa sổ đầu cuối, một thứ khác ở góc màn hình, trong tất cả các cửa sổ - một số con số và hình ảnh từ đồ họa ascii... Nhưng Tôi hơi lạc đề trong công việc và thời gian trôi qua. ... Phù, có vẻ như tôi đã làm mọi thứ tôi cần và có vẻ như tôi đã không phá vỡ bất cứ thứ gì tôi đã làm trước đó. Tôi thêm nhận xét vào tính năng này và gửi chủ đề để thử nghiệm. Tôi cố gắng viết chi tiết hơn chính xác những gì tôi đã làm hoặc thay đổi để đơn giản hóa công việc của người thử nghiệm. Ở công việc trước đây, tôi thực sự đã bỏ lỡ những lời giải thích như vậy khi phải kiểm tra những cải tiến nhận được từ các nhà phát triển. Trong khi đó, buổi sáng êm đềm chuyển sang ban ngày, dòng người dần dần kéo đến. Sẽ sớm có một cuộc họp đứng lên, hoặc theo ý kiến ​​​​của chúng tôi, một cuộc họp đứng lên. Trên thực tế, ngày làm việc nên bắt đầu từ đó, và đối với hầu hết “cú đêm”, điều này gần như đúng. Đứng dậy đóng vai trò như một ranh giới cho việc đến nơi làm việc càng muộn càng tốt; việc đi muộn là điều không được khuyến khích. Chà, đối với tôi nó giống như một sự nghỉ ngơi. Vì vậy, tất cả chúng ta hãy đứng lên. Khi đứng lên, như thường lệ, các nhà phát triển cho biết họ đã làm gì ngày hôm qua và họ dự định làm gì hôm nay, những người thử nghiệm cho chúng tôi biết họ đã thử nghiệm những gì và đạt kết quả như thế nào, còn các ông chủ thì rõ ràng họ dự định làm gì tiếp theo, những vấn đề gì đã nảy sinh và những gì cần đặc biệt chú ý. Nhóm của chúng tôi được phân bổ theo địa lý và sự bổ sung đầy đủ của nhóm chỉ có thể được nhìn thấy khi đứng lên (tất nhiên là trên TV), và có lẽ, tại một sự kiện chung của công ty một vài lần trong năm. Trong lúc đứng lên, tôi thường có suy nghĩ rằng nó thực sự được phát minh ra để khiến các nhà phát triển không thể thư giãn. Khi hàng ngày bạn cần thể hiện sự tiến bộ trong công việc của mình chứ không phải trong một bản báo cáo giấy mà chỉ sếp của bạn mới đọc mà trước mặt đồng nghiệp, dù muốn hay không, bạn sẽ cố gắng làm nhiều hơn nữa, có chuyện để nói. Tất nhiên, có những “dự án xây dựng dài hạn”, trong đó bạn lặp đi lặp lại trong nhiều ngày liên tiếp “hôm qua tôi đã làm điều này và hôm nay tôi sẽ tiếp tục làm điều đó,” nhưng ngay cả trong đó cũng có một số nhiệm vụ cấp bách nhỏ liên tục được thực hiện. nhét vào. Tóm lại là thực Một nhà phát triển cao bồi luôn có điều gì đó muốn nói với đồng nghiệp của mình. Khi đứng lên, tôi được yêu cầu cập nhật nhanh chỗ đứng của mình, vì vậy bây giờ tôi sẽ làm điều đó. Khi nhánh chính của dự án được xuất bản, bản cập nhật được thực hiện bởi quản trị viên, nhưng bây giờ chúng tôi cần xuất bản một tính năng chưa hoàn thiện, đồng thời chắc chắn sẽ phát sinh một số vấn đề mà quản trị viên không thể giải quyết. Giá đỡ được đặt trong một trung tâm dữ liệu, chỉ có thể truy cập vào nó thông qua ssh, tất nhiên là không có vỏ đồ họa ở đó - vì vậy chỉ có dòng lệnh, chỉ có phần cứng! Bản thân quá trình cập nhật được tự động hóa và diễn ra suôn sẻ, nhưng sau khi cập nhật, một trong các thành phần không khởi động. Tôi xem nhật ký bằng lệnh less; nhân tiện, nó có một chức năng rất tiện lợi: nếu bạn nhấn Shift-F, nó sẽ liên tục hiển thị nội dung hiện tại của tệp, điều này hoàn hảo cho nhật ký. Và đây là... điều kỳ lạ gì vậy? Toàn màn hình các dấu chấm hỏi cách nhau bằng dấu phẩy. Màn hình thứ hai, thứ ba, thứ mười... Có bao nhiêu cái? Ồ, kết thúc rồi, hóa ra nó khá là một dấu vết ngăn xếp. Ai đó đã viết một truy vấn SQL bằng toán tử IN để chọn các bản ghi mong muốn từ danh sách và tạo một tham số cho từng thành phần của danh sách. Mọi thứ đều hoạt động cho đến khi danh sách chứa hơn 32767 phần tử, sau đó máy chủ SQL cuối cùng đã hết kiên nhẫn. Bạn sẽ cần phải viết báo cáo lỗi về vấn đề này, nhưng điều này không liên quan gì đến vấn đề với một thành phần không hoạt động. Hãy nhìn xa hơn. Bây giờ rõ ràng là quá trình di chuyển cấu trúc cơ sở dữ liệu sang phiên bản mới đã không thành công, có vẻ như tác giả của tính năng này đã thay đổi điều gì đó trong quá trình di chuyển và ở đây, tại chỗ, đã có phiên bản trước đó của nó. Bạn sẽ phải khôi phục các thay đổi cấu trúc theo cách thủ công thông qua tiện ích bảng điều khiển máy chủ SQL. Làm cách nào tôi có thể viết lệnh trong DML để xóa một trường? mục lục? những cái bàn? Nhìn như vậy là được rồi. Tôi đã khởi động lại thành phần, quá trình di chuyển diễn ra tốt đẹp... mọi thứ đều ổn. Đã đến lúc đi ăn trưa rồi, nhân tiện, thời tiết hôm nay rất tuyệt. “Quả cầu màu vàng sáng lơ lửng bất động trên bầu trời khiến người dân thị trấn khiếp sợ hóa ra chính là Mặt trời.” Gần đến ngày nắng đầu tiên trong năm. Tôi thậm chí không muốn rời khỏi đường phố, nhưng tôi phải làm vậy - thời điểm hòa nhập đang đến gần. Còn tiếp
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION