Thứ Năm, 3 tháng 12, 2015

Queue Postfix in zimbra

1.      Postfix, Amavis, ClamAV spool directory paths and Names
zimbra@mta2 ~]$ ls /opt/zimbra/data/
altermime  amavisd  cbpolicyd  clamav  dspam  postfix  sasl2  tmp

ls /opt/zimbra/data/postfix/spool/
active  bounce  corrupt  defer  deferred  flush  hold  incoming  maildrop  pid  private  public  saved  trace

2.      Stop and Starting Postfix and mta
Postfix stop
Postfix start

Để stop và start dịch vụ Postfix, amavis và clamav .
Từ quyền zimbra
Zmmtactl stop
Zmmtactl start

3.      To see the Postfix Queues
Từ quyền root gõ:
[root@mta2 ~]# /opt/zimbra/libexec/zmqstat
hold=28
corrupt=0
deferred=0
active=0
incoming=0
               [root@mta2 ~]#

Từ quyền zimbra
zimbra@mta2 ~]$ /opt/zimbra/postfix/sbin/postqueue -p
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
B4F581016AD!   21611 Tue Dec  8 16:21:27  hungnp13@viettelpost.com.vn
                                         hungnp13@viettelpost.com.vn
CD3141014B1!   12178 Tue Dec  8 16:21:03  hungnp13@viettelpost.com.vn
                                         hungnp13@viettelpost.com.vn
368D1101684!   13895 Tue Dec  8 16:21:24  hungnp13@viettelpost.com.vn
                                         hungnp13@viettelpost.com.vn

Từ quyền zimbra
[zimbra@mta2 ~]$ mailq | more
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
B4F581016AD!   21611 Tue Dec  8 16:21:27  hungnp13@viettelpost.com.vn
                                         hungnp13@viettelpost.com.vn
CD3141014B1!   12178 Tue Dec  8 16:21:03  hungnp13@viettelpost.com.vn
                                         hungnp13@viettelpost.com.vn

368D1101684!   13895 Tue Dec  8 16:21:24  hungnp13@viettelpost.com.vn
                                         hungnp13@viettelpost.com.vn
784EC10165E!   21529 Tue Dec  8 16:21:17  hungnp13@viettelpost.com.vn
                                         hungnp13@viettelpost.com.vn

4.      Qshape – Print Postfix queue domain and ade distribution
Từ quyền zimbra gõ:
[zimbra@mta2 ~]$ qshape
                                         T  5 10 20 40 80 160 320 640 1280 1280+
                                  TOTAL  0  0  0  0  0  0   0   0   0    0     0
[zimbra@mta2 ~]$ qshape active
                                         T  5 10 20 40 80 160 320 640 1280 1280+
                                  TOTAL  0  0  0  0  0  0   0   0   0    0     0
[zimbra@mta2 ~]$ qshape incomming
Can't stat incomming: No such file or directory
 at /opt/zimbra/postfix/sbin/qshape.pl line 375
                                         T  5 10 20 40 80 160 320 640 1280 1280+
                                  TOTAL  0  0  0  0  0  0   0   0   0    0     0
[zimbra@mta2 ~]$ qshape deferred
                                         T  5 10 20 40 80 160 320 640 1280 1280+
                                  TOTAL  0  0  0  0  0  0   0   0   0    0     0
[zimbra@mta2 ~]$ qshape held
Can't stat held: No such file or directory
 at /opt/zimbra/postfix/sbin/qshape.pl line 375
                                         T  5 10 20 40 80 160 320 640 1280 1280+
                                  TOTAL  0  0  0  0  0  0   0   0   0    0     0
[zimbra@mta2 ~]$ qshape -s hold | head
                                         T  5 10 20 40 80 160 320 640 1280 1280+
                                  TOTAL 28  0  0  0  0 28   0   0   0    0     0
                     viettelpost.com.vn 28  0  0  0  0 28   0   0   0    0     0
[zimbra@mta2 ~]$

5.      To view a message in the queue
Để xem tin nhắn sử dụng postcat :
/opt/zimbra/postfix/sbin/postcat -q EC753D0D00

Hoặc cùng với nhiều thông tin sử dụng tùy chọn qv
/opt/zimbra/postfix/sbin/postcat -qv EC753D0D00

6.      To flush Postfix queue
/opt/zimbra/postfix/sbin/postqueue -f

7.      To requeue message in Postfix
/opt/zimbra/postfix/sbin/postsuper -r ALL

8.      To put message on hold
Nếu kí tự “*” là kí tự tiếp theo của queue ID, EC753D0D00*, nó có nghĩa là user này nằm trong mail active
Nếu kí tự “!” là kí tự tiếp theo của queue ID, EC753D0D00!, nó có nghĩa là đã put đến hold.
Để put một message đến hold,
/opt/zimbra/postfix/sbin/postsuper -h EC753D0D00

