Chủ Nhật, 31 tháng 1, 2016

Tại sao programmer làm việc không hiệu quả?

Biểu đồ về năng suất làm việc của programmer trên Internet.
programmer làm việc hiệu quả
Trông có vẻ khá kỳ cục, tuy nhiên nó phản ánh sự thật.
Tôi chưa tìm ra bí quyết để làm việc một cách hiệu quả vì tôi chưa thực sự đạt được hiệu quả một cách đều đặn. Joel Spolsky, một “biểu tượng” trong lòng các programmer đã chia sẻ về vấn đề này trong một bài blog của anh ấy:
“Có những lúc tôi không thể làm được việc gì.  Mặc dù tôi đến văn phòng làm việc nhưng lại làm những việc vớ vấn kiểu như, check email, lướt web, thanh toán hóa đơn. Và sau đó tôi vẫn không thể tìm thấy nguồn cảm hứng để tiếp tục code.
Những khoảng thời gian vô ích như vậy thường kéo dài từ một đến 2 ngày. Đôi khi nó kéo dài hàng tuần mà không đem lại hiệu quả gì.”
Tôi khá bất ngờ vì một programmer đẳng cấp như Joel Spolsy cũng gặp phải vấn đề tương tự như mình. Ít nhất cũng không phải mình tôi gặp phải những lúc làm việc không hiệu quả.
Tôi không thể chia sẻ với các bạn bí quyết để làm việc hiệu quả nhưng tôi biết rõ những nguyên nhân khiến programmer làm việc thiếu hiệu quả.

1. Những điều làm giảm hiệu suất làm việc của programmer:

  •  Không gian làm việc không có sự riêng tư
  •  Việc tranh luận của đồng nghiệp xung quanh mình
  • Một đồng nghiệp tới gần tôi và hỏi “Này, bạn đã nhận được mail tôi gửi chưa?”
  •  Tiếng nhai đồ ăn. Hoặc bạn có thể thấy là “Tôi ghét tiếng ồn”
  • Không hiểu rõ vấn đề tôi đang phải xử lý .
  •  Không thực sự tin tưởng vào dự án tôi đang làm.
  •  Không biết bắt đầu từ đâu.
  •  Phải hoàn thành nhiều nhiệm vụ cùng lúc trong khi việc nào cũng đang  “nước sôi lửa bỏng”
  •  Thông báo từ mạng xã hội hiển thị trên điện thoại của tôi
  • Thông báo có email mới
  • Bất cứ 1 pop-up mới nào trên màn hình máy tính
  • IMs
  • Vợ tôi bất chợt gọi và nhắn tôi làm một việc gì đó
  • Giai đoạn lên ý tưởng quá mất thời gian
  • Nhiều người đi qua đi lại chỗ làm việc của tôi
  • Những cuộc vui bị ép buộc phải tham gia
  • Wikipedia
  • Tin tức mới về hacker
  • Internet nói chung

2.  Sau đây là những diều đã từng giúp tôi làm việc hiệu quả:

  • Không gian và nơi làm việc yên tĩnh (một phòng làm việc riêng luôn là lý tưởng nhất)
  • Hiểu rõ các bước tiếp theo tôi cần làm trong một dự án
  • Hiểu rõ các vấn đề gặp phải
  • Không bị gián đoạn khi làm việc, tôi nhắc lại: không bị ai gián đoạn
  • Tránh xa mạng xã hội và tin tức về hacker 
  • Yêu thích dự án đang làm
  • Thời gian xây dựng và debug nhanh chóng.
  • Không tranh luận về chính trị trên internet
Từ những điều vừa chia sẻ, tôi nhận ra phần lớn những thứ ảnh hưởng đến năng suất làm việc của tôi đều do chính tôi tạo ra, đương nhiên trừ một số yếu tố khách quan như không gian làm việc. Rõ ràng mỗi programmer đều có thể kiểm soát những điều khiến ta làm việc không hiệu quả. Tôi hiểu rằng tôi cần phải kiểm soát tất cả những yêu tố nằm trong tầm tay mình:
  • Tắt mọi tiếng thông báo từ điện thoại (đi kèm theo là lợi ích tăng tuổi thọ cho pin điện thoại của bạn)
  • Thư giãn sau 3 tiếng code liên tục (phần thưởng cho bản thân có thể là lướt web hay check tin tức trên Hacker News).
  • Làm việc ở nhà khi tôi thực sự cần hoàn thành công việc nào đó.
  •  Đầu tư một tai nghe tốt giúp bảo vệ tôi khỏi những tiếng ồn.
  • Sắp xếp những khoản thời gian “không họp hành” trên lịch làm việc để thông báo cho mọi người rằng bạn đang bận.
  • Không tham gia tranh luận với các đồng nghiệp thích tranh cãi. Và nếu thực sự cần tranh luận, hãy vào phòng họp để phân tích rõ cách tiếp cận vấn đề, dựa trên số liệu cụ thể và đưa ra hướng giải quyết.
  • Sắp xếp vị trí bàn làm việc sao cho tôi ít bị ảnh hưởng nhất bởi người qua lại.
  • Xem xét vấn đề trước khi hỏi lập trình viên khác để hiểu rõ hơn vấn đề gặp phải. Như vậy tôi sẽ nắm được cơ bản nguyên nhân vấn đề và sẽ đưa ra những câu hỏi thông minh hơn khi tôi cần sự giúp đỡ từ người khác.
