Hiển thị các bài đăng có nhãn Trải Nghiệm. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Trải Nghiệm. Hiển thị tất cả bài đăng

2018-12-05

10 tuyệt kĩ từ trang web nhanh nhất thế giới (phần 1)

10 tuyệt kĩ từ trang web nhanh nhất thế giới (phần 1)

Bài viết này phân tích về những kĩ thuật tăng hiệu suất của 1 trang web, vì thế hy vọng bạn sẽ không phiền nếu trang web được nói đến vẫn chưa hoàn thiện lắm.
Nhưng bạn cần có 1 cái gì đó để click vào và đánh giá xem ý kiến của tôi có giá trị hay không. Bạn có thể tham khảo tại đây: https://knowitall-9a92e.firebaseapp.com/
Hy vọng trang web sẽ mở nhanh để tôi có được chút danh tiếng ban đầu.
Nếu bạn đang tự hỏi tại sao tôi lại đang viết về trang web này khi nó vẫn chưa hoàn thiện.. là vì những góp ý. Hiệu suất là tập hợp chuỗi mẹo và các cách suy nghĩ về mọi việc. Vì vậy tôi sẽ rất vui nếu bạn có thứ gì đó hay ho để góp ý cho website bằng cách truy cập source tại đây.
Khi chế độ Strict Mode được bật, nếu tham số truyền vào là string, trong khi chúng

Hãy nói về tốc độ

Bạn có thể tham khảo biểu đồ sau.
Liệu bạn có muốn website được cách điệu 1 cách không cần thiết?
TopDev Techtalk #54: PHP & PHP7 – Secrets behind Optimization
*Hồ Chí Minh: 18h00 – 21h00 thứ 5, ngày 12/01/2017
9

Đây có phải là cuộc chiến công bằng?

Không. Những trang web trên có chức năng hoàn toàn khác biệt, nên sẽ rất vô lý nếu chúng tải cùng 1 thời gian. Nhưng những trang web trên đã rất nỗ lực để cải thiện hiệu suất và đạt mục tiêu tạo được 1 trang web tải nhanh hơn trang homepage của Google.

Tại sao trông chúng lại không ấn tượng

Nếu bạn vô tình cảm thấy ấn tượng, tôi khuyên bạn nên bình tĩnh 1 chút. Tôi không phải read từ 1 database để sản xuất content hay bắt bạn đăng nhập hay tải 7 loại ads từ bên thứ 3 – mỗi cái thực hiện 40 redirects trước khi chúng tải được 1 file flash. Tôi thậm chí còn không dùng đến bất kì hình ảnh nào nữa cơ. Và page count = 1.

Tại sao chúng lại gây ấn tượng

Trước khi trang web được tải và sẵn sàng chạy, tôi đang tải về và parse 1 file JSON 75.000 line. Nếu được expanded, sẽ cho ra kết quả là 9.986 hàng.
Và tôi đang xài 1 thư viện. Các thư viện đều chậm (bất kể tốc độ nhanh chóng mà chúng đang có).
Dưới đây là 10 bài học mà tôi có được trong suốt hành trình đã qua. 7 trong số chúng khá hữu hiệu ở thời điểm cách đây 2 tháng, 3 cái còn lại thì khá… rác rưởi.
Tất nhiên, tôi sẽ không nói bạn đâu là 3 cái đó.

#1 Đừng cố gắng tạo 1 trang web chậm

Tôi nghe được điều này từ 1 người không phải là lập trình viên web. “Tôi đang lướt trang mercedes.com và nó quá chậm, làm thế nào mà họ có thể tạo được 1 trang chậm như thế”
Tôi cho rằng việc tạo nên 1 trang web chậm thì chẳng khó khăn gì, tất cả những gì bạn phải làm là cố gắng không phải tạo 1 trang web nhanh.
Đây là tin tức tốt, vì nếu tất cả những gì bạn làm là cố gắng tạo trang web nhanh, bạn sẽ tự động có được 1 trang web nhanh hơn.
Bí mật tối ưu hóa PHP & PHP7 hàng đầu. Đăng kí tìm hiểu ngay!
Bí mật tối ưu hóa PHP & PHP7 hàng đầu. Đăng kí tìm hiểu ngay!
Đối với trang web này, trong mỗi bước, tôi lại dành ra vài thời điểm để nghĩ về mức độ ảnh hướng đến hiệu suất trong những gì mình đang làm. Với mỗi thư viện mà tôi đã sử dụng trong ứng dụng này, tôi đo đạc lại 3 chỉ số này, trước và sau:
  • first meaningful paint
  • thời gian interactive
  • expanding 1 DOM node
