Kiến lập trình


"Kiến là một họ côn trùng thuộc bộ cánh màng. Kiến có một tập tính xã hội cao, có thể sống thành đàn với một số lượng vô cùng lớn. Kiến chăm chỉ kiếm ăn quanh năm suốt tháng và để lại nhiều bài học sâu sắc mang lại ý nghĩa nhân văn to lớn như nhẫn nại, bền bỉ, không ngại vất vả, v.v.."
 
Thôi được rồi, tôi dám cá nhiều người ở đây không ưa loài kiến một chút nào. Chúng có thể làm ta ngứa ngáy, mẩn đỏ hoặc tồi tệ hơn là xơi mất miếng bánh mì quên ăn của chúng ta. Nhưng sở dĩ tôi lấy kiến để mở đầu của bài viết này là vì dạo gần đây tôi được cơ hội để tiếp xúc với thuật toán Đàn kiến – Ant colony optimization alogorithms (ACO) để kết hợp với machine learning. Đây là thuật toán đã được sử dụng để giải quyết các bài toán tối ưu hoá như người bán hàng (travelling sales man problem) hoặc định tuyến phương tiện (Vehicle routing problem). Có lẽ đối với những anh em ở đây thì thuật toán này không quá xa lạ. Thuật toán được dựa trên hành vi kiếm ăn của đàn kiến. Kiến có khả năng tìm ra con đường ngắn nhất giữa tổ của chúng và nguồn thức ăn bằng cách sử dụng các vệt pheromone. Kiến để lại pheromone trên mặt đất khi di chuyển và có thể coi đây là phương thức để liên lạc giữa những cá thể kiến với nhau. Mới đầu, mỗi cá thể kiến có thể có những đường đi riêng. Sau một quá trình lặp đi lặp lại, kiến sẽ dựa vào nồng độ pheromone để quyết định hướng di chuyển. Con đường nào càng có nồng độ pheromore cao, nghĩa là càng nhiều kiến đi qua trước đó, xác suất kiến sẽ chọn đi theo con đường đó càng lớn. Hoặc cũng có thể nói chính những nồng độ pheromore đó đã giúp kiến có thể đi đến địa điểm cần tới một cách tối ưu nhất.
 
Sự mày mò tìm đường lúc ban đầu của kiến làm tôi suy nghĩ đến quá trình học lập trình của mình. Ở năm thứ 4 đại học, tôi có dự định tạo ra một website về sự kiện. Do không học đúng chuyên ngành IT nên với số vốn ít ỏi là 4 tín chỉ C++, tất nhiên tôi không biết phải bắt đầu từ đâu.  Thời điểm đó tôi chỉ có cách lần mò trên google để tìm kiếm những hướng dẫn. Tôi học html, css trên W3school, rồi đến php, wordpress trên những trang blog như Thachpham, hoặc nếu gặp bug thì tra cứu trên Stack Overflow. Nếu không có những “vệt pheromone” đó thì tôi chả thể nào có thể hoành thành được sản phầm của mình (mặc dù cuối cùng nó vẫn thất bại thảm hại). Sau này khi làm việc nhiều hơn với Python để phục vụ quá trình làm nghiên cứu sinh của mình, cái tôi học được đó là khi tiếp cận một công nghệ mới thì cần nhẫn nại đọc tutorial trên Hashnode, Medium hoặc đọc documentation từ những nhà phát triển. Những kiến thức gần như được viết ra và chia sẻ một cách phi lợi nhuận. 
 
Ants.png 1.18 MB
Những “vệt pheromone” không chỉ dừng lại ở việc chia sẻ kiến thức, mà còn bao gồm cả những kinh nghiệm trong chuyện đời, chuyện nghề. Các cộng đồng và diễn đàn lập trình luôn cung cấp và đưa ra nhũng chỉ dẫn về nghề nghiệp, cũng như các cơ hội việc làm. Họ chào đón những người mới - những người có thể có những xuất phát điểm hoặc nền tảng, chuyên ngành khác nhau. Khía cạnh kết nối này của cộng đồng lập trình mở ra những cơ hội mới và thúc đẩy sự chuyên nghiệp. Cộng đồng cũng được mở rộng hơn qua các các chuỗi bootcamp, hackathon - nơi các lập trình viên tập hợp, kết nối và chia sẻ kiến thức và kỹ năng của họ. Với một cá nhân, con đường nào vẫn có thể đến được đích nếu chăm chỉ và nỗ lực, nhưng cộng đồng sẽ giúp ta tìm được con đường ngắn nhất và nhanh nhất. 
 
Nồng độ của những “vệt pheromone” có sự suy giảm theo thời gian nếu những thế hệ sau không tiếp bước thế hệ trước. Vậy nên tính kế thừa là điều không thể thiếu để cộng đồng có thể duy trì. Nếu bạn là một người mới, hoặc cảm thấy mình chưa làm được gì nhiều cho cộng đồng, hãy mạnh dạn chia sẻ kiến thức của mình, tham gia đóng góp vào các dự án mã nguồn mở, hoặc đơn giản là tích cực hơn ở các cuộc thảo luận trên mạng xã hội.
 
"Lập trình viên là một lớp người có khả năng hô biến và chuyển hoá cafein và pizza thành những phần mềm kỳ diệu. Lập trình viên có một tập tính xã hội cao, có thể sống thành đàn với một số lượng vô cùng lớn. Lập trình viên chăm chỉ kiếm ăn quanh năm suốt tháng và để lại nhiều bài học sâu sắc mang lại ý nghĩa nhân văn to lớn như nhẫn nại, bền bỉ, không ngại vất vả, v.v.."