Để put trên hold message từ một tài khoản user@domain
/opt/zimbra/postfix/sbin/postqueue -p | awk ‘BEGIN { RS = “” } { if ($7 == “user@domain.com” ) print $1 }’ | tr -d ‘!*’ | postsuper -h
Để put tất cả tin nhắn đến hold
/opt/zimbra/postfix/sbin/postsuper -h ALL
postsuper: Placed on hold: 6 messages

9.      To delete message from queue


10.  To delete single message from queues
/opt/zimbra/postfix/sbin/postsuper -d [MSGID From postqueue -p]

11.  To delete ALL message from queues
/opt/zimbra/postfix/sbin/postsuper -d ALL

     Có một cách khác là:
     
mailq | awk '{print $1}' | postsuper -d -

12.  To delete ALL from the feferred queue
/opt/zimbra/postfix/sbin/postsuper -d ALL deferred

13.  To delete All message From the Hold queue
/opt/zimbra/postfix/sbin/postsuper -d ALL hold

14.  To delete many message from queues
/opt/zimbra/postfix/sbin/postsuper -d - < filename-with-queue-ids.txt

Tập tin như sau:
3E1C6CAFFFE
6B862CC9D76
0BC38CC1BC9
90628CC6F3C
E26B9CC3C62
92A35CC943D
A84BDBCE15D
EA57CB1DF04
0F102CC74CB
386E8CC4DFF
92606CC0BDA
0799FC8149A
024CFCBD0DE
2D30FC47DA0
31D85CC6308
B8B3FC3DEBC
AA4C7C913D0
280F5CC8C6C
9F341CC8A26
93CD1B3B0EC
433D0BF3716
A1435CB4C38
2DB04CC911D
56A29CC8819
11881C8268C
5C050A79851
C6739CC4BA5
11D3FCC7D09
8CBC0B20E0A

15.  Delete from queue by Email address
Bằng CLI (Command Lind Interface)



How to config Zimbra with external email address

Các bước để cấu hình external email address

Bước 1. Cấu hình relay host

 zmprov md viettel.com.vn zimbraMailCatchAllAddress @test.com.vn  // @test.com.vn là domain cần relay
 zmprov md viettel.com.vn zimbraMailCatchAllForwardingAddress @test.com.vn
 zmprov md viettel.com.vn zimbraMailTransport smtp:192.168.132.37 //gui den smtp may chu 
 zmprov mcf zimbraMtaRelayHost 192.168.132.37
 zmprov mcf zimbraMtaDnsLookupsEnabled FALSE        //Khong su dung DNS    

Bước 2. Cấu hình nhận POP3

Khi lỗi  certificatethì có thể làm các bước sau:
Thứ nhất : 
# su - zimbra
# zmlocalconfig | grep javamail_pop3_enable_starttls

Nếu kết quả hiển thị ra là  javamail_pop3_enable_starttls = true
Đổi tham số javamail_pop3_enable_starttls là FALSE

# zmlocalconfig -e javamail_pop3_enable_starttls=false
# zmmailboxdctl restart
Sau đó grep lại 
# zmlocalconfig | grep certs
  data_source_trust_self_signed_certs = false
  mailboxd_truststore = /opt/zimbra/java/jre/lib/security/cacerts
  ssl_allow_accept_untrusted_certs = true
  ssl_allow_mismatched_certs = true
  ssl_allow_untrusted_certs = false
# zmlocalconfig -e ssl_allow_untrusted_certs=true
# zmlocalconfig -e data_source_trust_self_signed_certs=true
# zmmailboxdctl restart

Như vậy là đã fix xong lỗi hệ thống.
Chi tiêt tham khảo tại đây

Thứ Hai, 16 tháng 11, 2015

37 Nguồn Resource Dành Cho Web Developer

TIN TỨC: Cập nhật các xu hướng và thông tin mới nhất trong ngành

HTML5Weekly chọn lọc các thông tin về HTML5 và nhiều công nghệ trên nền tảng web khác. Bạn có thể đăng ký nhận tin từ HTML5Weekly vào mỗi thứ tư hàng tuần.
Hacker NewsDiễn đàn công nghệ web Y Combinator được trang bị đầy đủ các thông tin cần biết cho web developer. Tạo một tài khoản nếu bạn muốn tham gia bình chọn và thảo luận trong những tin tức thú vị.
Slashdot cập nhật những tin tức mới nhất về công nghệ nói chung, đặc biệt là về coding. Lọc thông tin theo mức độ “phố biến” nếu bạn chỉ vó một vài phút để lướt qua các tiêu đề.
Reddit giúp bạn cập nhật những thông tin hot nhất về front-end và thoải mái tham gia vào topic nào mà bạn quan tâm.
A List Apart. Website này đã có mặt từ năm 1998, đi sâu vào các thiết kế, và ý nghĩa sâu sắc hơn về Internet, đặc biệt dành cho những developer làm web. Đây là một điểm đến mới mẻ cho những bạn muốn tìm kiếm sự đa dạng về thông tin + nội dung kích thích tư duy.

