top of page
Tìm kiếm

TASK TIMER: GẮN NHÃN, PHÂN LOẠI CÔNG VIỆC

Đã cập nhật: 26 thg 12, 2022



Từ ngày quyết định ngồi nhà làm game cho đến nay, tôi đã sử dụng ứng dụng Task Timer này. Tính đến thời điểm hiện tại đã được hai năm. Ban đầu chỉ để theo dõi các công việc trong dự án game. Tuy nhiên, cá nhân tôi không chỉ thích làm một loại công việc, nên đôi khi nhảy qua lại vài việc hoặc thử nghiệm những ý tưởng khác nhau sẽ giúp đầu óc thoải mái và linh hoạt hơn. Ngoài việc làm game, tôi cũng thường hay ngồi vẽ hoặc viết gì đó. Những công việc nhỏ này tuy không thuộc về dự án game nào nhưng cũng chiếm một phần đáng kể trong quỹ thời gian của tôi. Cho nên chúng cũng cần phải được theo dõi. Với đặc thù là những công việc nhỏ lẻ, ngắn thời gian như vậy thì cách quản lý dự án kiểu bình thường trong các ứng dụng hiện giờ có vẻ không phù hợp. Vì chúng thiếu tính linh hoạt.


Tôi nhận thấy cơ chế hashtag hay gắn nhãn (tagging) của các ứng dụng mạng xã hội có vẻ linh hoạt. Chúng lại đặc biệt phù hợp cho việc quản lý các công việc linh tinh không thuộc về một đại dự án nào như tôi vừa kể trên.



Theo quan điểm cá nhân, tôi nghĩ chức năng "tagging" có thể ứng dụng vào nhiều trường hợp. Ví dụ, tôi có thể xem danh sách các công việc được gắn nhãn cụ thể như "vẽ" hay "viết". Thao tác này sẽ nhanh hơn nhiều so với việc phải dò đọc từng dòng trong một danh sách dài hàng trăm dòng. Một trường hợp khác như việc quản lý các công việc theo dự án bằng cách gắn nhãn tên dự án cho công việc đó như "dự án A" hay "dự án B". Hoặc ta cũng có thể biết được công việc nào được thực hiển bởi ai khi gắn nhãn bằng tên người được giao nhiệm vụ như "Adam" hay "Eve".


Căn cứ vào những đặc điểm kể trên, tôi thực hiện tính năng gắn nhãn này cho ứng dụng TaskTimer trong khoảng mười sáu giờ đồng hồ. Mục tiêu của tôi là bám sát phương pháp tinh gọn theo kiểu MVP (Minimum Viable Product). Tôi tập trung nhiều sức lực vào tính năng chính thay vì trang hoàng cho giao diện. Tuy vậy, tôi vẫn đảm bảo tính năng này phải dễ sử dụng (dựa trên cảm nhận của bản thân).


Trong quá trình phát triển tính năng này, tôi sử dụng một bộ dữ liệu giả để kiểm tra độ chính xác và cách tính năng Filter By Tag có hoạt động như mong đợi không. Sau khi mọi thứ có vẻ ổn, tôi dùng thử dữ liệu thật bao gồm danh sách các công việc mà tôi đang có để kiểm tra thì phát hiện một số lỗi, chủ yếu liên quan đến việc dữ liệu cũ và mới không được đồng bộ. Quy trình kiểm tra này cho ta thấy được đa số lỗi của sản phẩm phần mềm hoặc ứng dụng trực tuyến thường xày ra khi chạy với dữ liệu thực tế, cho dù chỉ là một nâng cấp nhỏ cũng có thể ảnh hưởng đến tính đúng đắn của ứng dụng.


KINH NGHIỆM CÁ NHÂN

Sau những ngày làm việc với ứng dụng Task Timer này để lại cho tôi một số suy nghĩ như sau. Khi thiết kế sản phẩm phần mềm hay ứng dụng trực tuyến cần có một triết lý ban đầu, cũng giống như biết bao nhiêu việc khác trong cuộc sống. Tùy vào triết lý của người thiết kế sẽ cho ra các sản phẩm khác nhau. Ví dụ ngày xưa các chương trình quản lý dự án sẽ bắt đầu từ góc nhìn lớn lấy dự án làm trung tâm, sau đó chia nhỏ ra thành các nhiệm vụ cần làm để hoàn thành. Nếu bắt đầu từ một góc nhìn như vậy người quản lý dự án sẽ có rất nhiều quyền lực và trách nhiệm. Tuy nhiên đa số họ cũng không thực sự làm việc trên bất cứ nhiệm vụ cụ thể nào trong dự án nên mức độ quan liêu trong các dự án này khá cao. Ngoài ra những người trực tiếp thực hiện các nhiệm vụ được giao trong dự án thường không có cảm giác gắn kết với sản phẩm, vì đơn giản họ chỉ làm việc được giao, miễn hoàn thành tốt đúng hạn định là được. Đây là một trong những yếu điểm của mô hình thác nước (water fall). Ngoài ra rất khó để thay đổi giữa chừng trong phần mềm vì tất cả đã được định đoạt ngay từ đầu.


Đối với những cá nhân độc lập ưa tự do, thích thử nghiệm nhiều thứ. Những thử nghiệm đó chính là những nhiệm vụ nhỏ tiêu tốn ít thời gian và dễ hoàn thành. Và có nhiều sự thay đổi diễn ra liên tục trong suy nghĩ của những người thích sáng tạo này. Nếu ta nhìn sự việc từ góc độ này cách tốt nhất để quản lý chúng chính là từ công việc hay nhiệm vụ. Nhiều nhiệm vụ nhỏ hợp lại thành một dự án hoàn chỉnh. Đây cũng là góc độ mà tôi sử dụng để tạo ra tính năng cho Task Timer.


Về kỹ thuật thì tôi chưa học thêm được điều gì đáng kể, ngoại trừ việc thành thạo hơn trong việc nghịch các component của WPF như WrapPanel và tạo ra UserControl riêng để việc gắn nhãn cho từng công việc dễ dàng hơn. Không hiểu các kỹ sư của Microsoft nghĩ gì, nhưng tôi thấy phần viết style cho các UI component khá rườm rà và khó nhớ, khó hiểu khi dùng Markup Language như XAML thay vì dùng Inspector như trong Unity. Ngoài ra một số thuộc tính cơ bản của các UI Element như vị trí (position) muốn truy xuất cũng bất tiện và khó khăn, không trực quan như thời MFC. Hiện giờ họ đã bổ sung thêm MAUI nhưng dự án Task Timer này đã dùng WPF từ trước rồi, nên khả năng thử nghiệm MAUI có vẻ khá xa xôi.


Dù sao tôi cũng đã hoàn thành được tính năng mong muốn cho ứng dụng Task Timer của mình. Phiên bản này chỉ giới hạn cho cá nhân tôi sử dụng. Sau này nếu nó hoạt động ổn thì tôi sẽ cân nhắc đến việc phổ biến cho mọi người dùng. Tạm thời ai muốn dùng thì vẫn còn phiên bản cũ tại đây. Các bạn có thể tải về sử dụng miễn phí.



Bài đăng gần đây

Xem tất cả

Comments


CẢM ƠN BẠN!

bottom of page