Liệu có quá muộn để tôi đổi nghề và trở thành một lập trình viên?

Bài viết được dịch từ trang web Mashable

Học lập trình trực tuyến cơ bản đến nâng cao
Tôi có nên theo đuổi đam mê để trở thành một lập trình viên?

Câu hỏi này ban đầu xuất hiện trên trang hỏi đáp Quora.

Tôi 24 tuổi và mới bắt đầu học lập trình. Tôi muốn trở thành một lập trình viên. Liệu ở tuổi này thì có quá trễ để tôi tham gia lĩnh vực này?

Câu trả lời bởi Erin Parker, người sáng lập của Spitfire Athlete.

Chẳng bao giờ là quá muộn cả. Rất nhiều thứ có thể xảy ra trong một năm, nó có thể làm bạn ngạc nhiên đấy.

Tôi tốt nghiệp chuyên ngành kinh tế. Khi tôi khoảng 23 tuổi, tôi ngẫu nhiên quyết định tham gia một buổi Railsbridge Meetup, nơi người ta dạy bạn cách làm thế nào để tạo ra một ứng dụng cơ bản trên framework Ruby on Rails trong vòng một ngày. Tôi đã tạo ra một ứng dụng Rails cơ bản và rất thích nó. Một hạt giống đam mê đã được trồng vào ngày hôm đó.

Nhiều tháng sau đó, tôi có một ý tưởng cho một trang web mà mình đã luôn muốn xây dựng. Mặc dù ý tưởng của tôi khá mơ hồ, tôi tưởng tượng trang web đó sẽ truyền cảm hứng cho những người phụ nữ để họ có thêm sự hào hứng và năng lượng trong cuộc sống này. Tôi nghĩ rằng nó có thể sẽ là một trang web nghề nghiệp, hoặc là liên quan đến sức khỏe và thể dục. Và tôi chắc chắn muốn đặt tên nó là Spitfire. Tôi cảm nhận mạnh mẽ một sản phẩm như vậy sẽ vô cùng cần thiết, và tôi cảm thấy mình đã có một quan điểm khá tốt và tầm nhìn để tạo ra nó.

Mặc dù lúc đó tôi vẫn chưa quyết định học lập trình, nhưng tôi đã vẽ phác thảo ra giao diện của ứng dụng đó trông như thế này:

Học lập trình online cơ bản đến nâng cao

Tôi đã gửi email đính kèm giao diện này đến bạn bè của tôi và nhận được thông tin phản hồi nhận xét của họ.

Vào thời điểm đó, tôi cũng đang trong quá trình tập luyện thể dục qua việc nâng tạ và tôi đã nhìn thấy rất nhiều kết quả tiến bộ. Tôi cũng đã có một thời gian vất vả để tìm kiếm những nguồn tài nguyên chất lượng cao và đáng tin cậy cho phụ nữ tập luyện thể dục theo hình thức này, và luôn có một cảm giác dai dẳng là có lẽ tôi thực sự cần phải làm một cái gì đó để cải thiện điều này.

Cuối cùng, tôi quyết định bắt tay vào làm điều đó. Bạn bè thường hỏi làm thế nào mà tôi có được một thân hình đẹp, làm thế nào để nâng tạ, làm thế nào để ăn uống lành mạnh. Vậy là tôi quyết định cam kết học Ruby on Rails và sẽ biến cái ý tưởng của mình thành hiện thực.

Techmaster có chương trình thực tập toàn thời gian một tuần 6 ngày, mỗi ngày từ 9:00 đến 12:00 từ 2:00 đến 6:00pm cho học viên học lập trình từ đầu. Chương trình học kết hợp giáo trình video, quiz, bài tập lập trình và làm dự án thật dưới sự hướng dẫn của giảng viên. Đảm bảo việc làm sau 12 tháng thực tập.

Tôi nhận ra rằng nếu mình học lập trình - thậm chí nếu tôi thất bại - thì ít nhất tôi cũng thất bại trong khi xây dựng một sản phẩm gì đó mà có thể giúp lan tỏa những kinh nghiệm tôi đã học được để giúp đỡ hàng triệu người. Và điều đó rất xứng đáng để theo đuổi.