NETWORKING: Tương tác với các developer khác

github-octocatGitHub – cộng đồng open-source lớn nhất thế giới này là một trong những nguồn resource vô giá cho mọi developer. Chia sẻ code với bạn bè, đồng nghiệp, người lạ… bất cứ ai mà bạn nghĩ rằng mình có thể học hỏi từ họ. Bạn có thể lướt nhiều project từ vô số chủ đề khác nhau, xem những repo dẫn đầu xu hướng, theo dõi những nội dung mà bạn bè bạn đang quan tâm.
Coderwall là một nền tảng tương tác trực tuyến giúp developer nâng cao kiến thức lập trình. Bạn có thể chia sẻ các đoạn code, tutorial, và cả suy nghĩ của mình để học hỏi từ các chuyên gia về nhiều ngôn ngữ, công cụ và công nghệ mới nhất. Bạn chỉ cần đăng nhập bằng Twitter, LinkedIn, hoặc GitHub, là có thể bắt đầu tương tác và kiếm nhiều huy hiệu dựa trên thành tựu sự nghiệp của bạn để trưng bày trên profile cá nhân.
Stack Overflow giống như Quora dành cho developer. Bạn có thể lướt tìm câu trả lời trong kho tàng câu hỏi khổng lồ, hoặc đăng câu hỏi của riêng bạn và theo dõi nếu có phản hồi. Đây là một cơ hội tuyệt vời để tạo kết nối với những expert trong ngành từ nhiều quốc gia trên thế giới.
Geeklist là một mạng xã hội giúp developer 1) thể hiện portfolio của họ, 2) bình chọn, nhận xét về nhau, 3) chia sẻ link và resource, 4) kết nối với hơn 2000 nhóm cộng đồng nhỏ cùng những developer đẳng cấp.
CodePen giúp bạn thể hiện sự sáng tạo trong code và nhận nhiều đóng góp để cải thiện. Xem ‘pen’ của các developer khác cũng là cách hữu hiệu để tạo nguồn cảm hứng cho bạn.
CSS Community trên Google+ là một cộng đồng hoạt động sôi nổi dành cho tất cả những dev đang làm việc với CSS. Bạn có thể lượm lặt được rất nhiều kỹ thuật, tip, trick, câu trả lời cho vô số câu hỏi, đồng thời tham khảo nội dung mà những developer khác chia sẻ.
Front-end Front là nơi mà front-end dev hỏi đáp, thảo luận, chia sẻ những link hay, và thể hiện công việc của họ với cộng đồng.

LEARN TO CODE: Chỉ cần có WiFi là bạn có thể học ở bất cứ nơi đâu

Udacity là nơi tập hợp không chỉ tài liệu mà còn nhiều đoạn video ngắn trong vài phút nhấn mạnh vào bài học bởi nhiều câu đố và bài tập giúp bạn dễ dàng tiếp thu chúng. Nhiều tài liệu hoàn toàn miễn phí, nhưng bạn cũng có thể trả tiền để được học riêng với giảng viên hoặc tham gia vào các project thực tế của khóa học.
Udacity
Codecademy. Nếu muốn bắt đầu từ số 0 thì Codecademy là nơi dành cho bạn. Codecademy có giao diện đơn giản, dễ sử dụng, bao gồm nhiều khóa học như HTML, CSS, Javascript, jQuery, Python, Ruby và PHP hoàn toàn miễn phí. Mỗi khóa học đều có cam kết thời gian dự kiến để hoàn thành.
Treehouse là một nguồn thông tin khổng lồ với hơn 650 tutorials để bạn học HTML, CSS, iPhone apps… và kiếm “huân chương” làm bằng chứng cho quá trình học tập.
Code School. “Học bằng thực hành” là câu “thần chú” của Code School, cũng như của nhiều nguồn resource đã đề cập ở trên. Nhưng điểm khác biệt là Code School không dành cho người mới bắt đầu. Bạn có thể chuyển sang Code School sau khi đã hoàn thành khóa học tại Udacity, Codecademy hoặc thậm chí Treehouse. Tuy nhiên điều này cũng phụ thuộc vào level của bạn và ngôn ngữ/platform/hệ điều hành bạn đang theo đuổi. Code School có bốn mảng tài liệu chính là Ruby, HTML /CSS, iOS và JavaScript. Một số tài liệu trên Code School là miễn phí. Tuy nhiên, bạn có thể trả phí $29/tháng để có quyền truy cập vào tất cả tài liệu.
Dash là một dự án từ sở giáo dục General Assembly tập trung vào xây dựng website, đặc biệt là HTML, CSS và JavaScript. Giống Codecademy, các khóa học được thiết kế dễ dàng tương tác ngay từ đầu. Một trong những spin-offs của Dash cho phép bạn xây dựng theme Tumblr cho riêng mình. Bạn không thể trở thành một freelance Web Designer sau khi học Dash, nhưng Dash miễn phí và thân thiện cho người mới bắt đầu, vì vậy bạn chắc chắn sẽ có một nền tảng vững chắc về browser coding.