Nếu 1 thư viện có ảnh hưởng tiêu cực, hãy bỏ nó ra. Ví dụ, tôi đã từng dùng lodash deepClone trong đối tượng JS có 75.000 prop. Sau khi chuyển sang Immutable.js thì mọi chuyện đã hoàn toàn khác.
Tôi đang sử dụng React, và thỉnh thoảng dùng đến thư viện classnames. Sau đó tôi ước lượng lại bằng số liệu lần nữa và… không có gì khác biệt.
Mỗi lần bạn nhập 1 thư viện mới hoặc tạo nên 1 sự thay đổi lớn để nâng cao hiệu suất, bạn chỉ tốn có 5 phút mà thôi..

#2 Do mobile first

Có 2 chiến lược “mobile first” ở đây.
Chiến lược đầu tiên (tôi vẫn làm mãi cho đến dự án này), tôi đã ngồi tại monitor 27″ với 1 style website imax trước mặt, 1 fan-cooled CPU “quái vật” và hàng tá RAM thực hiện mọi mệnh lệnh mà tôi đặt ra.
Sau đó, tôi viết CSS media queries với min-width và nói với bạn bè của mình rằng, tôi đang thực hiện chiến lược “mobile first”
Đối với dự án này, tôi thực sự đã làm mobile first. Đó là, phát triển trang web chạy trên thiết bị di động. Tôi làm điều này trước, và khi đã hài lòng về UI và hiệu suất, tôi tiến hành nó trên máy tính lớn.
Bạn sẽ bất ngờ khi nhận ra không hề khó để có 1 trang web nhanh chạy trên 1 machine nhanh!
(Câu chuyện không đơn giản như thế, tôi đã bắt đầu dự án với những thói quen cũ không tốt, sau đó nửa đường thì dần trưởng thành, học hỏi được nhiều hơn và đã mặc định là bắt đầu lập trình trên mobile)
Bây giờ, việc trang web chỉ chạy trên 1 chiếc điện thoại là 1 giấc mơ, nhưng khi so sánh các chỉ số về hiệu suất sau nhiều ngày và nhiều tuần, bạn muốn 1 benchmark nhất quán. Nếu bạn xem video này, bạn sẽ biết rằng testing trên 1 thiết bị mobile thực tế không hề chuẩn mực chút nào. Bạn cũng sẽ biết tại sao tôi lại nói 1 cái CPU – được – quạt – mát sẽ đóng vai trò rất quan trọng.
Khi bạn thực hiện benchmarking, bạn nên sử dụng Chrome DevTools and throttle CPU và network của bạn. Tôi sử dụng CPU giảm tốc 10x lần và để network ở chế độ “Good 3G”. Tôi biết nó có thể không chậm bằng chiếc điện thoại trung bình nhưng tôi không muốn bị làm phiền với các vấn đề về tốc độ.
Bởi vì không dừng lại ở 1 cái gật đầu và lời đồng tình rằng đây là ý tưởng tốt mà nó còn phải là 1 ý tưởng thực sự có giá trị.
 
Đây là 1 thứ khiến tôi khá ngạc nhiên: chúng thực sự rất ồn.
Đây là thứ khác khiến tôi ngạc nhiên: tôi có 1 CPU i7 lớn mà tôi sử dụng để làm hầu hết mọi việc và 1 Pixel XL hoàn toàn mới: chiếc điện thoại nhanh nhất trên thế giới. Theo bạn thì hiệu suất điện thoại của tôi sẽ ra sao? 80% desktop? 60%? Hay có ai đoán là trên 10% không?
Sai rồi! Chỉ có 10% mà thôi. Nếu tôi làm chậm i7 lại khoảng 10 lần, nó cũng bằng tốc độ với chiếc điện thoại 1400USD trước mặt tôi.
Đăng kí ngay để khai phá những công thức tối ưu hóa PHP & PHP 7
Đăng kí ngay để khai phá những công thức tối ưu hóa PHP & PHP 7
Đó là sự khác biệt giữa cái click 20ms và click 200ms. Hoặc 1 khung hình tốn 16ms để render với 160ms.

#3 Trở thành 1 kẻ rành về benchmark

