Câu chuyện rất thú vị được kể bởi Adrian Kosmaczewski nhà sáng lập của AKOSMA tại App Builders Switzerland vào ngày 25/04/2016 sau đây rất đáng để các coder hoặc các bạn trẻ yêu thích lập trình tham khảo
Xin chào các bạn, tôi năm nay 42 tuổi và là lập trình viên tự học, và đây là câu chuyện của tôi.
Cách đây vài tuần tôi đọc được dòng tweet dưới đây và nó khiến tôi suy nghĩ về sự nghiệp của mình. Luồng suy nghĩ đưa tôi trở lại nơi bắt đầu mọi thứ:
Tôi bắt đầu sự nghiệp lập trình vào đúng 10 giờ sáng thứ hai, ngày 10 tháng 6 năm 1997, tại thành phố Olivos, phía bắc Buenos Aires, Argentina. Thời điểm đó đồng hồ Unix là 876142800 (chỉ số giây trôi qua từ thời điểm 0 giờ ngày 1/1/1970). Tôi vừa tổ chức sinh nhật lần thứ 24 khi đó.
THẾ GIỚI NĂM 1997
Thời điểm đó thế giới có chút khác biệt so với ngày nay.
Websites không có cảnh báo cookie. Tương lai của ngành web là các cổng điện tử trung gian như Excite.com. AltaVista( nay của Yahoo) là công cụ tìm kiếm ưa thích của tôi. Địa chỉ e-mail tôi sử dụng là [email protected], đồng nghĩa với việc trang web cá nhân của tôi nằm tại địa chỉ: http://sc2a.unige.ch/~kosmacze. Cả thế giới vẫn đang khóc thương cho Công nương Diana. Steve Jobs vừa nhận lại vị trí CEO và kêu gọi Microsoft đầu tư 150 triệu $ vào hãng máy tính Apple. Hãng phần cứng DEC (nay thuộc về Intel) còn đang kiện hãng Dell. Hài cốt Che Guevara được gửi trả lại cho Cuba.
Phim truyền hình “Friends” mới đến season 4. Nhà thiết kế thời trang Gianni Versace bị sát hại ngay trước nhà mình. Đức Mẹ Teresa, ca sĩ Roy Lichtenstein và người cao tuổi nhất thế giới Jeanne Calment vừa mới qua đời. Mọi người còn đang chơi Final Fantasy 7 trên PS1. Kênh BBC2 bắt đầu phát sóng hoạt hình Teletubbies. Phim Titanic vừa mới được phát hành. Nhóm nhạc Verve cho ra đời bài “Bitter Sweet Symphony”.
Điện thoại thông minh thời đó là chiếc cục gạch Nokia 9000 với bộ nhớ 8MB, CPU i386 xung nhịp 24MHz và sử dụng hệ điều hành GEOS.
Đồng hồ thông minh thời đó là đồng hồ CASIO G-SHOCK DW-9100BJ. Không có nhiều ứng dụng nhưng pin dùng lâu hơn nhiều.
Trí tuệ nhân tạo IBM Deep Blue lần đầu tiên đánh bại kiện tướng cờ vua Garry Kassparov.
Một hacker biệt danh “_eci” công bố mã nguồn C cho hệ điều hành Wndows 3.1, 95 và NT khai thác lỗi bảo mật “WinNuke”, một kiểu tấn công từ chối dịch vụ trên cổng TCP số 139 (NetBIOS) gây ra lỗi màn hình xanh chết chóc.
Trùng hợp là 1997 cũng là năm sinh của nhà hoạt động Malala Yousafzai, diễn viên Chloe Grace Moretz và em Kylie Jenner.
Nhiều bộ phim cũng lấy bối cảnh vào năm 1997 như là: Escape from New York, Predator 2, The Curious Case of Benjamin Button, Harry Potter and the Half-Blood Prince, The Godfather III và theo như phim Kẻ Hủy Diệt 2, Skynet bắt đầu nhận thức vào lúc 2 giờ 14 phút sáng ngày 29 tháng 8 năm 1997. Chuyện đó không xảy ra, nhưng thú vị thay, tên miền Google.com được đăng kí vào ngày 15 tháng 9 năm đó.
Nhân loại còn hai năm nữa mới tới Y2K, lúc này truyền thông bắt đầu sốt sắng về nó.
CÔNG VIỆC ĐẦU TIÊN CỦA TÔI
Công việc đầu tiên của tôi yêu cầu viết các trang ASP trên nhiều trình soạn thảo như Microsoft FrontPage, HotMeTal Pro đến EditPlus, quản lý khả năng tương thích đa trình duyệt giữa Netscape và Internet Explorer 4, viết hệ quản trị dữ liệu trên SQL Server 6.5 triển khai trang web thương mại điện tử với bốn ngôn ngữ Nhật, Nga, Anh và Tây Ban Nha mà không có bất kì hỗ trợ font chữ UTF-8 trên đa phần mềm.
Sản phẩm của sự nỗ lực đó chạy trên máy chủ Pentium II đặt tại Mỹ, với dung lượng khủng lồ 2 GB và RAM “khủng bố ” 256 MB. Máy chủ đơn chạy trên Windows NT4, SQL Server 6.5 và IIS 2.0, phục vụ hàng ngàn lượng truy cập mỗi ngày. VBScript là ngôn ngữ lập trình chuyên nghiệp đầu tiên của tôi, và tất nhiên thêm chút chút JavaScript phía client, với rất nhiều lệnh kiểu “nếu là Netscape thì thế này, không thì làm cái khác” vì thời điểm đó tôi không biết cách sử dụng JavaScript đúng đắn.
Thú vị là đến năm 2016, chúng ta chỉ mới bắt đầu hiểu cách lập trình mọi thứ bằng JavaScript. Kiểm thử đơn vị chưa tồn tại. Tuyên ngôn Agile còn chưa được viết ra. Tích hợp liên tục (Continuous integration) vẫn là một giấc mơ. XML còn chưa thông dụng. Chuyên viên giám sát nài nỉ yêu cầu hoạt động lại máy chủ tuần một lần không sẽ bị treo máy ngẫu nhiên. Chúng tôi lập trình ra các thành phần COM+ trong Visual J++ để có thể tải được ảnh JPEG lên máy chủ. Ngay khi định dạng mã hóa JPEG – 2000 bắt đầu xuất hiện, chương trình của chúng tôi thất bại thảm hại.
Chúng tôi không dùng công cụ quản lý mã nguồn, không có cả CVS, RCS, thậm chí SourceSafe. Subversion còn chưa tồn tại. Điểm của bài test Joel là âm 25.
6776 NGÀY
Trong 6776 ngày qua tôi đều nhâm nhi cà phê vào mỗi sáng và lập trình với các công nghệ tên VBScript, JavaScript, Linux, SQL, HTML, Makefiles, Node.js, CSS, XML, .NET, YAML, Podfiles, JSON, Markdown, PHP, Windows, Doxygen, C#, Visual Basic, Visual Basic.NET, Java, Socket.io, Ruby, unit tests, Python, shell scripts, C++, Objective-C, batch files, và gần đây là Swift. 6776 ngày trôi qua với rất nhiều sự kiện, quan trọng nhất là tôi đã cưới vợ. Tôi đã bỏ 6 công việc và bị sa thải 2 lần. Tôi tự làm riêng và đã thất bại. Tôi hoàn thành bằng Thạc sĩ. Tôi xuất bản một vài dự án mã nguồn mở, một trong các dự án đó được lên trang Ars Technica. Tôi từng lên sóng truyền hình ở Thụy Sĩ và Bolivia. Tôi thuyết trình và đồng tổ chức hội thảo lớn tại bốn châu lục. Tôi nghe Steve Jobs và Bill Gates giới thiệu sản phẩm ở Seattle và tại San Francisco. Tôi xuất bản hai đầu sách, bị khủng hoảng hai lần và còn rất nhiều chuyện khác xảy ra, vui buồn xen lẫn.
Tôi thường suy nghĩ đến việc bỏ nghề này. Nhưng vì lí do nào đó, lập trình thường kéo tôi lại. Tôi thích viết Apps di động, hệ thống, phần mềm. Để tránh bị khủng hoảng lần nữa, tôi phải đặt ra chiến lược phát triển.
Tôi sẽ nói các bạn nghe về bí mật để có thể vươn tới làm lập trình viên kinh nghiệm ở độ tuổi 40 lẫy lừng mà vẫn còn tình yêu với nghề.
LỜI KHUYÊN CHO NGƯỜI TRẺ
1. Không theo trào lưu
Lời khuyên đầu tiên tôi gửi đến các bạn: không quan tâm đến trào lưu. Năm nào cũng đều có ngôn ngữ mới, Framework mới, các thư viện, mô hình, kiến trúc hoặc mô hình mới xuất hiện trên blog như vũ bão. Dân tình phát cuồng lên vì nó. Hội nghị được tổ chức, các đầu sách được viết. Vòng đời hào hứng đi lên rồi xuống. Các chuyên gia tư vấn tính một đống tiền để dạy, triển khai công nghệ mới hoặc phá hoại công ăn việc làm của những người khác trong ngành. Báo chí sẽ ủng hộ điều đó và khiến bạn cảm thấy tiếc nuối vì lỗi thời.
- Năm 1997 là CORBA & RUP.
- Năm 2000 là SOAP & XML.
- Năm 2003 là Model Driven Architecture và Software Factories.
- Năm 2006 là Semantic Web và OLPC.
- Năm 2009 là Augmented Reality.
- Năm 2012 là Big Data.
- Năm 2015… Kính thực tế ảo? Bots?
Đừng lo lắng về trào lưu. Hãy tiếp tục làm việc, tiếp tục học cái đang học, học xong rồi chuyển phần khác. Chỉ quan tâm đến nó nếu bạn thực sự thích thú, hoặc cảm thấy trào lưu này có thể đem lại hiệu quả về lâu dài.
Lý do điều tôi khuyên bạn là câu tục ngữ người La Mã cổ đại: Nil nove sul sole, tiếng Việt: “Lưới trời lồng lộng”. Hầu hết những thứ bạn thấy và học là công nghệ tồn tại hàng thập kỉ, có thể tìm thấy dưới hàng đống chiến dịch quảng cáo, đầu sách, bài viết Blog và các câu hỏi trên Stack Overflow. Các kiến trúc kiểu mới đều là tái tạo hoặc tái sử dụng lại ý tưởng người khác đã có trong hàng chục năm.
2. Chọn công nghệ thật khôn ngoan.
Trong ngành lập trình, mỗi công nghệ tạo ra môi trường tôi gọi là “ngân hà”. Các “ngân hà” này có cả các vì tinh tú lẫn lỗ đen, có những công nghệ vụt sáng tắt nhanh như sao băng, có công nghệ như những hành tinh không hỗ trợ sự sống, và còn rất nhiều bụi vũ trụ lẫn vật chất tối.
Các “ngân hà” này có thể là .NET, Cocoa, Node.js, PHP, Emacs, SAP… Mỗi một công nghệ này đều có những người giảng dạy, lập trình viên, blogger, phóng viên, hội nghị, các đầu sách, khóa học chuyên sâu, dịch vụ tư vấn và cả những rắc rối khác. Các ngân hà được xây dựng dựa trên giả định là nó có thể giải quyết được tất cả mọi vấn đề. Nhưng nhận định đó là sai.
Các lập trình viên đến từ những ngân hà khác nhau mang trong mình các tính cách đặc trưng của công nghệ mình xây dựng. Họ gắn bó với lí tưởng, sẵn sàng hào hứng mặc áo đồng phục và truyền bá lại tư tưởng về sự lựa chọn của họ.
Cá nhân tôi dành tới 10 năm đầu tiên cho hệ ngân hà Microsoft, và 9 năm tiếp theo cho ngân hà Apple.
Và tôi dám nói rằng lí do lớn nhất khiến mình thay đổi môi trường là do Steve Ballmer (cựu CEO của Microsoft). Tôi mệt mỏi với thái độ coi thường cộng đồng mã nguồn mở của những con người Microsoft.
Mặt khác, tôi cũng phải nói rằng ngân hà Apple thật tuyệt vời, với rất nhiều nghệ sĩ, nhạc sĩ, nhà văn, vì nhiều lí do, lại đi viết phần mềm.
Tôi tham dự hội thảo của Microsoft, như hội chợ Barcelona TechEd 2003, hoặc Tech Talks ở Buenos Aires, Geneva hay London. Tôi thậm chí còn diễn thuyết tại ngày hội lập trình viên Microsoft 2006 ở Geneva. Thái độ tính cách chung của các cư dân ngân hà Microsoft không thân thiện, “cứng nhắc” và bị trói buộc với các điều khoản không tiết lộ của công ty.
Với tôi, thái độ các cư dân ngân hà Apple vào thời điểm 2006 là hoàn toàn trái ngược với những con người nghệ sĩ, yêu âm nhạc, cầm kì thi họa, sẵn lòng viết phần mềm vì niềm đam mê. Nó tạo ra sự khác biệt, và đến ngày hôm nay, tôi vẫn thích môi trường này.
Và rồi điện thoại Iphone ra đời, phần còn lại là lịch sử.
Lời khuyên tôi dành cho các bạn: chọn môi trường phù hợp, yêu nhiều hay yêu ít đều được, nhưng hãy đặt ra nhiều sự lựa chọn các môi trường khác và sẵn sàng chuyển môi trường nếu cần thiết.
3. Học về lịch sử ngành phần mềm
Điều này đặt nên vấn đề: Công nghệ ưa thích của bạn được tạo ra thế nào? Bạn có thích C#? Bạn có biết ai tạo ra nó không? Sao dự án .NET được phát triển? Ai là kiến trúc sư trưởng? Điều gì cản trở dự án và tại sao ngôn ngữ này lại như bây giờ?
Áp dụng điều tương tự với bất kì ngôn ngữ lập trình hoặc kiến trúc CPU mà bạn quan tâm hoặc yêu thích: Python, Ruby, Java, ngôn ngữ nào cũng được. Học về nguồn gốc, về cách phát triển. Bất kì cái gì cũng áp dụng như vậy. Tìm tòi và học hỏi làm thế nào những ý tưởng đó được hình thành, mất bao lâu để phát triển và ứng dụng? Bởi một phần mềm tốt phát triền mất 10 năm.
Những câu chuyện về khởi nguồn ngành phần mềm rất thú vị, và sẽ giúp bạn hiểu hai điều: “Mọi thứ đều là “xào lại”. Điều thứ hai, bạn có thể là người “xào lại” điều vĩ đại mới. Không, hãy nhớ: bạn có thể là người tạo ra điều vĩ đại mới.
Và để giúp bạn đến được đó, đây là danh sách những quyển sách lịch sử bạn nên đọc:
- Dealers of Lightning của Michael A. Hiltzik
- Revolution in the Valley của Andy Hertzfeld
- The Cathedral and the Bazaar của Eric S. Raymond
- The Success of Open Source của Steven Weber
- The Old New Thing của Raymond Chen
- The Mythical Man Month của Frederick P. Brooks Jr.
Bạn cũng sẽ học cách trân trọng những công nghệ trường tồn với thời gian: Lisp, TeX, Unix, bash, C, Cocoa, Emacs, Vim, Python, ARM, GNU…Đó là những công nghệ hữu ích trường tồn lâu dài đáng để học hỏi.
4. Học không ngừng
Học, học gì cũng được. Muốn học Fortran? Học đi. Bạn thấy Erlang thú vị? Tuyệt vời luôn. Cảm thấy COBOL có thể là công nghệ để đời? Quá tuyệt. Muốn học về Lập trình hướng luồng dữ liệu (Functional Reactive Programming)? Thoải mái. Học về thiết kế? Tất nhiên. UX? Học đi còn gì. Làm thơ ca? Sao lại không.
Nhiều kiến thức ngành CNTT đã tồn tại hàng chục năm nay, khiến việc học các ngôn ngữ và framework cũ là cần thiết, kể cả những ngôn ngữ “lạ hoắc”. Học những kiến thức cũ sẽ khiến bạn nhận ra được thực trạng ngày nay của ngành lập trình (có thể yêu hoặc ghét nó), và cái thứ hai, bạn sẽ học cách sử dụng các công cụ một cách hiệu quả, vì bạn đã hiểu được kiến thức nền tảng.
Mẹo 1: học ít nhất mỗi năm một ngôn ngữ mới. Đây không phải ý của tôi, đây là ý tưởng quyển sách The Pragmatic Programmer. Và nó hiệu quả.
Mỗi năm học một ngôn ngữ mới. Đơn giản phải không? Hãy vượt qua bài tập cơ bản “Hello, World” và xây dựng một sản phẩm hữu ích. Tôi thường xây dựng một máy tính cầm tay đơn giản với mỗi ngôn ngữ mới. Việc này giúp tôi học cú pháp, quen dần với các API hoặc IDE…
Mẹo 2: Đọc ít nhất sáu quyển sách mỗi năm. Tôi đã lên danh sách sáu quyển sách cần đọc, giúp bạn bận rộn trong cả năm. Còn đây là danh sách cho năm tiếp theo:
- Peopleware của Tom DeMarco và Tim Lister
- The Psychology of Software Programming của Gerald M. Weinberg
- Facts and Fallacies of Software Engineering của Robert L. Glass
- The Design of Everyday Things của Don Norman
- Agile!: The Good, the Hype and the Ugly của Bertrand Meyer
- Rework của Jason Fried và David Heinemeier Hansson
- Geekonomics của David Rice.
Sáu bảy quyển sách trong một năm có vẻ nhiều, nhưng thực chất là dành 2 tháng cho một quyển. Và hầu hết trong danh sách đều không quá dài, được hành văn rất tốt, nhiều thông tin thú vị.
Hãy nghĩ như thế này: Hiện tại bạn đang 20 tuổi, đến tuổi 30 bạn sẽ đọc được 60 cuốn, và đến 40 như tôi sẽ là trên 120 cuốn. Bạn sẽ thành thục ít nhất là 20 ngôn ngữ khác nhau.
Một số trong 12 quyển trên được viết từ thập kỉ 70, một số khác là thập kỉ 80, số ít thập kỉ 90, và hầu hết đều viết trong mười năm trở lại đây. Tất cả đều là những quyển sách hay nhất về ngành lập trình.
Nhưng đừng chỉ có đọc không, ghi chú lại, đánh dấu, viết chú thích trên trang sách. Rồi sau đó thường xuyên đọc lại. Nhà thơ Borges từng nói rằng vui thú lớn hơn đọc sách chính là đọc lại sách. Và bạn hãy mua sách giấy những quyển bạn thực sự thích. Tin tôi đi, sách điện tử không bao giờ thay thế được sách thật.
Tất nhiên, khi biết rằng mình đã già đi, những công nghệ ngày nay sẽ dần trở nên lỗi thời. Hãy chuẩn bị sẵn tinh thần.
5. Dạy học
Một khi bạn đã học, hãy dạy. Điều này rất quan trọng. Tôi không khuyên bạn mở một lớp học và mời mọi người đến nghe bạn thuyết giảng (nếu làm được vậy thì quá tuyệt). Bạn có thể đem lại câu trả lời hay cho những câu hỏi trên Stack Overflow, hoặc viết đầu sách, làm một bài viết về công nghệ bạn thích, viết blog, hay đến lục địa khác rồi mở lớp dạy trẻ con lập trình cơ bản trên Raspberry Pi, hoặc nhận trở thành sư phụ của những lập trình viên trẻ hơn (xin đừng làm điều này trước tuổi 30).
Dạy học tạo cho bạn đức tính khiêm tốn hơn vì bạn sẽ nhận ra được nhiều thiếu sót kiến thức. Dạy học là cách tốt nhất để học. Áp dụng kiến thức với người khác thì bạn sẽ học được đúng nhất. Điều này giúp chúng ta tôn trọng các lập trình viên, và những công nghệ khác, bất kể ngôn ngữ lập trình nào, dù là công nghệ phổ biến hay bí ẩn. Đây là lẽ phải trong “Đạo lập trình”, chỉ có thông qua việc dạy học, bạn mới cảm nhận được nó.
Và qua việc dạy học, bạn có thể thực sự, thực sự tạo ra sự thay đổi cho thế giới. Hồi năm 2012 tôi nhận được mail từ một học viên tham gia khóa học của tôi. Cô ta từng làm lập trình viên cho Adobe Flash. Bạn còn nhớ ActionScript và những thứ đó không? Và thật ngạc nhiên, khi Apple chấm dứt hỗ trợ Adobe Flash, cô thất nghiệp sau 12 năm làm lập trình viên tự do cho Flash. Cô cho biết, mặc dù làm bà mẹ đơn thân nuôi con, cô tham gia khóa huấn luyện của tôi, học hỏi được nhiều thứ thú vị và hiện tại cô tìm được công việc lập trình di động. Bức thư cô viết thay lời cảm ơn.
Tôi không thay đổi thế giới, nhưng tôi có thể thay đổi phần nhỏ thành điều tốt đẹp hơn. Suy nghĩ đó khiến từng bài học giảng dạy trở nên đáng giá và ý nghĩa hơn trước.
6. Môi trường làm việc tệ hại
Bạn đừng mong chờ các tập đoàn phần mềm sẽ tạo cơ hội cho con đường sự nghiệp. Họ có thể làm điều này ở Mĩ, nhưng tôi chưa bao giờ thấy điều đó ở Châu Âu. Điều đó tức là bạn phải tự quyết định cho sự nghiệp của mình. Sẽ không có ai nói: “Được, năm sau anh cho em lên làm team lead, rồi quản lí, rồi CTO…”
Không. Bao. Giờ. Hoàn toàn ngược lại, sự thật là: bạn đã, đang và sẽ là lập trình viên, một dạng nhân công nhà máy tay nghề cao, với nhiệm vụ mà không quản lí nào muốn làm.
Tuyệt đối không nhận việc vì tiền thù lao. Các công ty phần mềm là những cái bẫy hấp dẫn nơi bạn xứng đáng lương cao bằng số giờ làm việc điên cuồng và những yêu cầu vô lí.
Tệ hơn nữa (ở Thụy Sĩ), hầu hết tại nơi làm việc bạn có thể bị hành, đặc biệt với nữ giới, những người giới tính thứ 3 hoặc không phải chủng tộc da trắng. Tôi từng thấy các lập trình viên nước ngoài bị dọa cắt visa nếu họ không đẩy nhanh tiến độ. Tôi từng chứng kiến người ta bắt nạt đồng nghiệp nữ và người đồng tính.
Ngành lập trình cũng có vài mảng tối, và bạn không cần phải đến tận thung lũng Silicon để thấy điều đó. Bạn không cần lên blog đọc cũng biết. Bạn có thể trải nghiệm điều đó tại Thụy Sĩ. Nhiều ngân hàng có môi trường làm việc khắc nghiệp. Các tổ chức tài chính muốn bạn cày viết code 15 tiếng một ngày, mặc dù luật lao động Thụy Sĩ cấm điều đó. Các công ty dược muốn bạn viết code để gian lận kết quả thuốc và giúp họ lách luật. Công ty Startup thì muốn bóc lột trình độ, làm việc đến 18 tiếng một ngày không có thưởng, với lí do là “vì tao trả cổ phần cho mày” hoặc “vì đây là tinh thần làm việc nhóm”.
Kể cả bạn có là Zach Holman là người đồng sáng lập phát triển Github từ thưở đầu: bạn vẫn có thể bị sa thải từ những lí do nhỏ nhặt nhất.
Bất kể App của bạn có đem lại công việc và lợi nhuận đáng kể, đội API vẫn sẽ thiếu tôn trọng và cẩu thả với ý tưởng của bạn.
Nhiều kẻ nổi tiếng trong ngành đã từng nhờ tôi làm việc không công, một số còn có danh trên Wikipedia. Tôi sẽ không nói tên họ, nhưng tôi sẽ ngăn cản bất kì lập trình viên non nớt nào làm việc cho họ, vì những kẻ không có đạo đức nghề nghiệp không xứng đáng với công sức người khác.
Mỗi khi bên nhân sự yêu cầu “em phải làm cái này (mặc cho chính kiến của bạn) vì anh trả lương cho em” bạn hãy nhớ rằng: “anh trả lương em, em đổi lại trí tuệ, vì thế em từ chối làm cái này”.
Và quan trọng nhất, người ta sẽ đưa bạn làm việc ở không gian văn phòng mở. Không gian mở là căn bệnh ung thư. Đây là thiết kế không gian văn phòng tồi tệ nhất được sáng tạo, ít nhất là với ngành phát triển phần mềm, hoặc các công việc trí tuệ khác.
Hãy nhớ rằng: việc bạn hiểu không đồng nghĩa với việc đồng ý với nó.
Hãy bất tuân lệnh, thốt lên “Kệ anh, tôi không làm đâu” và bỏ việc. Có những nơi làm việc ngoài kia rất tuyệt vời, không nhiều lắm, nhưng có tồn tại. Tôi từng may mắn làm việc ở một vài nơi tốt đẹp. Đừng để cho công việc tồi tệ giết chết nhiệt huyết. Bỏ việc và tìm nơi khác. Hoặc tốt hơn, đi làm độc lập.
7. Biết giá trị của mình
Có thể bạn đã từng nghe đến huyền thoại “Lập trình viên siêu nhân” phải không? Chà hãy hiểu thế này nhé: nó không phải huyền thoại, nhưng lập trình viên siêu nhân không hoạt động như cách bạn nghĩ.
Từ góc độ nhà tuyển dụng, một “lập trình viên siêu nhân” tạo ra lợi nhuận đáng giá 10 lần thù lao của họ. Điều đó có nghĩa một lập trình viên siêu nhân nhận lương 100 ngàn đô một năm, nhưng anh ta thực sự tạo ra được giá trị đáng giá trên 1 triệu đô. Và tất nhiên, họ được thưởng thêm tháng lương thứ 13 vào cuối năm. Tóm gọn, hãy biết giá trị của mình.
Tiến không ngừng, giống như con cá mập bơi liên tục, vì trình độ của bạn là thứ vô cùng đáng giá. Hét mức thu nhập, hét thật lớn vào, viết Blog về nó, để đồng nghiệp biết được giá trị của họ. Các công ty muốn bịt miệng điều đó, vậy nên đồng nghiệp nữ chỉ được trả bằng 70% so với lập trình viên nam. Đừng ngại! Hãy nói to! Một năm tôi kiếm được 140 ngàn đô. Thế còn bạn? Còn bạn thì sao? Chúng ta không ngại khẳng định, thì sự bất công được xóa nhòa đi. Bất kì người nào có đủ trình độ cũng nên hưởng lương bằng tôi, bất kể chủng tộc, giới tính, định kiến ra sao.
8. Hạ thấp cái tôi
Nếu bạn là người da trắng thì bạn sẽ được hưởng những đặc quyền từ khi sinh ra. Thay đổi bộ mặt ngành công nghiệp để nó trở nên hoàn thiện hơn là trách nhiệm của bạn. Việc hạ thấp cái tôi cũng là một nghĩa vụ.
Đặt ra quyết định có tính ý thức cho cuộc đời mình, nhận thức được hậu quả những hành động của mình. Không đỏ mặt hay xấu hổ khi đón nhận sự thay đổi. Lắng nghe, nói lời “xin lỗi” khi cần thiết. Không tự cao tự đại, sống ngay thẳng và tự trọng.
Bạn không chỉ trích hoặc chế giễu những lựa chọn công nghệ của đồng nghiệp, vì lựa chọn của mỗi người cần được tôn trọng. Luôn sẵn sàng đón nhận sự thay đổi qua việc học tập. Ngày hôm nay bạn thích Windows, ngày mai bạn có thể thích Android. Và điều đó hoàn toàn OK.
9. LLVM ( Low Level Virtual Machine) – Máy ảo bậc thấp
Dư luận đang phát cuồng về Swift, trong khi tôi dành nhiều sự chú ý hơn cho công nghệ máy ảo bậc thấp LLVM.
LLVM là dự án phần mềm quan trọng nhất ở thời điểm ngày nay, xét theo hiệu quả lâu dài của nó.
Objective-C blocks, Rust & Swift (hai ngôn ngữ lập trình biên dịch mạnh mẽ nhất theo khảo sát 2016 StackOverflow,)Dropbox Pyston, the Clang Static Analyser, ARC, Google Souper, Emscripten, LLVMSharp, Microsoft LLILC, Rubymotion,cheerp, App trên Apple Watch, the Android NDK, Metal, tất cả các công nghệ trên đều được xây dựng từ LLVM. Đây là những trình biên dịch sử dụng LLVM làm công nghệ Back-end cho hầu hết các ngôn ngữ lập trình ngày nay. Công nghệ .NET CLR tương thích với nó, và Mono đã áp dụng công nghệ này. Facebook thì cố gắng áp dụng LLVM với HHVM (HipHop Virtual Machine), trong khi WebKit gần đây đổi từ LLVM sang trình biên dịch B3 Just-in-time JavaScript.
Công nghệ LLVM đa nền tảng, đa kiến trúc CPU, đa trình biên dịch, đa ngôn ngữ, đa nhiệm và hoàn toàn miễn phí. Hãy học tất cả những gì có thể học về LLVM. Môi trường công nghệ này đang dần trở nên tiên phong. Đây chính là nền tảng cho 20 năm công nghệ tiếp theo.
10. Tin vào trực giác
Tôi từng có linh cảm .NET sẽ trở thành công nghệ LỚN khi nó được giới thiệu hồi tháng 6 năm 2000. Tôi từng có linh cảm iPhone sẽ trở thành công nghệ LỚN khi nó được giới thiệu hồi năm 2007.
Cả hai trường hợp người ta đều cười thẳng vào mặt tôi. Cả hai trường hợp tôi đều đi theo trực giác và sự thật đúng như dự đoán.
Đi theo trực giác, biết đâu bạn cũng may mắn giống tôi.
11. API làm Vua
API tốt thì tạo ra App tốt, nếu API tệ thì App cũng sẽ tệ lậu cho dù thiết kế có đẹp đến đâu.
Hãy nhớ tốt gỗ hơn tốt nước sơn, và khách hàng thường là kẻ ngốc, vậy nên hãy đặt nhiều công sức nhất có thể cho API.
Không cố tạo ra một chuẩn giao thức an ninh mới.
Học một vài công nghệ phía “server-side”, trong đó bắt buộc phải có Node js.
Đặt REST sang một bên, chú trọng các công nghệ Socket.io, ZeroMQ, RabbitMQ,Erlang, XMPP; khám phá công nghệ thời gian thực vào phát triển ứng dụng. Ứng dụng thời gian thực không chỉ dành riêng cho các ứng dụng chat. Và đừng quên xây dựng bots xung quanh các API.
12. Không phức tạp hóa
Bạn hãy nhớ nguyên tắc KISS- Keep It Short and Simple. Luôn là vậy, càng đơn giản thì càng tốt. Nguyên tắc không chỉ áp dụng trên thiết kế giao diện, mà còn ở trong những tầng sâu nhất của mã nguồn chương trình.
Tái cấu trúc mã nguồn, kiểm thử đơn vị, pull request, tất cả các công cụ trên được sắp đặt đảm bảo mã nguồn của bạn đơn giản nhất có thể mà hiệu quả. Đây là cách bạn xây dựng một hệ thống dễ nâng cấp theo thời gian lâu dài.
KẾT LUẬN
|
Điều quan trọng nhất bạn cần nhớ: tuổi tác không quyết định mọi thứ.
Chừng nào trái tim bạn vẫn lao động và xây dựng những thứ mới, bạn vẫn còn trẻ trung mãi mãi. Vào năm 2035, chính xác là 19 năm nữa, sẽ có gã nào đó đứng lên nói tại một hội thảo tương tự và phát biểu:
“Xin chào, tôi là lập trình viên 42 tuổi, sau đây là câu chuyện của tôi.”
Tôi hi vọng bạn sẽ là người đứng lên thuyết trình điều đó. Bạn sẽ nói về trải nghiệm sống của năm 2016, thời điểm David Bowie, Umberto Eco, Gato Barbieri và Johan Cruyff qua đời, thời điểm SQL Server chạy được trên Linux, thời điểm Google AlphaGo đánh bại kiện tướng cờ vây, thời điểm bê bối rò rỉ tài liệu Panama và dữ liệu công dân của Thổ Nhĩ Kì, hay khi Google cân nhắc sử dụng Swift trên Android, hay khi đây có thể là năm cuối cùng người ta quan tâm đến sự riêng tư cá nhân.
Năm 2035 còn tới ba năm để gặp lỗi “Year 2038”, khi đó truyền thông sẽ lo lắng thực sự. Tôi không biết 19 năm nữa sẽ xảy ra điều gì, nhưng tôi có thể chắc chắn ba điều với bạn:
- Có ai đó sẽ đặt những câu hỏi ngớ ngẩn trên Stack Overflow.
- Có ai đó sẽ phát hành Framework mới cho JavaScript.
- Có ai đó sẽ xây dựng những công nghệ mới dựa trên máy ảo bậc thấp LLVM.
Và có thể bạn sẽ nhớ lại buổi nói chuyện này của tôi với một nụ cười.
Cám ơn mọi người đã lắng nghe.
Adrian Kosmaczewski
(Techtalk Via Techmaster)
FPT Aptech – Hệ Thống Đào Tạo Lập Trình Viên Quốc Tế
FPT Aptech trực thuộc Tổ chức Giáo dục FPT có hơn 25 năm kinh nghiệm đào tạo lập trình viên quốc tế tại Việt Nam, và luôn là sự lựa chọn ưu tiên của các sinh viên và nhà tuyển dụng. |