TUTORIAL: Cách học code nhanh nhất là thông qua tutorial

HTML5Rocks. Nguồn resource từ các kỹ sư của Google này là sân chơi dành cho các developer muốn tìm hiểu mọi thứ từ cách test sự đồng bộ phần mềm trên các thiết bị di động khác nhau cho đến cách định hình CSS. Bạn cũng có thể tìm thấy các file thuyết trình và video tại đây.
HTML5 Rocks
CSS-Tricks. Nếu mục tiêu của bạn là trau dồi thêm kỹ năng CSS thì không còn website nào tuyệt vời hơn CSS-Tricks.  Học hỏi thông qua các code snippet, và hàng nghìn forum với topic đa dạng như tạo dropdown menu, khắc phục sự cố hình ảnh responsive.
Smashing Magazine. Với một thư viện gồm nhiều sách hướng dẫn bỏ túi, nhiều workshop cực kỳ đơn giản, dễ hiểu, Smashing Magazine là website tuyệt vời nhất về web development. Developer tha hồ ngụp lặn trong vô số chủ về từ CSS, HTML, JavaScript đến mobile development, UX design, thậm chí là WordPress.
Tuts+ là một địa điểm không thể bỏ qua nếu bạn đang tìm kiếm các tutorial, khóa học, và ebook về coding. Bạn có thể tìm kiếm dựa theo ‘có tính phí’ hoặc ‘miễn phí’ và chọn lọc theo kỹ năng cụ thể (ví dụ JavaScript, Ruby, PHP).
Geeks for Geeks có nhiều bài học cực dễ hiểu được viết bởi những geek về khoa học máy tính. Đừng quên thử sức mình tại phần “GeekQuiz” để kiểm tra các kỹ năng lập trình hiện tại.
HTML Dog chứa đựng một kho tàng khổng lồ về HTML, CSS, JavaScript và các công nghệ mới nhất để bạn làm một web page thời thượng.

GAMES/CHALLENGES: Giữ các kỹ năng của bạn luôn nhạy bén

CodinGame.com là một nền tảng hợp nhất giữa lập trình và video game. Mục tiêu của CodinGame là để giúp developer trải nghiệm, học hỏi, cải thiện kỹ năng coding  thông qua các thử thách debug game. Đừng quên ghé qua blog và forum của CodinGame để tìm hiểu cách qua màn ở những map khó, đồng thời để cải thiện kỹ năng lập trình.
codingame
CodeCombat.com giúp nâng cấp kỹ năng coding bằng cách tham gia nhiều trò chơi online miễn phí cùng cách developer khác. Tạo một tài khoản, chọn đấu trường của bạn rồi bắt đầu cuộc chơi để hoàn thành các thử thách. Sau mỗi cuộc đấu, ngoài niềm vui, bạn còn bất ngờ vì những điều mình học được.
Codewars. Giải quyết các thử thách, sử dụng JavaScript, CoffeeScript, Ruby, Python, Clojure, hoặc Haskell. Đối đầu với những trận đấu khó nhằn hơn để nâng cao kỹ năng. So sánh giải pháp của bạn với các developer khác sau mỗi trận đấu, cùng thảo luận đâu là giải pháp tốt nhất và nâng cao kỹ năng cùng nhau.
HackerRank. Đăng nhập bằng Facebook, Google+ hoặc GitHub để cùng tranh đấu trong các codesprint và xem bạn đang ở mức độ nào so với các developer cùng cấp. So tài và sưu tầm huy chương trong năm lĩnh vực: Artificial Intelligence, Algorithms, Functional Programming, Code, và Machine Learning. Bạn còn có thể tìm thấy cơ hội việc làm tại HackerRank. Nhiều công ty, bao gồm Amazon, Yahoo, Microsoft, Skype, và Square tuyển dụng nhân tài bằng cách tổ chức các game có bảng xếp hạng trực tiếp và một code editor giúp họ interview về kỹ thuật trực tiếp với người chơi.
HackerEarth cũng đầy những thử thách về code với nhiều cơ hội thể hiện kỹ năng của bạn. Để thật sự chứng tỏ bản thân mình, bạn đừng quên tham gia vào các thử thách real-time!