Tuy nhiên, đồng thời tôi đã quyết định rằng mình không được phép thất bại. Tôi sẽ không để cho bản thân mình dừng lại cho đến khi tôi xây dựng xong những gì mình đã hình dung trong đầu, để cho sản phẩm Spitfire trở thành hiện thực. Tôi biết rằng nếu tôi chịu đựng và vượt qua được những khó khăn (như một vận động viên chịu đau đớn), thì kết quả cuối cùng sẽ giá trị hơn nhiều so với nỗi khó khăn tạm thời đó.

Tôi bắt đầu tự học Ruby on Rails bằng cách ngấu nghiến mọi tài liệu mà tôi có thể kiếm được trên mạng, như Learn Ruby the Hard Way, Try Ruby, Codecademy, Cuốn sách Why's (Poignant) Guide to Ruby của tác giả Michael Hartl, the Rails Guides, và tôi thích nhất là RailsCasts.

Tôi đã không ngừng học hỏi mỗi ngày, nếu tôi không thành công trong lần thử đầu tiên thì tôi cũng không nản lòng. Tôi thử làm lại nó một lần nữa và một lần nữa cho đến khi mọi thứ rõ ràng. Tôi cũng tìm các cách giải thích khác nhau về khái niệm đó. Tôi sẽ hỏi bạn bè của mình. Khi tôi ngồi viết code trong các quán cà-phê, nếu người ngồi trước mặt tôi trông giống một kỹ sư dựa trên các logo dán trên máy tính xách tay của họ, tôi đã không ngần ngại tiến đến và nhờ họ nếu họ có thể giúp đỡ (tôi đã có rất nhiều người bạn theo cách này, một vài trong số họ vẫn là những người bạn thực sự tốt đến tận ngày nay).

Tôi đã đi đến rất nhiều buổi meetup của các nhà phát triển phần mềm, và đặc biệt thích Women Who Code bởi vì định hướng của họ là "dạy một bài hướng dẫn mới tại mỗi buổi meetup", và tất cả các meetup của The Ruby Group; ở đó tôi dễ dàng có được sự giúp đỡ về những vấn đề mà mình đang gặp phải khi viết code.

Tôi bị mắc kẹt với ý tưởng của mình trong nhiều tháng trời, và từng chút một, tôi thể hiện ra những ý tưởng trong đầu mình trên các sản phẩm. Bạn vẫn có thể thấy rất nhiều các dự án đầu tiên của tôi ở đây:
http://spitfiredarkstar.herokuapp.com/
http://spitfiredauntless.herokuapp.com/
http://spitfirehellcat.herokuapp.com/
https://spitfireocelot.herokuapp.com/

Tôi đã làm việc nhiều nhất trên trang này:
http://spitfireathlete.herokuapp.com/

Học lập trình trực tuyến tốt nhất

Trang web này khá nhiều tính năng. Nó khá đẹp, có một UX tốt, và là sản phẩm tốt nhất trong tất cả các sản phẩm mà tôi đã làm ra từ công nghệ tuyệt vời Ruby on Rails. Mặc dù vậy, thật không may là không có ai sử dụng nó cả!

Đó cũng là thời điểm mà tôi vui sướng và nản lòng cùng một lúc. Tôi cảm thấy như mình đã luyện được rất nhiều kỹ năng tuyệt vời, nhưng tôi đã xây dựng ra những thứ mà chẳng ai muốn cả.

Khi tôi hỏi bạn bè của mình rằng tại sao họ không sử dụng sản phẩm đó, tôi mới biết được rằng những gì họ thực sự muốn là tôi "hãy nói với họ làm thế nào để tập thể dục". Và họ muốn một cái gì đó trông đẹp mắt trên điện thoại di động, để họ có thể xem và tập luyện theo ở phòng tập thể dục.

Vì vậy, tôi quyết định đổi hướng hoàn toàn, tôi tìm hiểu về jQuery Mobile, và tôi đã tạo ra sản phẩm này.

Học lập trình online chất lượng

Một điều đặc biệt lôi cuốn tôi đó là mặc dù ứng dụng này hơi xấu và khá đơn giản, nhưng đã có nhiều người thực sự sử dụng nó! Họ muốn nhiều hơn nữa. Và họ muốn nó như là một ứng dụng iOS native.

Lúc đó là thời điểm khoảng 6 tháng kể từ khi tôi bắt đầu học lập trình Rails.

