Tiếp tục phần trước, hãy cùng tôi tìm hiểu những thói quen có thể khiến cho con đường sự nghiệp của bạn gặp nhiều trở ngại. Biết lập trình là một chuyện, làm một lập trình viên chuyên nghiệp và có cơ hội thăng tiến trong sự nghiệp lại là một chuyện khác.
Phụ mục
Ngắn gọn chưa hẳn đã tốt
Một lập trình viên nào cũng muốn đoạn mã của mình càng ngắn gọn càng tốt. Vì ngắn gọn sẽ dễ đọc hơn nếu bạn cần phải chỉnh sửa lại, đặc biệt là trong những thuật toán phức tạp. Ở đây NhanWeb xin bàn đến 2 yếu tố ngắn gọn:
– Trường hợp 1: để tiết kiệm, một số biến đơn giản thường được tối ưu lại cách đặt tên. Ví dụ như $a, hay $b, $ds, $rs… là những cách đặt tên biến phổ biến mà khi tôi còn đi học đã được các thầy giáo, cô giáo đưa vào đầu. Với thói quen này, bạn sẽ gặp rắc rối nếu đoạn mã của bạn hơi dài hoặc ở một thành phần khác phải sử dụng các biến này. Hoặc bạn sẽ không nhớ đã đặt biến $a ở một đoạn mã nào đó phía trên hay không(khi bạn khai báo lại, tham trị của biến $a ở trên sẽ mất); hoặc bạn không nhớ biến $a đã và đang chứa giá trị nào. Liệu $a ở trên chứa giá trị của một mảng, hay $a là một đối tượng… ? Các ngôn ngữ lập trình cung cấp cho bạn cơ chế đặt biến với nhiều kí tự, hãy đặt tên biến dài và đầy đủ để tương tác dễ dàng hơn.
– Trường hợp 2: cú pháp rút gọn. Đây là trường hợp phổ biến hơn và tôi tin chắc rằng nhiều người cũng đã từng đau đầu với nó. Với một cấu trúc điều khiển if else bạn có nhiều cách viết khác nhau. Kiểu rút gọn chúng ta sẽ có:
[/code]
Đoạn code trên có vẻ ổn, nhưng nếu trong mệnh đề if chúng ta phải thực thi nhiều hành động thì sao ? Chúng ta sẽ thử một cách viết khác cũng rất quen thuộc trong PHP:
[code lang=”php”] if( $foo<10 )if( $foo>5 )
echo "Greater than 5!";
else
echo "Less than 5!";
else
echo "Greater than 10!";
echo "<br />Another note.";
[/code]
Thoạt nhìn có vẻ ổn, nhưng thực ra không ổn tí bào vì với cách viết rút gọn không có cặp dấu ngoặc nhọn ({}) này chỉ một lệnh bên trong được thực thi theo đúng điều kiện. Điều này vừa khó đọc cho người khác, vừa dễ gây nhầm lẫn dẫn đến thuật toán bạn cài đặt có thể sai. Chúng ta bổ sung cặp dấu ngoặc nhọn và làm cho mã dài dòng thêm một tí:
[code lang=”php”] if( $foo<10 ){
if( $foo>5 )
{
echo "Greater than 5!";
}
else
{
echo "Less than 5!";
}
}
else
{
echo "Greater than 10!";
}
echo "<br />Another note.";
[/code]
Tôi nghĩ cách viết này tuy dài dòng hơn nhưng đã giúp cho đoạn mã của bạn sáng sủa hơn rất nhiều rồi.
Bạn không theo chuẩn
Ở Việt Nam, đa phần các bạn làm lập trình độc lập hoặc rất nhiều nhóm thích “tương” theo sở thích. Bạn cứ viết mà không cần comment, không cần ghi chú, không cần giải thích về mã của mình vì đa phần mọi người cho rằng việc đó là dư thừa và tốn thời gian. Đây là một việc làm hết sức thiếu khoa học. Chính những lý do đơn giản này khiến cho việc làm nhóm trở nên khó khăn hơn bao giờ hết.
Bạn nhất thiết nên tìm hiểu về các chuẩn viết mã phổ biến và làm theo nó. Nếu bạn làm việc với PHP như tôi, bạn có thể theo chuẩn này. Đây cũng là cách bạn dễ dàng tiếp cận với các lập trình viên quốc tế và làm việc được với lập trình viên quốc tế dễ dàng.
Trùng mã
Những thứ thường được dùng thường xuyên bạn nên đưa nó vào một hàm (function) để tiện sử dụng và chỉnh sửa thay vì cứ viết đi viết lại nhiều lần rất mệt cho việc chỉnh sửa. Trên hết, như phần trước của bài này tôi có nói: bạn hãy lập một kế hoạch, phân chia tính năng và viết những đoạn mã thường xuyên được sử dụng trước để sau đó có thể dùng lại dễ dàng hơn.
Bạn không hề theo một Development Pattern nào
Bạn nhất thiết phải xây dựng một cấu trúc khi lập trình để giúp cho việc lập trình được dễ dàng và thuận tiện hơn. Nếu không việc tìm kiếm lỗi trong quá trình viết mã sẽ vô cùng phức tạp.
Một trong những mô hình phổ biến nhất hiện nay là mô hình MVC (Model – View – Controller) được ứng dụng khá nhiều trong lập trình nói chung và lập trình web nói riêng. Ngoài ra bạn cũng có thể tự xây dựng mô hình theo sở thích; tuy nhiên để làm việc theo nhóm dễ dàng bạn nên chọn những mô hình được sử dụng rộng rãi sẽ tốt hơn.
Bạn quá … thông minh
Có một ranh giới mong manh giữa những “xảo thuật” ma mãnh và việc làm cho mọi việc phức tạp hơn. Đành rằng cả hai đều chung một mục đích là giải quyết một vấn đề nào đó. Đa số các lập trình viên cố gắng sử dụng trình độ và kinh nghiệm của mình để tìm ra và giải quyết một bài toán bằng một vài xảo thuật hoặc tuyệt chiêu nào đó họ tích lũy được. Mới nhìn thì có vẻ hợp lý nhưng có nhiều vấn đề không cần bạn phải động não hoặc đòi hỏi não bạn phải có nhiều nếp nhăn. Cứ làm những điều đơn giản thôi.
Nhiều điều đơn giản khi hợp lại với nhau vẫn có thể vừa giải quyết được vấn đề, vừa trực quan và dễ xử lý hơn cái thuật toán rườm rà và cao siêu mà bạn đang dương dương tự đắc là chỉ có mình bạn mới nghĩ ra được điều đó. :)
Bạn sống trong một cái ao làng
Khi tôi mới bắt đầu đi thực tập, tôi được hướng dẫn bởi một leader của bộ phận lập trình của công ty. Mỗi khi tôi có một câu hỏi nào đó, thay vì trả lời thẳng vào vấn đề tôi hỏi. Anh ta đưa ra một số câu hỏi có liên quan xung quanh rồi sau đó bắt tôi tự suy nghĩ.
Đây là một mô típ chung của nhiều lập trình viên: họ cố gắng làm cho đoạn mã của họ càng khó hiểu đối với người “ngu ngốc” càng tốt. Để nếu như anh không thể hiểu được đoạn mã của họ anh sẽ phải bắt đầu lại từ đầu và tìm hiểu đoạn mã đó lại.
Kiểu “dấu nghề” kinh điển này khá nhiều ở Việt Nam và vô hình trung đã đi ngược lại với những tiêu chí của teamwork nói riêng và sự phát triển của xã hội nói chung.
Tóm lại bàn đừng bao giờ như vậy nếu muốn tiến xa hơn trong nghề lập trình.
Bác học… nên ngừng học!
Bạn có thể đang nắm giữ một vị trí tốt với mức lương hấp dẫn mà giới lập trình viên thèm muốn. Nhưng nếu bạn dừng học tập chừng một năm thôi, bạn sẽ bị tuột lại phía sau và nhanh chóng bị lớp đàn em qua mặt. Công nghệ thay đổi từng ngày, từng giờ và hầu hết những cập nhật mới nhất trong lĩnh vực lập trình đều nhằm giúp cho những công việc khó khăn trước đây dễ dàng hơn. Việc cập nhật sẽ giúp ích rất nhiều cho quá trình làm việc cũng như năng xuất lao động của bạn.
Cố gắng bắt kịp cộng đồng
Không! Bạn luôn mong muốn điều đó và tôi cũng khuyến khích điều đó nhưng bạn không bao giờ làm được điều đó dù bạn có bỏ ra 24 tiếng mỗi ngày để cập nhật sự phát triển. Bạn không thể lướt qua hơn 200 blog về công nghệ, về lập trình trong vòng 24 giờ được, điều đó là bất khả thi.
Thay vào đó, bạn hãy học tập những gì thực sự cần thiết đối với công việc hiện tại của bạn và nghe ngóng thông tin từ bạn bè, từ giới lập trình viên để biết được những điểm mạnh, hiểu biết của họ về một lĩnh vực nào đó tới đâu. Sau này, nếu bạn cần đụng đến những điều họ đã biết hoặc đã tìm hiểu bạn có thể đến nhờ họ hướng dẫn lại.
Tin tôi đi, bạn không thể tát hết nước ở biển Đông huống hồ chi là bể kiến thức luôn cập nhật hàng ngày, hàng giờ.
Không tự tạo cơ hội cho mình
Nếu bạn không làm một điều gì đó để thách thức bản thân thì bạn đang chết dần trong nghề. Hãy tự đặt cho mình những câu hỏi để giúp cho sản phẩm của bạn ngày một tốt hơn (ít nhất là như vậy).
- Có một công nghệ mới và liệu người dùng có thích tôi áp dụng nó vào sản phẩm của mình ?
- Bạn đã học được cách tốt hơn để thực hiện dự án này chưa ?
- Có những kiến thức nào tôi cần phải nghiên cứu và thực hành trước khi bắt tay vào dự án này không ?
- ….
Bạn chẳng bao giờ chia sẻ
Cách tốt nhất để học hỏi và nâng cao đó là chia sẻ và thảo luận với các lập trình viên khác về đoạn mã của bạn. Sẽ thật tuyệt vời khi bạn tranh luận và học tập từ các lập trình viên khác. Có thể họ không giỏi bằng bạn nhưng họ sẽ cho bạn một vài lời khuyên mà trong quá trình thực hiện bạn không nhận ra.
Đồng thời, chia sẻ cũng là một cách để bạn nhớ lâu hơn.
Bạn không có dự án nào bên ngoài
Cái khó của nhiều lập trình viên hiện nay là phải làm việc cho các công ty đã có sẵn hệ thống và họ không hề muốn phát triển hơn nữa. Những gì bạn cần làm là thực hiện một số chỉnh sửa nho nhỏ, bảo trì và đảm bảo cho hệ thống của họ hoạt động ổn định. Có vẻ sẽ nhàn hơn và bạn sẽ có nhiều thời gian rãnh rỗi hơn để nghiên cứu công nghệ, nghiên cứu xu hướng…
Nếu bạn đang làm việc trong một công ty như vậy, bạn nhất thiết nên tận dụng thời gian rãnh rỗi để nhận thêm dự án bên ngoài hoặc tự xây dựng những dự án cho riêng mình. Mục đích của việc này là bạn thực hành những kiến thức mới bạn vừa tiếp nhận và thử nghiệm nó.
Ngoài ra nếu bạn thuộc những lập trình viên đang làm việc ở những công ty như trên, bạn nên dành một ít trong quĩ thời gian rãnh rỗi của mình để làm một vài dự án nhỏ, tham gia chia sẻ hoặc phối hợp với cộng đồng lập trình viên để cùng thực hiện dự án với nhau.
Nếu không làm, bạn đã tự đào hố chôn mình vì kiến thức của bạn sẽ bị mai một.
Lời kết
Chúng ta sẽ học hỏi, chúng ta phải thay đổi bởi chỉ có như vậy chúng ta mới có thể tốt hơn. Với cái logic ấy, mỗi ngày bạn không ngừng học tập và thay đổi bạn sẽ dần dần vượt xa khỏi cái bóng của anh lập trình viên quèn, mỗi ngày bạn tiến gần hơn tới giới lập trình viên đúng “chuẩn”.
Làm thế nào để nhận ra bạn đang tốt hơn ?
Rất dễ, tôi thường mở lại những đoạn mã ngày xưa tôi viết như một cách ôn lại kỉ niệm. Mỗi lần mở ra, tôi lại cảm thấy kinh hãi :D
Tốt nhất nên mở những đoạn mã đã viết cách đây chừng 1 năm :D. Nếu bạn không cảm thấy kinh hãi, bạn đang đi giật lùi :)
Bí Ngố says
Lang thang lạc qua đây. Bóc tem bác Nhân.
Kết nhất cái lời kết của bác: “Nếu bạn không cảm thấy kinh hãi, bạn đang đi giật lùi”
:D
Mr.Hà.Kute says
Đúng vậy..kết nhất câu này
Thanh Bình says
Em là một người mới biết về WordPress và muốn học hỏi nhiều hơn nữa. Cảm ơn anh vì bài viết bổ ích này. :D Nhân tiện cho em hỏi Bộ Video học WordPress Online sao có 3 bài vậy anh? Từ giờ trở đi em sẽ cố gắng học WordPress trong website của anh và luôn luôn ủng hộ để Website này được nhiều người biết đến. >:D< :cafe: :P =))
Nguyễn Duy Nhân says
Cám ơn bạn đã quan tâm đến bộ video học WordPress. Bộ video này chỉ mới làm được 3 bài do mình cũng không có nhiều thời gian rãnh rỗi để biên tập đồng thời sẽ bị trùng với khóa học WordPress căn bản mà mình sắp dạy miễn phí ở HCM. Mình cũng có ý định tiếp tục làm tiếp bộ video nhưng do chưa sắp xếp được thời gian nên chưa làm được. Mong bạn thông cảm.
trịnh chính says
hay quá. Cảm ơn anh nhé. Em cũng đang mún thực hiện một project j đó mà bế tắc lắm. Anh đi làm có kinh nghiệm j cần thiết không chia sẻ cho em với. Cảm ơn anh nhé!