UI-UX Design

GoodUI là website hiện tại đang tập hợp 71 tip về cách tạo một UI tốt cho website. Điểm nổi bật của trang này là mọi thứ được trình bày đơn giản, dễ hiểu với hình ảnh minh họa. Nhớ bookmark GoodUI lại, vì hai tác giả Jakub và Vlad vẫn đang cập nhật các tip hàng tháng.
idea001
UI Do’s & Don’ts. Apple nổi tiếng bởi thiết kế tinh tế từ sản phẩm cho đến giao diện của website. Vì vậy sẽ là một thiếu sót đáng kể nếu bạn bỏ qua các quy tắc nên và không nên áp dụng trong UI design từ các developer đẳng cấp của Apple.
7 Rules for Creating Gorgeous UI với hai phần một & hai tổng hợp những quy tắc căn bản nhất để tạo được một website với thiết kế đẹp mắt và dễ sử dụng cho người dùng.
UX Magazine là điểm đến tập hợp mọi resource liên quan đến trải nghiệm người dùng cho cả website và mobile.

SÁCH dành cho Web Developer

Core HTML5 Canvas – David Geary. Cuốn sách này được biên soạn cẩn thận với nhiều đoạn code minh họa và syntax được highligh cụ thể.
51Swm3TW72L._SX258_BO1,204,203,200_Don’t Make Me Think – Steve Krug dạy bạn cách nghĩ như một người dùng để có thể tạo website không chỉ đẹp mắt mà còn dễ sử dụng nhất.
JavaScript: The Good Parts – Douglas Crockford. Đây là quyển sách dành cho người có nhiều năm kinh nghiệm lập trình, muốn tìm hiểu cách tốt nhất để tạo và sử dụng objects, arrays, types, v.v… Ngoài ra bạn còn học được nhiều kỹ thuật, cách code hữu ích từ kinh nghiệm thực tế của Douglas.
HTML & CSS – Jon Ducket giới thiệu về HTML và CSS trong quyển sách này theo một cách mà ai cũng có thể đọc, hiểu, áp dụng – từ học sinh đến các chuyên gia. Ông sử dụng nhiều infographic và hình ảnh sống động để giải thích các chủ đề đơn giản, dễ hiểu hơn.

CƠ HỘI VIỆC LÀM dành cho Web Developer

ITviec. Với 200+ việc làm chất lượng cao dành riêng cho web developer, ITviec.com là một trong những lựa chọn hàng đầu cho những bạn có nhiều năm kinh nghiệm, tìm kiếm một công việc tốt với lương và lợi ích hấp dẫn.
LinkedIn. Với 332 triệu người sử dụng trên 200 quốc gia, LinkedIn là một trong những điểm đến không thể bỏ qua cho developer. Một vài bí quyết giúp bạn có được công việc nhanh chóng hơn là: 1) cập nhật thông tin cá nhân thường xuyên, 2) trau chuốt đoạn summary thật ấn tượng, 3) tham gia vào các cộng đồng phù hợp với kỹ năng, 4) tạo độ tin cậy cho bản thân bằng cách nhờ khách hàng hoặc đồng nghiệp, sếp cũ viết nhận xét cho bạn, 5) phản hồi các tin nhắn nhanh chóng.
Guru. Khu vực Web, Software & IT trên Guru là một mỏ vàng cho các freelancer. Cố gắng nhận được job, làm tốt, và được nhiều đánh giá cao từ nhà tuyển dụng, có khi số tiền bạn kiếm được còn cao hơn cả từ công việc chính thức hàng ngày.
Freelancer.  Tạo một tài khoản và tha hồ tìm kiếm các công việc về Web Development, Web Design tại freelancer.
Elance cũng là một trong những điểm đến hàng đầu của các developer freelance với gần 100,000 job thường trực trên website.
Nguồn: ITviec

Giao Tiếp Tồi Phá Hủy Sự Nghiệp Project Manager

“Anh có thể nói, không giao tiếp được với khách hàng sẽ đưa em tới hai hậu quả: 1) dự án của em trở thành thảm họa; 2) em mất khách hàng.”
Đọc bài phỏng vấn của ITviec với anh Phan Duy Khánh – Project Manager của Studio 60 – để nghe anh chia sẻ về:
  • Thất bại anh đã trải qua và bài học về giao tiếp giúp anh thành công như hôm nay
  • Những thử thách thường gặp của một Project Manager
  • Lời khuyên anh dành cho các bạn Project Manager hiện tại và tương lai