Tôi cố gắng chống lại sức ì và tôi biết mình phải phát triển ứng dụng đó trên iOS nếu muốn tiến xa hơn. Tôi thực sự đã cố gắng học jQuery Mobile để làm ứng dụng mobile, nhưng nhanh chóng nhận ra rằng nó chỉ phù hợp cho việc làm nguyên mẫu prototyping (hoặc các ứng dụng rất đơn giản) mà thôi.

Đó là khoảng tháng 4 năm 2013. Tôi quyết định sẽ trở thành một lập trình viên iOS - nhưng liệu tôi có thể làm được không khi mà tôi chưa có một tấm bằng khoa học máy tính? Tôi nghĩ, mình có nhiều động lực và quyết tâm hơn hầu hết mọi người. Họ có thể thông minh hơn tôi, nhưng tôi không bao giờ bỏ cuộc. Tôi đã đi quá xa. Tại sao dừng lại bây giờ? Tôi không được phép dừng lại!

Vì vậy, tôi ngấu nghiến học qua tất cả các tài nguyên iOS tôi có thể tìm thấy. Tôi đã làm tất cả các bài tập, các bài thử thách, và hoàn thành mỗi cuốn sách tôi có thể có được trong tay mình từ đầu đến cuối. Tôi thường xuyên tham dự các buổi meetup Women Who Code iOS và được hưởng lợi từ những cuốn sách về Objective-C và iOS từ trang web Big Nerd Ranch, các bài hướng dẫn của Ray Wenderlich, và tài liệu của Apple.

Tôi đã xây dựng ra hàng tấn ứng dụng nho nhỏ (bạn cũng nên học theo cách này!). Tôi cũng đã hứa với bản thân mình rằng tôi sẽ không bao giờ được phép nghĩ công nghệ nào là "khó" cả, bởi vì tôi nghĩ đó chỉ là một giới hạn mà mình tự đặt ra mà thôi. Vì vậy, tôi hoàn toàn không sợ hãi và đã học một loạt các công cụ mà hầu hết các nhà phát triển iOS đều sợ - mặc dù hiện nay tôi không sử dụng nhiều trong số những công cụ đó, nhưng tôi nhận ra điều đó làm cho tôi trở thành một lập trình viên giỏi hơn rất nhiều, mặc dù có nhiều đêm tôi thức trắng ngồi vật lộn với những dòng code và cảm thấy mình như bị mắc kẹt vậy.

Dưới đây là một bức ảnh của tôi đang trình bày trong một buổi meetup về làm thế nào để thực hiện một tùy chỉnh Rails API và sau đó gửi dữ liệu đó đến ứng dụng iPhone của bạn bằng cách sử dụng thư viện AFNetworking.

Dạy lập trình trực tuyến chất lượng cao

Đó là tháng 5 năm 2013, và tôi lúc đó 24 tuổi. Tôi đã lên bục thực hiện bài nói chuyện này, mặc dù tôi chỉ mới vừa học được cách làm thế nào để thực sự làm những gì tôi đang nói. Tôi cảm thấy mình giống như "một kẻ mạo danh lập trình viên iOS", và cũng như tôi đã chỉ mới bắt đầu để vượt qua cảm giác của "một kẻ mạo danh lập trình viên Rails" vậy.

Dưới đây là một ảnh chụp màn hình tableview hiển thị giao diện ứng dụng Spitfire App trên iOS, mặc dù sau đó tôi đã xây dựng mọi thứ lại từ đầu. Tôi làm được điều này chỉ sau 2 tuần học ngôn ngữ Objective-C.

Học lập trình để xin việc làm

Thời gian trôi qua. Từng chút từng chút một, tôi đã ngày càng trở nên giỏi hơn. (iOS là một hệ thống rất nặng về giao diện, và nếu bạn không tìm hiểu về thiết kế thì tất cả các ứng dụng của bạn sẽ trông rất xấu. Vì vậy, tôi quyết định mình có lẽ nên học thiết kế và Photoshop thông qua các chương trình giảng dạy của Hack Design.)

Photoshop dễ học hơn nhiều so với lập trình, nên sau đó tôi đã thực hiện được các bản phác thảo giao diện thực sự khá đẹp mắt:

Học lập trình trực tuyến kiếm tiền và việc làm