Một khi đã nhận được nhận xét tốt trên 1 trang benchmarking, tôi lại càng muốn tiến hành với tất cả các trang benchmarking để được nghe lời khen nhiều hơn.
Khi tôi chạy lighthouse trên trang web, tôi chỉ nhận được 97 điểm. 3 điểm còn lại của tôi đã mất đi đâu rồi!!!
Như tôi đã thấy, tôi được nhận xét là tôi có 1 input latency 285ms. Nếu nó thực sự đúng, thì sẽ là chuyện khá kinh hãi. Nhưng tôi biết nó chỉ 20ms thôi.
Vậy thì nhân viên của lighthouse chẳng qua là những kẻ ngu ngốc.
Vì vậy, tôi ngập ngừng thừa nhận với bản thân rằng có lẽ tôi nên nghiên cứu điều này, dù thực tế cho thấy tôi đã hoàn toàn đúng và 1 thuật toán được viết bởi Google đã sai rõ ràng.
Nó nhắc tôi phải bắt đầu lại toàn bộ quá trình giảm tốc CPU, và chắc chắn, thời gian phản hồi mà tôi nghĩ là nhất thời đã chậm đến 200+ ms.
Vì vậy tôi đã làm vài profiling và hầu hết thời gian là dành cho React. Tôi đã thực hiện hầu hết các practices tốt nhất liên quan đến hiệu suất React, và không có “updates nào bị lãng phí”.
Tôi thậm chí còn memoize (memoization là một kỹ thuật tối ưu, nhằm tăng tốc chương trình bằng cách lưu trữ kết quả của các câu gọi function và trả về các kết quả này khi function được gọi với cùng input đã gọi) các components có số lượng phần tử thấp (low-cardinality)
Bạn cũng nên biết tôi là 1 fan bự của React. Nhưng hiệu suất đã đánh bật lòng trung thành đó.
Đầu tiên, tôi đã thử preact-compat. Nó tốn mất 15 phút để convert codebase cả tôi. Một sự tiến bộ vượt bậc.
Tôi kể chuyện này với 1 người bạn từng viết Preact và anh ấy nói tôi nên thử đầy đủ Preact vàwowsers vì nó thậm chí còn nhanh hơn.
Dưới đây là biểu đồ tôi có được.
Có người còn bảo tôi hãy thử Inferno nên tôi đã chuyển ứng dụng của mình sang inferno để siết chặt thêm về hiệu suất.
Đây chính là kết quả thu được.
Đúng vậy tôi đã thử, Inferno nhanh nhưng không nhanh bằng Preact nên tôi rút lại thay đổi đó.
Tôi đã học được bài học ở đây rằng đừng ngần ngại gạch bỏ công việc. Nhưng bạn cũng nên rụt rè 1 chút. Không ai lại thích 1 kẻ hướng ngoại nói “nhiều” đâu.
Bí mật tối ưu hóa PHP & PHP7 hàng đầu. Đăng kí tìm hiểu ngay!
Bí mật tối ưu hóa PHP & PHP7 hàng đầu. Đăng kí tìm hiểu ngay!
Và đây…
Tiếp theo, tôi test trên yslow. Tôi gần như đã đạt được những điểm số cao nhất, ngoại trừ 1 con D (!) vì có quá nhiều DOM nodes. Điều buồn cười là vì tôi biết số lượng DOM nodes mà tôi cần và không ai khác có thể nói tôi nên làm cái gì vì tôi chính là người quản lý của chính tôi.
Có vẻ như những nhân viên của yslow đã sai.
Vì vậy tôi đã khá ngần ngại khi nghĩ đến việc tôi có thể giảm số lượng DOM nodes mà mình đã render. Vì thế, tôi đã thay đổi các nhánh trong tree của mình đã được expand mặc định.
Đây là biểu đồ dành cho bạn!
Cảm ơn các nhân viên của yslow, có vẻ như gợi ý ở trên khá tốt đấy.

#4 Render Client Side rất tốn kém

Client Side Rendering (CSR) cũng có những lợi điểm nhưng đối với trang web này thì lại vô dụng.
Tôi không có bất cứ phần nào dành riêng cho người dùng trên trang của mình nên tôi gửi cùng 1 HTML đến tất cả mọi người. Và tôi cũng có 1 nhiệm vụ processing khá năng thực hiện về phần client, khiến CSR ngày càng tệ hơn. CSR không phải là cách nhanh nhất để các pixels của tôi tiếp cận được ánh nhìn của bạn.
Đây là lời khuyên của tôi nếu bạn đang xây dựng 1 trang web cho 1 công ty có – và mong muốn duy trì dòng doanh thu:
  • Hãy xem bảng phân tích của bạn và xem thử phần trăm traffic đến từ Bing là bao nhiêu (đối với tổ chức của tôi là 1,6%)
  • Đúng vậy là Bing vì chúng không xài JS khi index và vì vậy không index 1 trang web CSR nào
  • Giúp thu nhập hằng năm của nhân viên bạn tăng 1,6%
  • Hãy hỏi công ty nếu họ hạnh phúc với số tiền được đưa vào cuộc cạnh tranh bởi vì bạn sẽ không thu được các kết quả tìm kiếm Bing nữa đâu
Có lẽ bạn đã hiểu. Tôi đã đi lạc đề.
Chỉ cần gửi HTML đã render từ server của bạn.

#5 Đừng server-render HTML