Còn các bạn programmer, điều gì khiến bạn làm việc thiếu hiệu quả và cách giải quyết của bạn?

Thứ Sáu, 15 tháng 1, 2016

Đặt giờ tự động bật máy tính với DD-WRT

Nếu bạn không thể duy trì tình trạng hoạt động của máy tính liên tục trong ngày thì có thể sử dụng tính năng Wake – on – LAN (WOL) để truy cập và điều khiển từ xa. Đây quả thực là 1 công việc khó khăn và phức tạp, nhưng nếu nắm rõ kỹ thuật và quy luật hoạt động của DD-WRT thì việc này lại trở nên đơn giản hơn bao giờ hết. Bài thử nghiệm dưới đây được tiến hành dựa trên những thiết bị đã được thiết lập và kích hoạt tính năng Wake – on - LAN trong BIOS hoặc hệ điều hành.

Một số bước thiết lập WOL cơ bản:

Trước tiên, các bạn mở trình duyệt và truy cập vào trang điều khiển, cấu hình chính của DD-WRT, sau đó chọn mục Administration > WOL:
Tại đây, chúng ta có thể dễ dàng gửi đi những tín hiệu Wake-on-LAN tới các máy tính bằng cách kích hoạt tùy chọn Enable WOL? bên cạnh những thành phần tương ứng trong danh sách Available Hosts:
Nếu máy tính của bạn vẫn kết nối trong hệ thống nhưng lại không có trong danh sách thì cần phải điền thông tin theo cách thủ công ở phần dưới mục WOL Addresses. Sau đó nhấn nút Wake Up để bật máy tính đó. Còn nếu muốn thiết lập chế độ lịch bật máy tính tự động hàng ngày thì chúng ta sẽ sử dụng tùy chọnAutomatic Wake-On-LAN cũng tại đây:
Và tại phần WOL daemon, nhấn nút Enable:
Tại đây, người sử dụng có thể chỉ định rõ số thời gian - Interval tính theo đơn vị giây (second) để bật máy tính (mặc định là 86400). Bên dưới mục Host Name là thông số Broadcast IP của hệ thống mạng, ví dụ với 192.168.1.X thì đây sẽ là192.168.1.255, còn trong trường hợp máy tính của người sử dụng có chức năng mật khẩu SecureOn của Wake – on – LAN thì hãy điền những thông tin tương ứng vào mục đó. Và cuối cùng là điền địa chỉ MAC theo từng dòng, nhấn Save Apply Settings để lưu thay đổi.

Cấu hình nâng cao bằng cách sử dụng Cron:

Nếu người sử dụng muốn áp dụng nhiều chức năng điều khiển hơn nữa khi máy tính được bật, DD-WRT sẽ hỗ trợ chúng ta bằng cách thiết lập cron. Các bạn hãy mở phần Administration > Management, kéo chuột xuống phần Cron:
Cụ thể tại đây chúng ta sẽ phải sử dụng cú pháp sau:
mm hh dd MM wd root /usr/sbin/wol -p <port> -i <IP Address> <MAC Address>
Như trong bài thử nghiệm này, các bạn sẽ điền:
15 17 * * 1-5 root /usr/sbin/wol -p 7 -i 192.168.1.255 00:30:67:2f:4c:6c
Câu lệnh trên có nghĩa là: tại thời điểm 17 giờ 15 phút (5:15 pm) các ngày trong tuần được đánh số từ 1 – 5 (từ thứ 2 đến thứ 6), lệnh WOL sẽ được gửi qua cổng 7 tới địa chỉ IP Broadcast: 192.168.1.255 và tới máy tính có địa chỉ MAC00:30:67:2f:4c:6c. Về mặt kỹ thuật, chúng ta có thể gán nhiều lệnh yêu cẩu cron trên nhiều dòng để thiết lập, sắp xếp nhiều lệnh trên nhiều máy tính khác nhau. Chúc các bạn thành công!