Tiểu sử: Sau khi tốt nghiệp trường FPT ngành CNTT, anh Khánh làm ở FPT Software với vị tríASP.NET Developer. Sau đó, anh cùng vài người bạn làm một startup app, cụ thể là một ứng dụng tìm kiếm địa điểm ăn uống, giống Foody, nhưng sau sáu tháng thì nó thất bại. Sau đó thì team giải tán, anh cùng bạn bè thành lập Silver Lining Ltd., công ty chuyên phát triển ứng dụng di động Android và iOS. Anh làm developer, nhưng từ từ anh giảm dần thời gian coding và chuyển sang quản lý. Lí do là anh nhận ra trong team 10 người nhưng không ai đứng ra đảm nhận vai trò quản lý dự án cả, ai cũng chỉ chăm chăm vào code, dự án xong nhưng không đồng nghĩa team mình thành công, do không có ai làm chốt chặn cuối cùng và chốt đầu tiên phong. Sau khoảng một năm thì anh chuyển hẳn sang quản lý và anh là người đứng ra liên hệ với khách hàng nhiều hơn. Hiện tại anh đang là Project Manager (PM) cho Studio 60.

Anh có thể chia sẻ công việc hàng ngày của một PM là gì không ạ?

90% việc của PM liên quan đến giao tiếp như hoạch định, giải quyết sự cố, quản lý rủi ro, giao tiếp với khách hàng. Xét về vai trò thì anh kiêm luôn việc của BA là nhận request, trao đổi, thương lượng mọi thứ với khách hàng.

Anh có nghĩ là việc xuất thân từ developer đã giúp anh rất nhiều trong việc trở thành PM?

Theo anh, PM là người làm mọi thứ có thể để đảm bảo dự án thành công. Dự án thành côngtheo định nghĩa của anh là: hoàn thành đúng hạn, trong ngân sách cho phép, đúng scope, team vui vẻ, khách hàng hài lòng.
Vì vậy, thời gian làm lập trình viên giúp anh hiểu khó khăn của các bạn developer, từ đó anh giúp họ vượt qua để cùng đưa dự án đến với thành công. Nhưng đồng thời, có nền tảng về kỹ thuật cũng gây trở ngại cho anh trong khoảng thời gian đầu làm PM.
Project đầu tiên làm PM, do cái tôi “xuất thân kỹ thuật” nên anh đưa ra solution và áp đặt các bạn developer làm theo khiến họ không phát huy được 100% khả năng. Ngoài ra, do lần đầu làm PM cho một dự án lớn, chưa có kinh nghiệm làm việc nhiều với khách hàng dẫn đến dự án thất bại, công ty bị lỗ, khách hàng không hài lòng.
Anh nhìn lại mình khi còn là một developer, anh cũng muốn được cấp trên lắng nghe ý kiến. Từ đó, anh rút ra bài học là nên hỏi các bạn developer và tech lead về giải pháp của họ trước. Anh vẫn có giải pháp của anh, nhưng anh chỉ dùng nó để hướng dẫn khi các bạn chưa tìm được hướng giải quyết phù hợp thôi.

Theo anh, đâu là điểm khác biệt lớn nhất giữa developer và PM?

Điểm quan trọng nhất anh nghĩ là cách tạo ra giá trị.
Giá trị của developer là hoàn thành công việc được giao, code sạch, ít bug, giao tiếp tốt với team.
Giá trị của PM là team làm việc hiệu quả, khách hàng vui vẻ, dự án hoàn thành đúng hạn, đúng ngân sách, đúng yêu cầu. Một dự án thất bại, bất kể do lỗi của ai thì PM vẫn là người chịu trách nhiệm lớn nhất, và không được đổ lỗi.
Anh Khánh đứng ngoài cùng bên phải, cùng đồng nghiệp ở Studio 60.
Anh Khánh đứng ngoài cùng bên phải, cùng đồng nghiệp ở Studio 60.

Có cách nào để mình giảm thiểu rủi ro trong việc quản lý dự án không anh?