Đúng là nghe có vẻ nghịch lý. Làm thế nào bạn serve HTML mà không server-render HTML? Bạn làm đúng những gì mà mọi người có thể đã làm vào những năm 90…
React (và họ hàng nhanh hơn của nó) cần có vài tá milliseconds để render 1 trang HTML khiêm tốn. (Ai đó có số liệu về thời gian PHP hoặc JSP không? Tôi rất muốn so sánh). Điều đó đồng nghĩa là 1 single core chỉ phục vụ được khoảng 50 người trên mỗi giây, các requests thêm sẽ phải xếp hàng chờ đợi ngay ngắn và điều này không tốt chút nào.
Đối với trang web nhỏ của mình, tôi đang gửi cùng HTML vào mỗi response. Nếu trang của bạn tương tự thì bạn không cần 1 web server để render HTML và gửi đi các files CSSs và JS theo yêu cầu. Bạn có thể xuất HTML của mình vào thời điểm build time và ra mắt toàn bộ từ static hosting (hoặc cache it trên 1 CDN tốt). Github và Firebase và khả năng là những người khác sẽ cho bạn static hosting vì chúng rất thân thiện.
Bí mật tối ưu hóa PHP & PHP7 hàng đầu. Đăng kí tìm hiểu ngay!
Bí mật tối ưu hóa PHP & PHP7 hàng đầu. Đăng kí tìm hiểu ngay!
Ý tưởng này không áp dụng được nhiều nên bạn có thể bỏ qua phần này. Nhưng nếu bạn có bất kì trang nào có thể được render vào build time (như trang chủ của Linkedin, Paypal, Github) và tận dụng nó.
Tôi nghĩ ra ý tưởng này khi đang xem vài blog, nhận ra tôi chỉ tốn mất 96 milliseconds để nhấn vào link dẫn đến blog đã nói (nhưng nhìn chung tôi vẫn cho rằng trang của tôi là trang nhanh nhất trên thế giới – và thực tế đôi khi lại không công nhận điều đó)
Tôi đã phát hiện blog được hosted như 1 static site với Firebase. Nhưng điều đó đồng nghĩa là tôi phải generate HTML vào build time. .
Giá như React có thể output DOM đã generated như 1 string. Như thế tôi có thể chỉ cần lưu string đó vào 1 file HTML như 1 phần của build script.
Vốn dĩ React đã có 1 method có tên là renderToString (mặc dù bạn nên sử dụng renderToStaticMarkup).

2018-11-18

10 Kỹ Năng Mà Lập Trình Viên Web Cần Có Để Phát Triển

10 Kỹ Năng Mà Lập Trình Viên Web Cần Có Để Phát Triển

Kỹ năng về JavaScript
Javascript là một trong những kỹ năng quan trọng nhất mà các nhà tuyển dụng trên thế giới tìm kiếm trước khi họ thuê bất kỳ ai, không chỉ riêng lập trình viên. Đồng nghĩa với việc, một lập trình viên thành thạo kỹ năng này sẽ luôn tìm được một công việc, nơi mà họ luôn có thể tận dụng được kiến thức JavaScript của mình. Do đó, bạn cần làm mọi cách để nắm vững JavaScript nếu muốn giữ đứng vững trong lĩnh vực công nghệ. Tuy nhiên đừng bỏ qua các ngôn ngữ lập trình khác vì chúng cũng không kém phần quan trọng.

Sức thuyết phục
Lập trình viên web hiển nhiên vẫn cần đến một số kỹ năng mềm quan trọng, chính những kỹ năng này sẽ giúp họ giữ vững trong sự nghiệp. Có thể kể đến: kỹ năng quản lý khách hàng, tư duy phản biện, kỹ năng giao tiếp. Kỹ năng quản lý khách hàng có thể giúp bạn đối phó với nhiều khách hàng với tính cách khác nhau mà không cần hiểu về bối cảnh hay kiến thức web của họ. Nếu bạn có ý kiến giúp cải thiện sản phẩm tốt hơn, kỹ năng này sẽ trở nên vô cùng hữu ích, khiến khách hàng tin tưởng bạn với dự án hơn nữa.

Học cách làm việc với các dự án dữ liệu lớn (big data project)
Càng ngày, các dự án có khuynh hướng chứa càng nhiều dữ liệu, việc làm quen sớm với các dự án dữ liệu lớn sẽ giúp ích lập trình viên rất nhiều. Chỉ trong một năm, big data project đã phát triển dữ dội và chưa có dấu hiệu dừng. Vì vậy, nếu muốn làm việc tốt hơn, bạn phải tìm cách biến mình thành “chuyên gia” với những dự án kiểu này. Nhiều chuyên gia cho rằng đây sẽ là xu hướng trong tương lai và những lập trình viên sẽ phải phát triển thêm kỹ năng để xử lý nhiều dữ liệu hơn trong dự án nếu cần thiết.