Cuối cùng, khoảng tháng 10 năm 2013, tôi chuyển những phác thảo này vào ứng dụng "Spitfire Athlete phiên bản pre-Alpha". Dưới đây là một ảnh chụp màn hình của ứng dụng thực tế chạy trên điện thoại của tôi:

Học lập trình trực tuyến online tốt nhất

Sau một vài tháng vất vả với Core Data và nhiều người dùng yêu thích đã yêu cầu bổ sung thêm các tính năng mới, tôi quyết định đã đến lúc phải biến niềm đam mê điên rồ này của mình thành một startup - và tôi tuyển dụng một người đồng sáng lập rất giỏi, Nidhi Kulkarni, một người từng tốt nghiệp ngành khoa học máy tính ở trường đại học danh tiếng MIT, giống như tôi cô ấy cũng là một vận động viên (cô ấy thi đấu chèo thuyền hạng D1 khi học tại MIT). 

Với hai phụ nữ làm về kỹ thuật, có động lực rất cao, chịu trách nhiệm lèo lái con thuyền Spitfire, tôi cảm thấy năng suất của chúng tôi dường như nhân lên mười lần. Chúng tôi bắt đầu làm việc với nhau vào khoảng tháng 11 năm 2013; lúc đó tôi đã sắp qua tuổi 24, và tôi biết mình đang ở trên bậc thềm của một cái gì đó khá thú vị.

Chúng tôi đã cùng nhau tham gia vào cuộc thi Code Path iOS Mobile Bootcamp, một cuộc thi miễn phí dành cho các nhà phát triển iOS cấp chuyên nghiệp. Chúng tôi đã hoàn thành ứng dụng Spitfire Athlete bản alpha, và tại ngày demo (nó đã được đánh giá cao bởi các chuyên gia kỹ thuật đến từ các công ty điện thoại di động hàng đầu của Thung lũng Silicon), chúng tôi đã giành giải thưởng "Ứng dụng iOS tốt nhất". Điều đó thật là tuyệt vời, vì chỉ có mỗi mình tôi là người duy nhất chưa tốt nghiệp ngành khoa học máy tính trong cuộc thi này!
Tôi bước sang tuổi 25 vào tháng Giêng năm 2014. Vào tháng 4 năm 2014, chúng tôi đưa ứng dụng này lên App Store và được giới thiệu trên trang chủ trong mục Best New Apps (những ứng dụng mới tốt nhất), cũng như trên tất cả các danh mục Health and Fitness (Sức Khỏe và Thể dục). Chúng tôi hiện nay đã có hàng chục ngàn người sử dụng và đã nhận được rất nhiều email tỏ lòng cảm ơn, nó làm cho tôi thực sự tin rằng cuộc hành trình của mình đến nay đã đâm hoa kết trái.

Học lập trình gì dễ xin việc làm?

Hiện nay, bạn có thể tải về ứng dụng này từ App Store ở đây: Spitfire Athlete.

Tôi quyết định viết câu trả lời này bởi vì gần đây tôi mới trả tiền để gia hạn tài khoản iOS Developer của mình trên Apple. Tôi nghĩ, "Có phải là một năm đã trôi qua rồi ư? Thật không thể tin nổi. Thời gian đã trôi qua quá nhanh." Và sau đó tôi nhớ lại những sự kiện và cái cảm xúc khi tôi lần đầu tiên bắt đầu bước chân vào chuyến hành trình của mình.

Tôi hy vọng câu trả lời này sẽ truyền cảm hứng cho bạn và những độc giả đang tìm hiểu làm thế nào để lập trình và biến những gì bạn đam mê trở thành hiện thực, bởi vì cái cảm giác nhận được khi bạn đã xây dựng ra một cái gì đó mà có hàng chục ngàn người yêu mến là không thể diễn tả nổi.

DevOps DevOps Techmaster team Blog Home Một lập trình viên nên biết 6 công nghệ cần học trong 2013 Một lập trình viên nên biết 6 công nghệ cần học trong 2013 Techmaster team
Hồ Sỹ Hùng

Hùng là lập trình viên có nhiều năm kinh nghiệm trong lĩnh vực: C#, VB.NET, ASP.NET, SQL Server, MVC, Entity Framework… và đồng thời cũng là admin của blog http://vinacode.net/. Bạn có thể liên hệ với anh qua email hungpm2000[at]gmail.com