Không phải ai cũng được sinh ra để trở thành một lập trình viên. Chắc chắn là ai cũng có thể học lập trình, nhưng việc học làm thế nào để lập trình không giống như việc tạo ra một sự nghiệp đi kèm với nó. Trong thực tế, nhiều người hoàn toàn có thể là một coder tài năng nhưng vẫn không phù hợp cho sự nghiệp lập trình viên. Tôi biết điều này nghe có vẻ kỳ quặc, nhưng nó đúng hơn là bạn có thể nghĩ.
Tôi đã dành ra hơn một thập kỷ để có tấm bằng về khoa học máy tính và cứ suy nghĩ đó là nghề nghiệp dành cho mình, nhưng sau này tôi nhận ra rằng thực tế không phải như vậy – và điều đó đến từ một người rất thích công việc lập trình và các thách thức liên quan như tôi.
Có nhiều thứ cần xem xét hơn chỉ là hành động lập trình. Bạn phải xem xét toàn bộ bức tranh toàn cảnh. Nếu bạn không hoàn toàn chắc chắn rằng liệu mình có định mệnh để trở thành một lập trình viên hay không, thì đây là một số dấu hiệu có thể chỉ cho bạn đi đúng hướng.
Dấu hiệu #1: Bạn thiếu sáng tạo thực nghiệm
Mặc dù nặng về logic, lập trình cuối cùng là một nghệ thuật sáng tạo. Một chương trình mới giống như một blank canvas và các bút lông của bạn là ngôn ngữ lập trình, framework, các thư viện, v.v… Bạn đang tạo ra một cái gì đó ra từ hư không và điều này là một quá trình dựa vào những trải nghiệm không biết sợ hãi.
Những tay coder giáo điều thường nói với bạn rằng có “một cách đúng đắn” để viết ra được code tốt, nhưng điều đó không đúng sự thật chút nào cả. Một tuyên bố như vậy thật vô lý khi nói rằng chỉ có một cách để xây dựng một ngôi nhà, viết một cuốn tiểu thuyết, hoặc nấu một món thịt hầm. Có rất nhiều cách để lập trình phần mềm và bạn nên sẵn sàng để thử nghiệm.
Nếu không có sự tò mò một cách tự nhiên, bạn sẽ phát triển tầm nhìn theo một lối mòn và luôn luôn tiếp cận các vấn đề lập trình của mình từ cùng một góc độ. Vì quan điểm đó, lập trình sẽ trở thành công việc học vẹt và làm mất đi những yếu tố quan trọng khiến nó xứng đáng ở vị trí đầu tiên.
Dấu hiệu #2: Bạn không thể tự định hướng được bản thân
Tất cả các lập trình viên giỏi cần phải tự định hướng và không có cách nào khác. Khi bạn lột bỏ tất cả những chi tiết không liên quan, lập trình cơ bản là một tiến trình lặp đi lặp lại. Nếu bạn không có sự ràng buộc hay hoài bão trong code mình viết ra, thì bạn chỉ đang trở thành một kẻ đau khổ mà thôi.
Điều này đúng với bất kỳ nỗ lực sáng tạo nào (và không quan trọng việc người ta nói, lập trình là sáng tạo). Động lực của bạn để viết code phải đến từ bên trong. Bạn phải yêu thích hoạt động viết code cũng giống như khả năng tạo ra được một sản phẩm cuối cùng. Nếu bạn không yêu quá trình này, bạn sẽ chẳng bao giờ tạo ra được sản phẩm cả.
Nếu bạn thức dậy vào buổi sáng và không cảm thấy có một mong muốn cháy bỏng để lao vào làm việc trên dự án của mình, thì có lẽ lập trình không phải là hướng đi phù hợp đối với bạn.
Dấu hiệu #3: Bạn ghét những vấn đề về logic
Mặc dù là một nỗ lực sáng tạo, lập trình phần nhiều là về sửa chữa (fixing) hơn là sáng tạo (creating). Trong khi những hoạt động sáng tạo khác thường liên quan đến một quá trình sửa chữa (chẳng hạn như các nhà văn, những người cần sửa lại bản thảo của họ), lập trình độc đáo ở chỗ hầu hết các vấn đề nảy sinh đều dựa trên các lỗi logic.
Quá trình sửa chữa này, được gọi là quá trình gỡ lỗi (debugging), đó là trung tâm của lập trình. Có phải bạn thường bị cuốn hút bởi các câu đố và logic? Bạn có một mong muốn bẩm sinh để sửa chữa những thứ bị hỏng? Hay nói rộng ra, bạn có trí tò mò tự một cách nhiên về các hoạt động bên trong của sự vật? Bạn nên có câu trả lời là “Có” cho tất cả các câu hỏi ở trên.
Phần thưởng lớn nhất trong lập trình đến từ việc sửa lỗi (fixing bugs). Lỗi càng phức tạp, thì sự thỏa mãn lại càng lớn khi bạn giải quyết được nó. Nếu bạn không tìm thấy sự hài lòng trong quá trình này, thì lập trình sẽ không có gì khác hơn là một chuỗi vô tận của sự thất vọng.
Dấu hiệu #4: Bạn không thể ngồi trong thời gian dài
Bản chất của lập trình đòi hỏi bạn phải ngồi ở phía trước màn hình máy tính trong thời gian dài. Bạn có thể thay đổi bằng cách tạo cho mình một chiếc bàn đứng nhưng bản chất sẽ là như nhau: bạn sẽ phải dành nhiều thời gian ở phía trước máy tính của mình.
Có một số lo ngại khi nói đến lối sống ít vận động của những người làm việc nhiều với máy tính và có thể dẫn đến các vấn đề nghiêm trọng về sức khỏe nếu bạn không quan tâm đến nó. Nhiều khi, bạn có thể phải vật lộn với các vấn đề tinh thần như phiền nhiễu không mong muốn, bị sốt cabin, và mất năng suất.
Cuối cùng, câu hỏi đặt ra là: bạn có cảm thấy thoải mái khi ngồi trước máy tính hầu như suốt cả ngày? Trong thực tế,thoải mái có thể không đủ; bạn phải thích được ngồi trước máy tính. Nếu không, năng suất và hạnh phúc của bạn đang ở trong một trận chiến rất cam go.
Dấu hiệu #5: Bạn muốn làm việc theo giờ giấc bình thường
Nghề nghiệp lập trình thường rơi vào một trong hai loại: 1) bạn làm việc cho người khác hoặc 2)bạn làm việc cho chính mình. Dù là loại nào, thì chúng ta cũng hay nghe những câu chuyện về những hôm phải làm việc đến tối khuya cho kịp deadline (thời hạn hoàn thành và bàn giao sản phẩm), những phiên lập trình dài dằng dặc, và chất lượng cuộc sống nói chung bị ảnh hưởng.
Phát triển phần mềm là một ngành công nghiệp lấy deadline làm trung tâm và các deadline không phù hợp với kiểu làm việc từ 9h sáng đến 5h chiều theo kiểu giờ hành chính. Khi thời hạn deadline đến gần hơn, các đội lập trình thường phải bước vào một giai đoạn của “khủng hoảng (crunch time)” được định nghĩa là họ phải làm việc overtime như những con cú đêm. Ngay cả khi làm việc cho chính mình, bạn cũng phải dành ra nhiều giờ mỗi ngày để học tập và làm việc nếu bạn muốn dẫn đầu so với các đối thủ cạnh tranh.
Ngoài ra, vấn đề lập trình có xu hướng luôn nằm trong tâm trí của bạn và nó đi theo bạn khắp mọi nơi. Bạn sẽ vẫn không ngừng suy nghĩ về các giải pháp trong khi đang tắm, di chuyển trên đường, và ngay cả khi nằm ngủ trên giường nữa. Có rất nhiều các giải pháp lập trình lóe ra trong đầu khi bạn không trực tiếp ngồi viết code, thật khó để phân chia bộ não thành nhiều ngăn để tách biệt lập trình và cuộc sống, hay có thể nói điều đó là không thể.
Nếu may mắn, bạn có thể tìm thấy một công ty không làm việc theo phong cách có crunch time (thời gian làm việc cật lực để kịp deadline), nhưng tôi sẽ không tính đến trường hợp này.
Dấu hiệu #6: Bạn mong đợi mình trở nên nhanh giàu có
Có một thời gian trước đây khi phát triển phần mềm là một sự theo đuổi lợi nhuận. Ngày nay, các lập trình viên đạt được sự giàu có nhanh chóng chỉ là những ngoại lệ cho quy tắc này. Nếu động lực chính của bạn khi vào ngành này là để kiếm được thật nhiều tiền trong thời gian ngắn, thì bạn sẽ thất vọng đấy.
Câu chuyện thành công chỉ sau một đêm, chẳng hạn như sự phổ biến của game Flappy Bird, có thể thu hút chúng ta vào sự mong đợi sai lầm và niềm tin ảo tưởng. Rất nhiều người đã cố gắng nhảy vào lĩnh vực phát triển game độc lập với hy vọng sẽ trở nên thành công, nhưng đều thất bại và đã phải âm thầm rời khỏi ngành công nghiệp này.
Bạn có thể kiếm được nhiều tiền với vai trò là một lập trình viên? Chắc chắn rồi, nhưng nó sẽ không phải là một con đường bằng phẳng và dễ dàng. Nếu bạn đang tìm kiếm một cách để làm giàu nhanh chóng, có lẽ bạn nên chơi sổ xố thì tốt hơn.
Kết luận
Nếu bạn đã quyết định rằng lập trình không phải dành cho mình, nhưng bạn vẫn muốn sử dụng các kỹ năng liên quan đến lập trình và kiến thức mà bạn đã xây dựng được trong những năm qua. Thì dưới đây là một số lựa chọn dành cho bạn.
Viết lách (Writing). Các kinh nghiệm kỹ thuật từ lập trình có thể làm cho bạn rất phù hợp cho việc viết các tài liệu kỹ thuật (sách hướng dẫn, tài liệu, v.v…), nghề nhà báo (luôn cập nhật những tin tức và những công nghệ nóng hổi), hoặc giáo dục (dạy lại người khác những gì bạn biết).
Phân tích (Analysis). Tùy thuộc vào lĩnh vực chuyên môn của mình, bạn có thể áp dụng kiến thức của bạn để trở thành một nhà tư vấn cho các hệ thống an ninh, các nền tảng web, các game engine, các mô hình thanh toán, v.v… Kiểm thử đảm bảo chất lượng (QA) cũng là một lĩnh vực chuyên môn nơi mà kỹ năng phân tích có thể hữu ích.
Quản lý (Management). Nếu trái tim bạn dành cho kinh doanh nhưng bạn muốn duy trì kết nối với ngành công nghiệp phần mềm, thì tại sao lại không tự quản lý đội lập trình viên của riêng bạn? Những người quản lý hiểu được sâu sắc về công việc lập trình sẽ có rất nhiều lợi thế.
Danh sách trên chỉ liệt kê một vài công việc mà bạn có thể làm. Nên nhớ rằng, ngay cả khi bạn nhận ra mình không muốn làm một lập trình viên nữa, những kỹ năng đó có thể chuyển đổi và thời gian của bạn sẽ không hề bị lãng phí.