Sự linh động
Đây là một kỹ năng quan trọng mà các lập trình viên web cần thành thục. Yêu cầu của khách hàng biến đổi muôn hình vạn trạng, bạn sẽ phải sẵn sàng phục vụ họ để thu hút nhiều cơ hội công việc hơn. Ví dụ, nếu bạn là lập trình viên full-stack web, rất có thể bạn sẽ không cách nào đáp ứng được hết nhu cầu của khách hàng. Vì đâu mà bạn đắt khách thế? Phần lớn là nhờ vòa khả năng chuyển đổi dễ dãng từ công nghệ này sang công nghệ khác đấy.

Internet of things (IoT)
Mọi người đều muốn học về IoT, cả để đáp ứng nhu cầu tuyển dụng của nhiều công ty ngày nay, và đồng thời trâu dồi thêm kỹ năng cần thiết cho sự nghiệp. Đây cũng là một kỹ năng giúp lập trình viên web áp dụng vào môi trường sống của bản thân và những người xung quanh.

Tiếp cận Di Động
Ngày nay, nhu cầu về lập trình viên di động đang rất cao cho những ai có thể phát triển những website đa trình duyệt và ứng dụng đa nền tảng. Lĩnh vực này không yêu cầu quá cao, miễn là bạn có thể lập trình tốt. Sau khi tiếp thị rộng rãi để thu hút và giữ chân khách hàng, thành công sẽ tự gõ của thôi.

Làm việc như một lập trình viên Full-Stack
Nếu có thể thoải mái phát triển web với bất kỳ công nghệ và nền tảng nào trên thị trường, bạn đã gần vươn đến đỉnh cao rồi đấy. Full-stack là một kỹ năng rất cần thiết cho lập trình viên web, vì đây là một trong những yêu cầu mà nhà tuyển dụng mong muốn. Nếu bạn muốn tiếp cận nhiều công việc hơn trong tương lai, hãy hướng đến full-stack để có thể làm việc hiệu quả hơn với bất kỳ công nghệ hay nền tảng nào.

Tăng cường bảo mật
Bảo mật vẫn là một trong những mối đe dọa lớn đối với nhiều công ty ngày nay. Lập trình viên cần phải học nhiều hơn về cách hoạt động an toàn trên web và cách bảo vệ các đoạn mã của mình. An ninh mạng cũng rất quan trọng trong môi trường web. Các công ty bạn đang làm việc cũng có thể bị ảnh hưởng. Bởi vậy, hãy học cách làm việc an toàn và bảo mật, không chỉ riêng cho bản thân mà cho cả khách hàng.

Đa dạng hóa
Ngày nay, rất khó nhận biết người ta đang ưa chuộng thứ công nghệ nào, đặc biệt với ngôn ngữ lập trình lại càng khó hơn. Do đó, một lập trình viên thông minh sẽ đa dạng hóa để có thể sẵn sàng cho bất kỳ dự án nào. Có rất nhiều ngôn ngữ lập trình được sử dụng ngày nay, hầu hết đều rất dễ học. Không có ngôn ngữ nào là tốt nhất, chúng đều có những vị trí quan trọng khác nhau. Để bắt kịp xu hướng đang biến đổi ngày càng nhanh chóng, bạn buộc phải đa dạng hóa hơn nữa những kỹ năng đã có. Điều này sẽ giúp bạn sẵn sàng cho bất kỳ công việc nào trong tương lai.

Nhanh nhẹn hơn
Đây là một trong những kỹ năng quan trọng nhất mà lập trình viên web cần phát triển. Sự nhanh nhẹn sẽ tỏ ra hữu ích trong lâu dài. Đại loại như bạn đang rất tham vọng nhưng vẫn phải tỏ ra khiêm tốn vậy. Kỹ năng chia dự án ra nhiều phần nhỏ, khả xác định việc cần ưu tiên, khả năng thích ứng với thay đổi và đảm bảo thể trạng tốt nhất tại mọi thời điểm,… là những phẩm chất cho bất cứ ai, ở bất cứ khi nào trong ngành này.
Mọi thứ đang thay đổi nhanh chóng trong ngành công nghệ máy tính. Lập trình viên web nên phát triển nhiều kỹ năng để có thể làm việc tốt, cũng như phục vụ được ngày càng nhiều khách hàng hơn nữa.

2018-11-17

Cách học DỐT tiếng anh cho lập trình viên

Cách học DỐT tiếng anh cho lập trình viên

google cách học tốt tiếng anh thì ra hàng đống kết quả nhưng đảm bảo không có cái nào dùng được (nếu dùng được thì bạn đã tiến bộ rồi phải không). Vậy thay vì tìm cách học tốt hãy đọc thử những cách học DỐT sau đây xem sao.
Lưu ý: những bài viết thể hiện quan điểm như này vốn không có sự đúng sai tuyệt đối, mọi hệ lụy xảy ra đều là do cơ địa của bạn :smile:

1. Xem/đọc BBC, CNN, xem thời sự, đọc báo thanh niên báo tuổi trẻ, American Voice People hay cái gì ấy mình không nhớ tên....v...v

Bí kíp học dốt tiếng anh đầu tiên, là hãy lao vào đọc/xem những thứ bạn không quan tâm, nhàm chán thiếu thú vị, chỉ cốt để nhồi nhét tiếng Anh vào đầu, công dụng duy nhất là dễ ngủ, Mình đã thử và thành công.
Mấy trang kia mang tính chất ví dụ, hãy thay thế cụm trang đó bằng trang nào bạn không thích, chân lý vẫn giữ nguyên.

2. Đào bới khắp thành phố tìm trung tâm tiếng anh nào cho ngon.

Chưa thấy ở đâu lắm trung tâm tiếng anh như ở việt nam, chưa thấy ở đâu các Trung tâm dám TO CÒI hô hào khẩu hiệu, thần kì hiệu quả chữa bách bệnh như ăn thịt Đường Tăng như ở VIệt Nam. Rồi đăng lên mấy cái tấm gương thành công do học ở trung tâm mà ra, tìm hiểu mới biết đều là người du học hay học trường quốc tế, không thì cũng là tự giỏi từ trước rồi.
Học ở lớp học hay trung tâm có tác dụng khi bạn hoàn toàn mù chữ + không có khả năng tự học + quá lo lắng không biết làm quen tiếng anh như nào + quá tự kỉ không thể ngồi học một mình thêm nữa + muốn giao lưu kết bè kết bạn ngắm gái xinh. Còn đâu thì muốn tiến bộ nhiều thì cách tốt nhất là TỰ THÂN.

3. Cứ kiếm hết cách học này đến cách học kia, nhưng không nghe lời ai cả

Đã hỏi cách học thì ít nhất hãy tạm tin và làm theo xem sao đã. Nếu một thời gian sau thấy không hiệu quả thì đổi sang cách khác vì không ai giống ai. Đừng hoang mang lo ngại là làm thế này được không làm thế kia được không. Vì chung quy lại thì làm gì cũng sẽ giỏi lên thôi. Cách duy nhất để dốt đi là cách bạn đang làm: hoang mang chong chóng hết cách này cách kia mà không thực sự bắt tay vào cách nào cả.

4. Download thật nhiều tài liệu, mua thật nhiều sách, down app về chật ních máy

Ngoại trừ từ điển chỉ cần 1 cái và có khi còn tra. Chứ sách vở các thứ thì mở ra dược mấy lần? Xóa đi để bộ nhớ mà tải phim.

5. Làm thật nhiều "bài tập"

Tiếng anh chứ có phải toán đâu mà học cái kiểu cộng cộng trừ trừ. S + V-ng + O... cộng cộng suốt ngày đến lúc cần thì trong đầu cũng không nhớ nổi.

6. Cái gì cũng hỏi tại sao

Tại sao chỗ này lại viết như thế, tại sao người ta lại nói như thế.
Câu trả lời kiểu "khoa học hóa tiếng anh" sẽ là:
  • ở vì đây là thì hiện tại hoàn thành tiếp diễn, mà thì này được dùng diễn tả một việc đã xảy ra và chưa kết thúc mà bla bla bla
  • ờ vì -ing dùng cho vật còn -ed dùng cho người....
Rất tiếc, sự giải thích tiếng anh chỉ có ứng dụng đôi chút trong khi những thứ không giải thích được rất nhiều.
Câu trả lời đúng của "tại sao như thế" là:
Vì người Anh thích như thế.
Nên nhớ, vì người Anh nói như thế nên mấy quy tắc này được sinh ra, chứ không phải vì có mấy quy tắc này nên người ta phải nói như thế.
Vậy nên đừng hỏi tại sao nữa, vì những gì không thể hỏi tại sao mới là phần lớn của ngôn ngữ, thông qua sinh hoạt qua lịch sử mà hình thành nên chứ không cần lí do nào cả. Nói nhiều thành quen thôi.
Bạn muốn hỏi lí do để có thể nhớ, như những môn học khác, hiểu mới nhớ. Đáng tiếc là ngôn ngữ thì không như vậy. Dùng mới nhớ.

thế phải làm gì đây?

1. Thích cái gì, đọc cái đó.

