VỚI CƯƠNG VỊ LÀ LẬP TRÌNH VIÊN, VIỆC CÁC BẠN THƯỜNG LÀM LÀ GÌ? CỤ THỂ LUÔN ẤY?

by admin

Không biết liệu đây có phải sub phù hợp để hỏi câu này không, nếu không thì hãy bỏ qua cho tôi nhé. Tôi cũng chưa biết gì về lập trình cả, chỉ mới bắt đầu thấy hứng thú với nó thôi.
Là một lập trình viên, việc mà các bạn thường làm là gì? Tôi có thử tìm hiểu về vấn đề này nhưng các câu trả lời trông mơ hồ lắm, kiểu “tôi phát triển một phần mềm” hoặc “tôi làm cái chương trình/ứng dụng x” và thậm chí là “tôi code”. Ừa, tôi biết mấy cái đó rồi, nhưng phần mềm nào? Ứng dụng gì? Chúng có tác dụng ra sao? Mục đích của chúng là gì? Bạn đã đóng góp những gì cho chúng? Chính xác hơn thì bạn code những gì?
Chỉ có vài công việc rõ ràng mà tôi thực sự định nghĩa được cho việc lập trình là phát triển game và phát triển web.
Tại thời điểm này, tôi bắt đầu nghĩ rằng các lập trình viên không có thật và máy móc đã tiếp quản từ lâu, loại bỏ bất kỳ ai cố gắng sử dụng ngôn ngữ của họ để chống lại chúng.


Bạn của tôi làm việc tại Seagate. Ngày làm việc của cậu ấy bao gồm viết các phương thức (methods) C++ rồi nhét vào thư viện nội bộ (private library) chỉ để Seagate sử dụng trên ổ cứng để kiểm tra tính năng và sự hiệu quả của chúng. Cậu ấy cũng sẽ ngồi đó và sử dụng ổ cứng nêu trên để làm bất cứ điều gì họ có thể nghĩ ra để xem liệu nhứng phép thử ấy có “phá vỡ” được những method này hay không. Cậu ấy được trả lương khá cao và code mà cậu ấy viết ra khá đơn giản, ngoài ra cậu ấy còn luôn cố gắng làm cho nó nhỏ hơn để nó chiếm ít dung lượng hơn khi người dùng cuối mua.


Tôi sửa lỗi trong các ứng dụng web (rất lỗi thời) mà công ty của tôi sử dụng để xử lý các giao dịch của khách hàng.
Vì vậy, khi một khách hàng cho biết có điều gì đó không ổn với các ứng dụng này, tôi (hoặc một thành viên khác trong nhóm của tôi) sẽ điều tra xem điều gì đã xảy ra bằng cách xem các tệp nhật ký (log files) mà ứng dụng lưu trữ trong mọi giao dịch. Hy vọng rằng logs đã ghi lại loại lỗi và có thể cho chúng tôi biết thêm về những gì đã xảy ra.
Sau đó, chúng tôi cố gắng tạo lại lỗi tương tự bằng cách tự chạy giao dịch trong một phiên bản ứng dụng khác nhưng giống hệt nhau mà chúng tôi chỉ dùng cho việc thử nghiệm. Nếu bọn tôi có thể tạo lại nó, thì việc tìm ra lỗi thường khá đơn giản. Bạn tìm kiếm các đoạn code đã chạy chứa những lỗi đã xảy ra và đọc qua các dòng code ấy để xác định cụ thể tại sao chương trình lại hoạt động theo cách đó. Điều này được gọi là “gỡ lỗi” (debugging) và có các công cụ làm cho nó tương đối đơn giản để thực hiện. Từ đó, bạn có thể quyết định xem vấn đề có cần được khắc phục hay không và nếu có thì sẽ cần phải thực hiện những thay đổi nào để đảm bảo vấn đề không xảy ra lần nữa.
Đôi khi bọn tôi cũng phải cập nhật các ứng dụng với các tính năng mới. Điều đó thường phức tạp hơn nhiều, nhưng cũng có thể thú vị hơn nữa.