Dự án nào cũng có rủi ro. Làm một PM, em phải có mục quản lý rủi ro cho mọi dự án.
Tuy nhiên, định nghĩa của anh về “rủi ro” là những cái có thể xảy ra. Tức là nó có thể giúp dự án hoàn thành nhanh hơn hoặc chậm hơn. Có nhiều loại rủi ro: nhân lực, kỹ thuật, khách hàng, và quy trình.
Lúc trước anh từng đối mặt với rủi ro về nhân lực. Trong dự án đó, anh nhắm thời gian hoàn thành cả project là 10 tuần. Nhưng đến tuần thứ 8 thì chỉ mới hoàn thành 60% công việc do dự án khá lớn mà lại ít nguồn lực.
Trước khi bắt đầu, anh đã đưa ra ba hướng giải quyết cho rủi ro này: 1) hỏi các bạn developer trong team có chịu làm thêm giờ không; 2) thương lượng với khách hàng về việc dời thời gian bàn giao sản phẩm; 3) nếu khách hàng không đồng ý dời thì cam kết giao sản phẩm với những chức năng chính, và bổ sung các chức năng phụ trong vòng 3 tuần.
Cuối cùng, do thông báo sớm và nói thật với khách hàng, nên họ đã đồng ý cho dời deadline, team cũng làm thêm giờ, dự án bị trễ nhưng về tổng thể khách hàng vẫn vui vẻ với kết quả cuối cùng, team cũng cảm thấy thoải mái.
Quản lý rủi ro không chỉ là kỹ năng cần thiết của PM, mà còn là của developer nữa.

Vì sao quản lý rủi ro lại là kỹ năng cần thiết cho developer vậy anh?

Rủi ro có thể xảy ra ở mọi khâu. PM đưa ra kế hoạch dựa trên đánh giá từng công việc nhỏ của developer. Ví dụ developer đang estimate một feature, thì muốn hoàn thành feature, ngoài code còn cần học document, sửa bug, kiểm tra tất cả test case…
Cụ thể hơn, trước mỗi dự án, anh và team đều đưa ra một định nghĩa gọi là “definition of done.” Ví dụ một feature như thế nào thì gọi là done? Chính là code xong không có bug, đã được chính developer đó test tất cả test case, được commit lên server, đã đưa lên Dev server để QC test, được technical lead review code và duyệt. Lúc các bạn dự trù thời gian, cần tính toán cho tất cả các công việc trên. Thông thường thì mọi người chỉ đánh giá thời gian code mà không tính đến thời gian mình sửa bug, chuyển qua lại giữa tester và developer.

Anh từng mắc phải sai lầm nào và anh học được gì từ nó?

Một trong những dự án đầu tiên anh làm PM đã thất bại. Sai lầm lớn nhất là anh không kiểm soát được mong đợi của khách hàng. Họ nói gì anh cũng YES, YES, YES. Sau một hồi toàn YES, nó dẫn đến việc anh làm dự án hoàn toàn theo ý khách hàng, nhưng ra đời lại là một sản phẩm tồi, họ không dùng được. Lúc đó khách hàng quay ngược lại hỏi anh vì sao lúc trước anh không tư vấn cho họ.
Anh rút ra bài học là khách hàng không phải lúc nào cũng đúng. Anh cần phải cứng để nói “NO” và tư vấn cho họ. Trong vài dự án tiếp theo, thấy mình không đủ kiến thức kỹ thuật để thuyết phục thì anh đi cùng với technical lead, không đủ kiến thức về thiết kế thì đi cùng với designer để nói chuyện với khách hàng.
Đến cuối cùng, khách hàng vẫn không chịu solution anh tư vấn thì anh gửi cho họ một email bảo là: “Sẽ có hậu quả A, B, C có thể xảy ra, nếu anh vẫn muốn làm thì phải chuẩn bị tâm lý đối diện các hậu quả đó. Nếu xảy ra vấn đề gì thì anh phải chịu trách nhiệm, vì chúng tôi đã tư vấn rồi.”

Anh có lời khuyên nào dành cho các bạn muốn trở thành PM trong tương lai?

Khanh
Anh Khánh tại Agile Tour 2014.
Vai trò lớn nhất của PM là quản lý người khác, vì vậy anh nghĩ cái đầu tiên là bạn phải quản lý được mình. Khi bạn quản lý được chính mình rồi thì bạn mới quản lý được người khác.
Cách đơn giản nhất để quản lý bản thân là làm kế hoạch tuần và to-do list trong ngày để hoàn thành mọi việc đúng hạn. Ví dụ hôm nay, anh ghi trong to-do list của anh là 1) review project A với team .Net, 2) phỏng vấn với ITviec, 3) họp với một khách hàng ở Sing lúc 14:00. Lưu ý là to-do list này em cũng phải đánh số thứ tự theo mức độ ưu tiên của công việc.
Lời khuyên thứ hai của anh là các bạn nên học cách “say NO.” Như câu chuyện anh chia sẻ ở trên, hậu quả của việc không kiểm soát được kì vọng của khách hàng chính là dự án thất bại. Vì vậy, cần tập luyện cách nói “không” với những yêu cầu mình thấy không khả thi.
Cuối cùng, cá nhân anh nghĩ developer là những người rất tài năng. Bạn nên lắng nghe, hỏi ý kiến của họ và hướng dẫn họ đi đến hướng giải quyết phù hợp. Nếu bạn áp đặt giải pháp của bạn lên developer, thì tất cả chỉ dừng lại ở tầm hiểu biết của bạn. Việc áp đặt sẽ khiến dự án không phát triển, team không phát triển, môi trường làm việc không vui vẻ. Không ai muốn làm trong một môi trường như vậy cả.