Thích bóng đá? Lên web bóng đá, diễn đàn bóng đá, Reddit bóng đá. Thích cây cối chim muông, đọc về cây cối chim muông bằng tiếng anh. Thích khoa học thì đọc wikipedia, các web khoa học. Thích truyện tranh thì lên kissmanga, app naver webtoon. Thích máy tính đọc về máy tính... Thích kinh dị creepy lên tìm trên tumblr hoặc mấy web kinh dị. Thích xem thiên hạ chém gió lên đọc comment trên những video youtube bạn thích.
Nhiều người hỏi khó lắm biết gì đâu mà đọc. Khó quá có thể đọc truyện tranh, mẩu tin ngắn thay vì dài. Dần dần nâng cao lên.

2. Bỏ hết phụ đề việt đi, xem phụ đề anh

Phim là thứ mà 100% nhân loại đều thích. Tại sao không tận dụng. Đừng kêu không hiểu nữa. Không hiểu nhiều thì hiểu ít. Không hiểu thì biết cách phát âm. Không hiểu thì pause lại tra từ. Không hiểu thì ghi ra để sau này hiểu. Không hiểu thì bật song song 2 loại phụ đề việt-anh lên.
Hi sinh "không hiểu" vài bộ phim để học tiếng anh cũng có làm sao nhỉ?
Có những phim còn sử dụng tiếng Nhật - một ngôn ngữ mà khó hơn cả tiếng anh nữa mà mọi người vẫn hiểu vẫn xem ầm ầm đó thôi.
Ngoài ra thì xem phim Nhật, phim Hàn, phim Thái, phim Việt...phụ đề Anh cũng có tác dụng nhé. Dù không bổ sung được phần nghe nói nhưng có tác dụng đọc hiểu.
Xem ở đâu?
  • down về rồi dùng phần mềm như KMPLayer ghép 2 phụ đề song song Anh-Việt vào xem. down phim bằng torrent ở Vịnh cướp biển, down phụ đề tv series ở Addic7ed, phụ đề phim lẻ ở Subscene
  • xem online ở HD Việt hoặc HD Online có sẵn phụ đề Anh và việt nhưng hay die link, nhiều quảng cáo. Được cái đỡ phải down. Hoặc Study Phim ngoài phụ đề trong video còn ghi thêm phụ đề rõ ràng ra bên cạnh và dịch luôn, tua phim bằng phụ đề,... hơi ít phim và hình như có hạn chế số lượng xem hàng ngày... mình không nhớ
  • xem online trong ứng dụng Terrarium TV hoặc Popcorn Time chủ yếu là phụ đề tiếng anh, kho phim đồ sộ phim gì cũng có.

3. Chơi game server nước ngoài, tìm chém gió với người chơi ở mỹ, anh, xem stream...

Mòe không chơi nên không biết là cụ thể game gì và server nào để mà nói, nhưng muốn tìm có lẽ không khó. Bạn mòe học tiếng anh từ Dota cho rằng Dota là một trong những game hỗ trợ "chat chit nói chuyện" tốt nhất.
Ngoài ra có thể xem stream chơi game của bọn nói tiếng anh, hoặc xem mấy cái video clip chế lại từ game, có phụ đề tiếng anh nhưng nói tiếng việt, hoặc nói bằng tiếng anh đều được. Khi xem nhớ ghi chú lại từ mới, câu nói những gì cảm thấy sau này cần dùng

4. Từ nay đừng google với từ khóa tiếng việt nữa

bất kể là cái gì đừng tìm bằng tiếng việt nữa. Tập tìm bằng tiếng anh. Nếu không biết từ khóa là gì thì tra từ điển cái từ khóa rồi dùng từ khóa để tra lại google. Đọc kết quả bằng tiếng anh. Cái này đặc biệt công hiệu vì đã tìm nghĩa là bạn quan tâm. Quan tâm thì sẽ tập trung. Tập trung thì nhớ nhanh + nhớ lâu.

5. Giao lưu kết bạn trò chuyện chém gió chat chit với người việt giỏi tiếng anh hoặc người anh mĩ