Tôi dịch logic từ cú pháp này sang cú pháp khác
Chỉnh sửa: ví dụ …
Tôi đã viết phần mềm để báo cho một người phụ nữ ở bệnh viện cấp cứu biết rằng bạn phải trả bao nhiêu trước khi có thể bước ra khỏi cửa bằng cách tra cứu bảo hiểm của mình, những gì bạn đã đáp ứng cho khoản khấu trừ của mình và mức giá theo hợp đồng cho các dịch vụ bạn nhận được.
Tôi đã viết phần mềm chạy các máy quét mã vạch tra cứu giá tại Walmart (20 năm trước như một bằng chứng về khái niệm (as a proof of concept), khi XP Tablet Edition vẫn còn tồn tại)
Tôi đã viết phần mềm quét tấm séc bạn đã viết rồi chuyển đổi thành giao dịch ACH cho các ngân hàng
Tôi đã viết phần mềm đọc đơn khiếu nại bảo hiểm y tế của bạn và gửi mẫu đơn từ chối.
Tôi đã viết phần mềm tính thuế đường bộ cho một đội xe bán tải và có thể chuyển hướng họ ra khỏi tiểu bang để mua dầu diesel và trả trước thuế đường bộ ở một tiểu bang khác nếu họ đã trả thừa ở một tiểu bang nhất định.
Tôi đã viết phần mềm làm cho hai tấn đá granit lơ lửng trên một lớp không khí trong khi nó quét các vật liệu dưới dạng laser (ví dụ: một quả bóng gôn, một đầu đọc/ghi trên ổ cứng cũ, một chiếc máy mà người ta cấy vào gan của bạn để kiểm soát cơn đau) và sau đó áp dụng Kích thước & Dung sai Hình học vào hình ảnh cho các bộ phận QA không phá hủy.
… chủ yếu là nhiều thứ nhàm chán như vậy đó


Tôi kết nối rất nhiều phần mềm của bên thứ 3 với nhau. Chúng tôi sử dụng một số nền tảng khác nhau cho logic kinh doanh và chúng tôi cần chuyển dữ liệu giữa chúng để có thể theo dõi người dùng, thanh toán, vv.
CRM, LMS, phần mềm đánh giá, hệ thống thanh toán, vv.
Chủ yếu liên quan đến việc viết và tối ưu hóa API, trình phân tích cú pháp dữ liệu (data parsers), trình xử lý lỗi (error handlers) và theo dõi lỗi (tracking errors) thông qua các hệ thống tích hợp.
Việc giải quyết vấn đề (problem solving) rất nhiều. Cần phải đảm bảo pipeline hoạt động trơn tru và hiệu quả, đồng thời sửa lỗi khi có sự cố (có thể hệ thống không hoạt động nên không thể truy xuất dữ liệu hoặc thường là do lỗi người dùng).


Tôi port các ứng dụng AR dành cho thiết bị di động từ iOS sang Android. Tôi sử dụng các ứng dụng được viết cho iOS và viết lại các đoạn code Objective-C và Swift bằng Java và Kotlin (chủ yếu là bố cục của ứng dụng và các chức năng máy ảnh), chỉnh phần code C++ đã được port sao cho tương thích với cả iOS và Android (thường thì điều này có nghĩa là thay đổi kiến trúc của code để mọi vấn đề cụ thể của các flatform sẽ chạy trên Obj-C hoặc Java thay vì chạy trên C++, cũng như khắc phục sự khác biệt giữa các trình biên dịch C++ được sử dụng cho mỗi nền tảng) và viết các công cụ cần thiết để build những phần code C++ đó cho Android. Sau khi code được viết lại, tôi duy trì phần mềm ấy bằng cách thêm các tính năng song song với việc bổ sung ứng dụng iOS, cố gắng ngăn mọi người không làm hư đoạn code C++ bằng cách nhấn mạnh tầm quan trọng của việc giữ cho đoạn code trung lập với nền tảng, và rồi đi sửa những vấn đề đó khi người ta không nghe lời tôi. Tôi đã làm công việc này tại hai công ty khởi nghiệp riêng biệt, và bây giờ tôi làm việc đó cho một công ty rất lớn có trụ sở tại San Jose mà có lẽ bạn sẽ biết.
Các mức độ trách nhiệm khác nhau tùy thuộc vào công việc của bạn như thế nào. Khi bạn là nhà phát triển cấp dưới (junior developer), một nhà phát triển cấp cao (senior developer) sẽ cho bạn biết họ muốn bạn làm gì và bạn sẽ làm điều đó. Khi bạn lên senior, một người nào đó bên team thiết kế sản phẩm sẽ cho bạn biết họ muốn sản phẩm làm gì, bạn tìm ra những nhiệm vụ (tasks) cần phải thực hiện để biến yêu cầu thành hiện thực rồi bạn bắt tay vào làm những thứ thuộc lĩnh vực chuyên môn của mình trong khi phân các task còn lại cho những người khác phù hợp hơn.

You may also like

Leave a Comment