Anh có thể cho biết những kỹ năng nào là quan trọng nhất đối với một PM?

Quan trọng nhất là em phải có kỹ năng lên kế hoạch và kỹ năng giao tiếp, vì 90% thời gian của em là giao tiếp với khách hàng và team.
Giao tiếp không chỉ dừng lại ở việc ghi nhận đúng yêu cầu của khách hàng, mà còn ở quản lý sự cố. Lúc trước anh có một dự án sắp release mà vẫn đầy bug. Khi đó, giao tiếp là cách anh nói để khách hàng thông cảm với mình, thời điểm nói để khách hàng không bị bất ngờ, đồng thời cũng là cách nói chuyện với team để mọi người đồng lòng làm việc nhằm hoàn thành sản phẩm sớm nhất.
Lúc đó, anh báo với khách hàng trước ngày release 3 tuần, và đảm bảo là sẽ hoàn thành dự án trong 16 tuần, thay vì 12 tuần như cam kết ban đầu. Đồng thời, sau 12 tuần, anh sẽ deliver sản phẩm với tính năng A, B, C trước. Ngoài ra, trước khi thương lượng với khách hàng, anh đã thương lượng với team trước xem mọi người chịu làm thêm giờ không, hay cần outsource ra ngoài, và mọi người đều đồng lòng làm thêm giờ.
Thứ hai là em phải có tiếng Anh tốt. Tiếng Anh tốt giúp em có khả năng thăng tiến nhanh hơn đến vị trí Program Manager, Program Director, General Manager… Đây là những nấc thang tiếp theo, sau vị trí Project Manager.
Ngoài ra, nếu em làm PM cho một công ty ODC hoặc các công ty lớn, em phải làm việc thường xuyên với khách hàng nước ngoài. Nếu em làm cho các công ty nhỏ với dự án tầm trung, kéo dài khoảng 3-6 tháng và team dưới 10 người thì cũng không có BA đi lấy requirement cho em, mà chính em phải làm luôn việc đó. Nói tóm lại, dù làm ở công ty nào thì một PM cũng đều cần khả năng tiếng Anh tốt. Anh có thể nói, không giao tiếp được với khách hàng sẽ đưa em tới hai hậu quả: 1) dự án của em trở thành thảm họa; 2) em mất khách hàng.
Lúc trước bạn anh có làm dự án fix scope, fix time, fix budget theo Waterfall. Do tiếng Anh không vững nên lúc khách hàng đưa yêu cầu, anh bạn đó cứ ok, ok, yes, yes. Sau vài tháng, khi giao sản phẩm thì vỡ lẽ ra là khách hàng muốn A mà mình lại làm B. Khách hàng không hài lòng, không trả tiền cho milestone cuối, mình mất khách hàng, họ không dùng được sản phẩm, đó là một dự án thất bại.

Theo anh, có thử thách nào mà mọi PM đều phải đối mặt?

Thử thách mà anh nghĩ PM nào cũng phải trải qua chính là thử thách về việc đảm bảo chất lượng của dự án. Ví dụ hồi trước anh có làm dự án để launching một app. Nhưng trong một đêm, app đó lên đến hàng chục nghìn lượt truy cập, làm server chết và khách hàng gọi đến “cháy máy” để hỏi anh xem phải làm sao. Lúc đó, anh, một bạn tech lead, và một bạn developer phải thức đến khuya để đảm bảo là server hoạt động lại bình thường. Đó là “vấn đề” tốt, vì nó chứng tỏ là app mình làm thành công. Nhưng đi kèm vẫn là thử thách làm sao để luôn đảm bảo chất lượng của dự án.

Anh có tham khảo resource/ ebook nào trong suốt sự nghiệp của mình không?

Một số sách anh đọc thấy hay là:
The One Minute Manager. Sách này ngắn nhưng đề cập đến những điều kỹ năng quan trọng cho người làm manager.
Vì anh làm Scrum nên anh đọc cuốn Scrum Primer để học thêm về Scrum.
Software in 30 Days. Sách này là về Agile, nó giúp anh hiểu hơn về Scrum Framework.
Ngoài ra còn có  PMBOK, sách gối đầu cho mọi PM muốn lấy PMP
Nguồn: ITviec