Ở đâu à?
discord.me lên đây join vào cái server nào đông hoặc gõ từ khóa vào tìm kiếm server nào ưng ý mình. Discord là một platform chat text + voice RẤT ĐÔNG, vô cùng rộng lớn, khắp trên thế giới, đủ mọi chủ đề, không tìm được cạ ở đây thì chắc cũng chẳng còn chỗ nào dễ tìm hơn thế cả.
Mòe thì hay nằm ở server Programmer's Hangout vì hay lên đây hỏi về lập trình, mấy người ở đây vừa năng nổ giúp đỡ vừa có tính cách hay, thoải mái. Hôm bữa chui vào voice room cả nhóm đang nói chuyện thì có ông tự kỉ ngồi chơi piano theo chủ đề câu chuyện. Ví dụ khi Mòe nói tới cài win thì ổng chơi piano luôn bản nhạc khởi động windows,... nói tới phim thì ổng đánh luôn nhạc nền phim đó :smile: Nhiều người dị mà dễ thương thật.
Ai mà hay troll thì đừng vào Programmer's Hangout mà hãy vào 2 cái này: Daddy và GayDayz cực kì đông đúc và tấp nập, ở đây hầu như lúc nào cũng có người nói chuyện trên các voice room để mà hóng. Cái GayDayz tên Gay nhưng trong này đủ thứ mà thẳng còn nhiều hơn gay. Cái Daddy thì nghe tên daddy69 có vẻ không trong sáng cho lắm. Nói chung 2 server này đủ loại người, tốt xấu có cả. Có lúc thì gặp những người rất lịch sự có lúc thì đùa bậy. Không thuần như Programmer's Hangout nên moè chủ yếu lui tới Programmer's Hangout và một số server của bạn bè mòe thôi. Tốt nhất mỗi người nên tự tìm lấy đám đông mà mình cảm thấy phù hợp.
Ai kêu không hiểu không biết nói gì, cái gì cũng phải từ từ và bền bỉ. Không biết thì tra, không biết thì hỏi.
Có cái server này của người việt nói tiếng anh và dạy tiếng việt cho người nước ngoài Learn Vietnamese-English có thể vào đây nếu cảm thấy muốn nói tiếng anh với người việt.
Ngoài discord ra còn có Xat cũng rất nhiều room đủ thể loại nhưng trên này trẻ trâu là nhiều.
Và IRC là một mạng lưới còn đông gấp vạn lần discord và Xat, quả nhiều server, nhưng không có một bóng dáng việt nam nào và chỉ hỗ trợ text chat, nhưng dân lập trình chắc sẽ thích vì nó sử dụng giao thức IRC, phải cài client để sử dụng được triệt để và khi đăng nhập phải nhập port number các thứ,...đem lại cảm giác bí hiểm.
Ngoài ra hầu như các phần mềm, hệ điều hành nổi tiếng đều có 1 kênh IRC chính thức. Mòe hay lui tới server của Linux Mint. Có server của Python, của Mozilla, Ubuntu, Fedora, GNU, Open Stack, Twitch...

6. Phải thật lì

Không được sợ hãi, sợ sai. Mấy đứa bảng cửu chương còn không thuộc nó vẫn google translate để tán trai tây kiếm thẻ xanh ầm ầm kìa, các lập trình viên thông minh có gì phải sợ? Nếu bị người khác sửa lỗi đừng cáu kỉnh hay tự ti vì ai giỏi cũng đã từng ngu. Đau mới thấm.

7. Nói còn châm chước, nhưng viết thì phải cẩn thận và có trách nhiệm với những gì mình viết ra

Có những lỗi sai cơ bản rất đơn giản và không yêu cầu cao siêu gì thì tránh mắc. Khi viết nói chuyện với người khác hay ngay cả viết linh tinh lên facebook cũng phải tự soát lỗi để tránh thành thói quen xấu khó bỏ. Học hành từ mới cấu trúc... đao to búa lớn làm gì khi mà chính những thứ nhỏ nhặt mới là thứ thể hiện trình độ của bạn:
  • yesterday i go toilet 6 time a day
  • she like me
  • but i only want love man
Cái gì mà bạn không dám đảm bảo là đúng (chưa viết quen, chưa kiểm nghiệm) thì google xem viết như thế là đúng hay sai, bỏ từ khóa trong ngoặc kép . Nếu thấy không ai hoặc ít ai nói thế mà toàn người linh tinh kiểu comment/tên nick chứ không có kết quả nào từ bài báo chính thức tức là sai rồi viết lại thôi.

8. Khi đọc, xem, nói chuyện... lưu ý lại hoặc ghi chú lại những gì mà đoán là sau này cần

một cụm từ, một câu nói, một thứ mà bạn nghĩ bạn sẽ dùng, một thứ bạn luôn muốn tìm cách diễn đạt mà lâu nay không biết giờ mới thấy, hay thứ mà bạn nghĩ khác bây giờ mới biết mình sai... sẽ trôi qua ngay nếu không tìm cách lưu lại để mở ra ôn lại.

9. Đọc sách tiếng anh

Ai mà tiếng anh mức trung bình trở lên có thể tìm đọc sách tiếng anh. Sách giấy hoặc sách điện tử. Mòe hay đọc sách điện tử vì dễ kiếm hơn là sách giấy và còn có thể tra ngay trong khi đọc bằng cách nhấn giữ vào từ.
Có thể mua Kindle hoặc tải app đọc sách như Moon Reader, FB Reader để đọc file prc, file epub... Dùng kèm với từ điển MSP Dict để hỗ trợ tra từ bằng nhấn chuột trong khi đọc