Xu Hướng 3/2024 # Redux Saga Phần Iii (Tips Khi Làm Việc) # Top 5 Xem Nhiều

Bạn đang xem bài viết Redux Saga Phần Iii (Tips Khi Làm Việc) được cập nhật mới nhất tháng 3 năm 2024 trên website Channuoithuy.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.

Phần III, mình sẽ chia sẻ một số kinh nghiệm đúc kết được khi làm việc với redux-saga qua những dự án thực tế để các bạn có thể áp dụng theo tình huống gặp phải, nếu có những tips nào hay trong tương lai thì mình sẽ cập nhật trực tiếp vào bài viết này luôn, cho các bạn tiện theo dõi

Sử dụng takeLatest để xử lý việc debounce time như thế nào

Sử dụng put effect nhưng lại muốn đợi kết quả từ put effect để xử lý tiếp

Quản lý trạng thái tải của toàn bộ ứng dụng khi dùng redux-saga như thế nào

Làm sao để nhận kết quả trả về khi dispatch 1 action tới saga

Sử dụng takeLatest để xử lý việc debounce time như thế nào

Xét đoạn mã sau

Đoạn mã trên xử lý việc, khi bạn input vào textbox để search các đơn hàng có tên đã gõ vào, và việc này rất hay gặp trong ứng dụng

Thông thường mình sẽ dùng debounce time theo nhiều cách, có thể dùng lodash, hoặc timeout rồi clearTimeout. Nhưng trong trường hợp mình đang đề cập là đang dùng redux-saga, và dùng takeLatest để bắt action và thực hiện truy vấn từ server để lấy dữ liệu về, thì ở đây mình không cần làm gì nhiều, là kết hợp thêm delay effect trong hàm worker là được như ý muốn, xem lại đoạn mã đã thêm phần debounce time

Giải thích đoạn mã trên, vì cơ chế của takeLatest là chỉ nhận action cuối cùng, nên khi bạn gõ 10 lần thì nó sẽ nhận 10 action và tạo ra 10 nhiệm vụ con (fork), mặc dù nó sẽ cancel những nhiệm vụ con đã tạo trước, để đảm bảo 1 nhiệm vụ được xử lý, nhưng việc call api là được gọi (điều này là không mong muốn), nên việc delay lại khoảng thời gian call api, thì takeLatest đảm bảo rằng chỉ 1 api được gọi khi mình call 10 action cùng 1 lúc, khoảng thời gian delay bên đoạn mã trên là 1000 miliseconds, các bạn có thể tùy chỉnh thêm

Sử dụng put effect nhưng lại muốn đợi kết quả từ put effect để xử lý tiếp

Thay vì cho phép đẩy call 1 action khác, và nó thuộc dạng non blocking và tiếp tục chạy đoạn mã tiếp theo, thì chúng ta có thể thay bằng putResolve là vấn đề được giải quyết

Quản lý trạng thái tải của toàn bộ ứng dụng khi dùng redux-saga như thế nào Làm sao để nhận kết quả trả về khi dispatch 1 action tới saga

Mặc định thì khi dispatch 1 action tới saga thì kết quả bạn nhận được là action được gởi đi, xem đoạn mã bên dưới

Với đoạn mã trên nếu bạn chúng tôi loginResponse ra các bạn sẽ nhận được là action object đã được gởi đi thôi, vậy trong trường hợp mình muốn nhận được kết quả trả về khi call action type ‘auth/LOGIN’ để biết là thành công hay là thất bại để hiện thông báo (mình cũng hay làm việc này vì muốn dời luôn việc quản lý message này nọ ra cho component xử lý, theo vì UI và login api dính tới nhau). Và đầu ra của bài toán này là gì, trước đó thì mình cũng có tìm hiểu trên mạng thì có chia làm 2 dạng

Sử dụng package redux-saga-promise (cách này khả thi hơn)

vậy cuối cùng giải pháp đưa ra của vấn đề này là gì, đó là convert dispatch action hiện tại thành 1 Promise, thì mình có thể dùng async, await để đợi kết quả trả về khi dispatch 1 action trong saga rồi. Theo dõi đoạn mã bên dưới

Ở phần mình có tạo một loginWatcher để hiện thực mã gọi tới hàm tiện ích sagaPromise đã tạo ở trên

Đoạn mã này mình giả lập 2 trạng thái login thành công và thất bại, để các bạn hình dung được và khi dùng sagaPromise helper

Ở đây mình dùng hàm tiện ích là startActionWithPromise, và bắt được kết quả trả về khi gọi tới saga (resolve), trường hợp reject với lỗi mình sẽ bắt ở catch

Redux Saga Phần I (Giới Thiệu)

Lúc đầu cũng không tính viết mấy bài kiểu chuỗi hướng dẫn này nọ vì trên mạng khá nhiều, nhưng đối với những bài hay mình biết mình cũng mong muốn bỏ thời gian để viết chia sẽ cùng mọi người. Hy vọng giúp ích được nhiều người.

Giới thiệu redux-saga là gì?

Redux saga là gì? Redux saga là một thư viện cung cấp cho chúng ta để giải quyết các vấn đề về side effect (hiểu đơn giản là hành động gì mà gây ra sự chờ đợi trong ứng dụng của bạn, setTimeout, call api, hoặc chỉ là delay…), khi viết ứng dụng reactJS với redux (cung cấp cho chúng ta 1 middleware và 1 số hàm tiện ích hổ trợ việc thao tác action dễ dàng hơn) và thư viện này được viết dự trên tính năng của ES6 là Generator function.

Khi mình gởi 1 action gì đó nhiều, thì làm sao để bắt được cái sau cùng và hủy những cái đã gọi trước nó (cancel action). Đây một tính năng hay mà bắt buộc phải dùng redux-saga (Các bạn cũng có thể dùng redux-observable, bản thân mình trước đó có dùng redux-observable nhưng khi redux-saga ra đời thì mình chuyển qua dùng redux-saga luôn vì mình thấy hay hơn)

Ok nếu 2 case trên redux-thunk xử lý được thì không cần áp dụng redux-saga chi nha các bạn

Cài đặt

Các bạn có thể dùng npm hoặc yarn

Sử dụng

Để xử dụng redux-saga trong ứng dụng reactJS, ta có các bước sau

Đăng ký và chạy

Tạo file để khai báo watch saga

Tạo file src/sagas.js với nội dung

Đoạn mã trên mình sử dụng effect là takeEvery, saga effect còn cung cấp nhiều effect để sử dụng tùy theo nhu cầu: take, takeEvery, takeLatest, takeLeading,…

takeEvery effect ở đây mình dùng với ý nghĩa là bắt tất cả các action với type là HELLO và chạy cái hàm generator function để in ra chữ “hello saga”

Ở bài này mình chỉ hiểu ngắn ngọn vậy thôi, bài sau mình sẽ đi vào chi tiết hơn

Đăng ký và chạy

Đăng ký saga middleware lúc tạo store

Tạo saga middleware và đăng ký vào middleware với đoạn mã

Giới Thiệu Về Redux Saga

Redux-Saga là gì?

Redux-Saga là một thư viện redux middleware, giúp quản lý những side effect trong ứng dụng redux trở nên đơn giản hơn. Bằng việc sử dụng tối đa tính năng Generators (function*) của ES6, nó cho phép ta viết async code nhìn giống như là synchronos.

Saga không chỉ tồn tại trong thế giới javascript, nó còn được coi là 1 pattern. Bạn có thể xem qua về saga pattern bằng clip này: https://youtu.be/xDuwrtwYHu8

Side effect là gì??

Ta đã biết tất cả những xử lý ở REDUCER đều phải là synchronous và pure tức chỉ là xử lý đồng bộ. Nhưng trong ứng dụng thực tế thì cần nhiều hơn vậy ví dụ như asynchronous (thực hiện một số việc như gọi một hàm AJAX để fetch dữ liệu về nhưng cần đợi kết quả chứ kết quả không trả về ngay được) hoặc là impure (thực hiện lưu, đọc dữ liệu ra bên ngoài như lưu dữ liệu ra ổ cứng hay đọc cookie từ trình duyệt… đều cần đợi kết quả). Những việc như thế trong lập trình hàm gọi nó là side effects.

Generator function là gì??

Khác với function bình thường là thực thi và trả về kết quả, thì Generator function có thể thực thi, tạm dừng trả về kết quả và thực thi bằng tiếp. Từ khóa để làm được việc đấy là “YIELD”. Generator được đưa ra cách đây mấy chục năm nhưng đến ES2024 mới được bổ sung, các ngôn ngữ khác đã được bổ sung tính năng này như C#, PHP, Ruby, C++, R…

Redux-Saga hoạt động như thế nào??

Đối với logic của saga, ta cung cấp một hàm cho saga, chính hàm này là hàm đứng ra xem xét các action trước khi vào store, nếu là action quan tâm thì nó sẽ thực thi hàm sẽ được thực thi, nếu bạn biết khái niệm hook thì hàm cung cấp cho saga chính là hàm hook. Điều đặc biệt của hàm hook này nó là một generator function, trong generator function này có yield và mỗi khi yield ta sẽ trả về một plain object. Object trả về đó được gọi Effect object. effect object này đơn giản chỉ là một object bình thường nhưng chứa thông tin đặc biệt dùng để chỉ dẫn middleware của Redux thực thi các hoạt động khác ví dụ như gọi một hàm async khác hay put một action tới store. Để tạo ra effect object đề cập ở trên thì ta gọi hàm từ thư viện của saga là redux-saga/effects.

Tại sao tôi phải sử dụng Saga??

Khi bắt đầu tìm tòi về redux, bạn hay tìm thấy các bài hướng dẫn sử dụng redux-thunk hoặc redux-saga để quản lý các async action. Vậy tại sao bạn lại được khuyên sử dụng redux-saga ?

Trích dẫn trong document của redux-saga:

Contrary to redux thunk, you don’t end up in callback hell, you can test your asynchronous flows easily and your actions stay pure. Tạm dịch: trái với redux thunk, bạn không cần phải phát dồ lên với các callback trong mỗi action, đến với saga đi, bạn có thể test các async action với một quy trình dễ dàng mà không làm hư các action đó

So sánh saga và thunk:

redux-thunk

import { API_BUTTON_CLICK, API_BUTTON_CLICK_SUCCESS, API_BUTTON_CLICK_ERROR, } from './actions/consts'; import { getDataFromAPI } from './api'; dispatch(getDataStarted()); getDataFromAPI() dispatch(getUserSuccess(data)); dispatch(getDataError(err.message)); }) }; };

Ở đây ta có một action creator getDataFromAPI() bắt đầu async progress như sau:

Đầu tiên bắn ra action cho phép store biết rằng chuẩn bị 1 API request ( dispatch(getDataStarted())

Tiếp theo thực hiện API request trả về một Promise

Cuối cùng bắn ra success action nếu request thành công hoặc error action nếu có lỗi

redux-saga

import { call, put, takeEvery } from 'redux-saga/effects'; import { API_BUTTON_CLICK, API_BUTTON_CLICK_SUCCESS, API_BUTTON_CLICK_ERROR, } from './actions/consts'; import { getDataFromAPI } from './api'; export function* apiSideEffect(action) { try { const data = yield call(getDataFromAPI); yield put({ type: API_BUTTON_CLICK_SUCCESS, payload: data }); } catch (e) { yield put({ type: API_BUTTON_CLICK_ERROR, payload: e.message }); } } export function* apiSaga() { yield takeEvery(API_BUTTON_CLICK, apiSideEffect); }

Cùng một process, nhưng cách implement khác nhau hoàn toàn.

put thay cho dispatch

function cuối (apiSaga()) giúp theo dõi tổng thể toàn bộ các action (ở đây có API_BUTTON_CLICK)

Với cách gọi của redux-saga, chúng ta có thể get data từ bất kì async function nào (promise, …)

Nhận xét

Cả 2 cách implement đều dễ đọc, tuy nhiên đối với redux-thunk , bạn phải đối đầu với một tá các promise, các callback nếu có, rất mất thời gian cho người maintain đọc và tìm code. Với redux-saga , đơn giản bạn chỉ cần track theo try/catch block để theo dõi dòng code, bên cạnh đó còn có hàm giúp bạn track các action một cách dễ dàng.

Tìm Hiểu Về React Redux Saga Xây Dựng Ứng Dụng Đơn Giản.

Trong bài này chúng ta sẽ cùng tìm hiểu về xây dựng một ứng dụng đơn giản với React Redux Saga.

Trước tiên về môi trường chúng ta cần có nodejs , npm. Khởi tạo ứng dụng, tại cửa sổ termiantor npm install -g create-react-app create-react-app app cd app npm install --save-dev redux react-redux redux-act redux-devtools-extension redux-form redux-saga npm install

Trong ứng dụng cơ bản này. Chúng ta sẽ dùng 1 api để lấy dữ liệu của trang https://newsapi.org/ bạn có thể nên đây tạo để tạo 1 api lấy bài viết mới nhất cho ứng dụng. Lúc mình tạo hiện tại đang là link sau:

https://newsapi.org/v2/everything?q=bitcoin&from=2024-04-21&sortBy=publishedAt&apiKey=df861cbe5f0b466996fff1ac1b60072e Vòng đời ứng dụng sẽ như sau:

STATE(before call) →STATE(during call) →STATE(answer received)

Chúng ta sẽ cần tạo cấu trúc thư mục như sau:

Nội dung trong file index.js

Trong tập tin này, tôi đã khởi tạo redux store . Store này sử dụng hai phần mềm trung gian logger và SAGA. Redux-logger để kiểm tra trong bảng điều khiển kích hoạt các hành động và trạng thái của Redux store. Nội dung trong file APP.js

Nội dung trong file Button.js

Nội dung trong file actions/index.js.

Trình tạo hành động getNews . Nó trả về một đối tượng. Và cho reducer biết cách xử lý loại hành động này. Bây giờ trình reducer sẽ như thế sau:

Nội dung trong file reducers/index.js

Nội dung trong file sagas/index.js

Tập tin này khá phức tạp . Tôi đoán nó có vẻ khá khó khăn vì cú pháp bất thường của ES6 GENERATORS như ‘yield’ and , tôi xuất chức năng này rootSaga, trong đó tôi gọi hàm actionWatcher.

function* actionWatcher() { yield takeLatest('GET_NEWS', fetchNews) }

Nói một cách đơn giản, nó giống như tôi nói với SAGA hãy chờ đợi hành động ‘GET_NEWS, để được gửi đi. Và những ‘GET_NEWS, kh bị từ chối để gọi hàm fetchNews. Bên trong hàm fetchNews thực hiện lệnh gọi không đồng bộ tới API và khi yêu cầu đến hành động tiếp theo { type: “NEWS_RECEIVED”, json: json.articles, } được gửi đi. Như bạn có thể thấy, tôi không cần phải viết hành động, “NEWS_RECEIVED” in actions/index.js vì nó được mô tả đầy đủ ở đây.

Đến bây giờ, hãy để reducer biết cách đối phó với hành động này “NEWS_RECEIVED”.

Nội dung trong file reducers/index.js

Cuối cùng nội dung của reducer. Khi phản hồi từ lệnh gọi API đã nhận được trạng thái Redux sẽ có tin tức thuộc tính chứa json của một tin tức.

Nội dung trong file NewsItem.js

Nội dung file Loading.js

Và cuối cùng để xem kết chúng ta chạy lệnh sau:

Bạn có thể xem demo tại link sau:

https://sagatutorialapp.netlify.com/

Bạn có thể xem source tham khảo tại reposetory sau:

https://medium.com/@geekrodion/redux-saga-create-react-app-b6484f704d68 https://medium.com/@lavitr01051977/make-your-first-call-to-api-using-redux-saga-15aa995df5b6

Làm Thế Nào Để Tập Trung Cao Độ Khi Làm Việc?

Nguyên nhân của sự mất tập trung

Bạn đang vào internet mục đích chỉ để kiếm tài liệu, tiện tay bạn mở  Facebook, Youtube, các trang chế ảnh, đọc báo…Khiến bạn không thể nào tập trung được quá 30 phút .

Tất cả những nguyên nhân ấy dẫn đến kết quả bạn không thể tập trung vào công việc bạn cần phải làm, dẫn đến không hoàn thành được công việc, cứ như vậy theo thời gian bạn sẽ hình thành thói quen, nó ăn sâu vào tiềm thức, khiến cho các mục tiêu nhỏ chưa được chinh phục và dẫn tới thiếu động lực để đạt mục tiêu lớn.

Làm thế nào để tập trung cao độ khi làm việc?

Những người có sự tập trung có thể làm công việc của họ tốt hơn và đạt được thành công nhanh hơn. Nietzsche nói: Những người có khả năng tập trung có thể tránh được mọi sự bối rối. Chúng tôi không nói nhiều về lợi ích của việc tập trung. Có lẽ mọi người đọc bài viết này không hiểu về khả năng tập trung tốt. Nhiều người vẫn hi vọng học được một số kỹ năng nhất định để cải thiện hiệu quả khả năng tập trung, cải thiện hiệu quả học tập và làm việc.

Ai cũng đã nhiều lần trải qua sự tập trung cao độ, đó là những lúc deadline sát hạn chót, bài tập phải nộp, công việc phải hoàn thành, khiến cho bạn phải dồn hết sức, tập trung cao độ để hoàn thành, tuy nhiên, do thời gian hạn hẹp, lại không được chuẩn bị kỹ lưỡng nên chất lượng thường không cao, lúc ấy nếu bạn có thể tập trung cao độ sớm hơn, thời gian nhiều hơn có thể hoàn thành được rất nhiều công việc và tất nhiên có sự chuẩn bị chu đáo, chất lượng sẽ tốt hơn. 

Tại sao có người có thể dành thời gian dài cho công việc và học tập mà chúng ta lại luôn mất tập trung một cách vô thức.

Có phải khả năng tập trung của chúng ta vốn đã tệ hơn những người khác? câu trả lời là KHÔNG! Sự tập trung không phải là bẩm sinh, cũng giống như sự kiên trì, sự tập trung có thể đạt được thông qua quá trình rèn luyện.

Học cách từ bỏ

Bước đầu tiên để cải thiện hiệu quả sự tập trung là học cách từ bỏ và tập trung vào hiện tại.

Lựa chọn nghĩa là từ bỏ. Ưu tiên đầu tiên để cải thiện sự tập trung là học cách từ bỏ và học cách nói không. 

Chúng ta luôn nói rằng chúng ta không thể bình tĩnh, và thường xuyên mất tập trung, trong khi giải quyết công việc hiện tại không hiệu quả, chúng ta lo lắng về những dự án chưa hoàn thành, kết quả là nhiệm vụ hiện tại chưa hoàn thành, công việc tương lai không được thực hiện, điều này chỉ làm tăng thêm lo lắng.

TV, máy tính, radio…những thứ làm bạn xao nhãng sự tập trung, thì hãy tắt tất cả những thứ khi bạn đang làm việc, học tập. Riêng với điện thoại, bạn có thể để chuông và cất vào tủ, tránh xa bàn làm việc nhưng vẫn trong vòng bạn có thể nghe chuông được, phòng khi có những cuộc gọi gấp.

Hãy mạnh dạn khóa những trang làm bạn tiêu tốn thời gian là một cách rất hiệu quả. Tìm ra những trang khiến bạn mất nhiều thời gian nhất như Facebook, youtube, instagram. Một khi không thể vào được các website thân thuộc này, bạn gần như sẽ tập trung ngay lập tức.

Học quản lý năng lượng

Người ta nói rằng quản lý năng lượng quan trọng hơn quản lý thời gian, trên thực tế, cả hai bổ sung cho nhau, và thực hiện đúng công việc vào đúng thời điểm là yếu tố cốt lõi để nâng cao hiệu quả.

Mọi người đều chủ trương dậy sớm, nhưng nhiều người dậy sớm lại không thực sự dành tâm sức cho công việc và học tập. Vì vậy, đừng vội “tạo ra” thời gian, trước hết hãy “nới rộng” bề rộng của thời gian và nâng cao khả năng sử dụng thời gian là chìa khóa.

Trước tiên, hãy nghĩ xem bạn đã sử dụng nó một cách hiệu quả trong những giờ sau giờ làm việc chưa. Hãy chú ý đến nơi tập trung những khoảng thời gian khiến bạn đắm chìm trong mỗi ngày, và sắp xếp những nhiệm vụ quan trọng và thách thức nhất ở đây trong tương lai.

Rèn luyện não cho sự tập trung

Sự tập trung cũng giống như cơ bắp, nếu rèn luyện đúng đắn, sức mạnh và kích thước cũng sẽ tăng lên. Bạn có thể rèn luyện sự tập trung cho não bằng cách tăng dần thời gian tập trung của mình lên: 30 phút, 1 tiếng, 1.5 tiếng…Bạn hãy ghi chép lại sự tiến bộ của mình.

Thiền định là một phương pháp có thể giúp bạn tăng cường tập trung một cách rất đáng kể , khoa học đã chứng minh! Không những vậy, nó còn giúp bạn thư giãn, giảm stress, hạn chế được một số bệnh …chỉ với 20 – 30 phút thiền mỗi ngày chất lượng đời sống tinh thần của bạn sẽ được cải thiện. Mỗi khi bạn thấy mình mất tập trung hãy thiền 5 phút là đủ, cảm giác tập trung sẽ quay trở lại. Dành cho những bạn mới bắt đầu:

Tìm thời điểm và một nơi yên tĩnh

Ngồi ở tư thế thoải mái nhất. (không nhất thiết phải ngồi xếp bằng)

Nhắm mắt hít thở đều đặn, sâu và chậm hơn bình thường. (Bạn có thể đếm chậm rãi 1, 2…100 1,2…100…)

Tập trung vào tiếng đếm, quan sát hơi thở, thư giãn toàn thân.

Nếu tạp niệm tới hãy thầm nhủ “ Biết rồi, biết rồi đi đi… “

Không nên hẹn giờ mà để cơ thể tự biết khi nào cần dừng lại, không nóng vội.

Kỹ thuật Pomodoro là một trong những phương pháp rất tốt giúp bạn thực hành và rèn luyện khả năng tập trung của mình. Kỹ thuật này thực ra rất đơn giản, bạn có thể hiểu nó như sau:

Trước khi làm bất cứ công việc gì, bạn hãy cài đặt thời gian cho 1 lần tập trung để làm việc là 25 phút. Sau đó, hãy dồn toàn tâm toàn ý để làm việc, không để bất cứ yếu tố nào quấy rầy. Sau khi kết thúc nhiệm vụ, hãy tận hưởng 5 phút nghỉ ngơi.

Cứ thực hiện liên tục như vậy thêm 3 lượt nữa (lúc này bạn đã có 4 lần tập trung cao độ). Sau khi kết thúc 4 lượt, nếu tiếp tục với lần thứ 5, hãy nghỉ ngơi 20 phút cho một khoảng thời gian tập trung.

Tuy nhiên hãy nhớ là, nếu như bạn nghỉ giữa chừng chỉ vì muốn đi tìm thứ gì đó để ăn hoặc tiếp chuyện với đồng nghiệp thì coi như lượt cài đặt này đã fail, bạn bắt buộc phải quay lại thực hiện từ đầu.

Nếu bạn cảm thấy cài đặt khoảng thời gian tập trung này có vẻ hơi quá sức, bạn có thể thử với mức thấp hơn, 20 phút hay 15 phút cho mỗi lượt. Miễn là bạn nghiêm túc thực hiện, bạn sẽ sớm đạt được sự tập trung cao độ.

Chia nhỏ nhiệm vụ

Bắt đầu một thứ gì đó to lớn, khó khăn thường khiến chúng ta choáng ngợp và dễ chán nản. Vì thế, thay vì gồng gánh một tảng đá to trên lưng, bạn sẽ không đi được bao xa, hãy chia nhỏ chúng thành những viên đá nhỏ và mang theo từng phần. Với công việc cũng tương tự, hãy tách rời từng nhiệm vụ để thực hiện dễ dàng hơn, nó sẽ giúp bạn theo đuổi sự tập trung lâu dài hơn. 

Ngoài ra đừng quên rằng để tập trung hơn bạn chỉ nên làm 1 việc tại 1 thời điểm, bạn cần quản lý thời gian và công việc theo thứ tự ưu tiên.

Đọc sách nhiều hơn

Hãy chọn một cuốn sách hay, một cuốn sách làm bạn hứng thú đọc, bạn có thể tập trung đọc trong nhiều giờ. Nếu làm thường xuyên, sự tập trung này sẽ đi dần vào tiềm thức, giúp bạn dễ tập trung để làm việc hơn. Bạn hãy đọc những cuốn sách có ích, khi đó não bộ của bạn đang tập trung để tiếp thu kiến thức khác với đọc truyện tranh, đơn giản chỉ là giải trí, không những thế truyện tranh cũng là tác nhân khiến bạn tiêu tốn thời gian và mất tập trung vào công việc. Hay ít nhất bạn nên đọc những cuốn tiểu thuyết hay buộc bạn phải tưởng tượng. Hãy để truyện tranh cho những đứa trẻ , bạn đã lớn rồi mà!

Thiền định

Nhiều người cho rằng thiền định là thứ gì đó quá cao siêu và phức tạp, nhưng thực ra không phải vậy. Yếu tố cốt lõi trong kĩ thuật thiền là tập trung vào hơi thở.

Hãy thử tìm kiếm một không gian yên tĩnh, ngồi khoanh chân, nhắm mắt và bắt đầu hít thở sâu, loại bỏ mọi sự xao nhãng và chỉ tập trung vào hơi thở của chính mình. Khi bạn thấy mất tập trung, đừng đổ lỗi cho bản thân, chỉ cần kéo sự chú ý của bạn trở lại với hơi thở. Có được sự bình an bên trong thông qua thực hành này, nó sẽ giúp cải thiện sự tập trung của bạn.

Xây dựng nghi lễ và khẩu hiệu riêng của bản thân

Trước khi bắt đầu làm việc hoặc học tập, đừng vội hành động ngay mà hãy bắt đầu bằng một tách cà phê hoặc hít thở sâu mười lần. Đừng bao giờ đánh giá thấp sức mạnh của ngôn ngữ. Bạn hãy tự truyền năng lượng tích cực cho bản thân bằng những câu nói tích cực như là “tôi có thể làm được”, “hãy hoàn thành nào”. Khi bạn tin rằng mình có thể làm được những thứ bạn nghĩ sẽ trở thành hiện thực.

Sử dụng Modafinil – thuốc tăng cường sự tập trung

Khi công việc của bạn sắp đến thời gian phải hoàn thành thì mọi giây phút lúc này đều trở nên vô cùng quý giá. Nếu bạn không muốn rơi vào tình trạng vừa làm việc vừa làm việc riêng như vào facebook hay lướt web như trước đó nữa thì hãy sử dụng một viên modafinil bởi viên thuốc nhỏ bé này sẽ giúp bạn tận dụng được tối đa thời gian cho công việc. Modafinil có khả năng tăng cường sự tập trung của trí não vào một công việc nhất định và khiến cho bạn không thể rời mắt khỏi công việc khi mà bạn chưa hoàn thành.

Tác dụng mà nhiều người sử dụng modafinil nhận thấy là giúp họ tăng hiệu suất làm việc cũng như học tập, làm họ cảm thấy tập trung và hứng thú với công việc, với bài học hơn mặc dù trước đó họ coi đây là một công việc nhàm chán, hay một môn học nhàm chán.

Bạn có thể dùng 200 mg modafinil khi muốn tập trung vào một công việc nào đấy. Sau khi dùng modafinil khoảng 1 giờ bạn sẽ cảm thấy như muốn bay ngay vào bàn làm việc, bạn sẽ không thấy mình thỉnh thoảng lại “ lướt facebook” hay lên mạng đọc tin tức nữa để tỉnh táo lại nữa mà chỉ dừng lại khi cảm thấy công việc đã hoàn thành.

Email

Đặt hàng Modafinil – Modalert 200mg

Vận chuyển toàn quốc chỉ với 30.000 đ. MIỄN PHÍ VẬN CHUYỂN với GÓI DÙNG THỬ

Làm Việc Nhóm Và Làm Việc Tổ

Làm việc tổ là cái gì đó nhiều người nói tới nhưng rất khó đạt tới trong dự án phần mềm. Lí do mà mọi người không làm việc tốt trong tổ vì khác biệt trong ý kiến và mục đích. Tôi đã thấy nhiều thành viên tổ đấu tranh chống lại nhau vì họ bảo vệ ý kiến riêng của họ hay tin rằng họ là đúng và mọi người khác là sai.

Mọi người sẽ làm việc cùng nhau như một NHÓM nếu có những vai trò, trách nhiệm và thẩm quyền được xác định rõ. Chẳng hạn trong dự án phần mềm bạn có các vai trò như người quản lí dự án, người lãnh đạo kĩ thuật, người thiết kế phần mềm, người lập trình, người kiểm thử, chuyên viên đảm bảo chất lượng v.v. Chừng nào mọi người còn tuân theo các qui tắc, hiểu vai trò và trách nhiệm của họ thì nhóm làm việc được. Điều đó nghĩa là mọi người đang làm điều được mong đợi về từng vai trò đó, nhưng không cái gì vượt ra ngoài. Cách tiếp cận này có tác dụng tốt trong nhà máy, trong dây chuyền lắp ráp, trong công việc thủ công khi qui trình được xác định rõ và thấy được cao. Trong phần mềm thỉnh thoảng nó không làm việc tốt. Lí do là vai trò và trách nhiệm tạo ra “biên giới nhân tạo” giữa các thành viên nhóm. Chẳng hạn, người lập trình viết mã và “quẳng” sang cho người kiểm thử kiểm thử chúng. Cách nhìn của họ là “chúng tôi hoàn thành việc của mình như được yêu cầu và để người khác làm việc của họ.” Cách tiếp cận LÀM VIỆC NHÓM này cho phép mọi người duy trì cách nhìn RIÊNG của họ, vị trí RIÊNG của họ mà không có nhiều tương tác. Nó giúp tránh các xung đột giữa các thành viên và cho phép họ ở lại BÊN TRONG kĩ năng giới hạn riêng của họ mà không cần làm cái gì bên ngoài vai trò của họ.

Mọi người sẽ làm việc với nhau như một TỔ khi họ phụ thuộc vào kĩ năng và tri thức của nhau để tạo ra cái gì đó là ngoại lệ và bên ngoài năng lực cá nhân của họ. Điều này bao gồm nhiều học tập, hiểu biết, thương lượng, thách thức và tin cậy vào sức mạnh của mọi người lẫn nhau. Trong loại CÔNG VIỆC TỔ này, mọi người có thể thu được ích lợi lớn. Chẳng hạn: Người lập trình tin cậy vào đảm bảo chất lượng kiểm điểm công việc của họ để xác định vấn đề để cho họ có thể sửa chữa chúng sớm hơn làm nảy sinh sản phẩm chất lượng cao. Không có đào tạo đúng, không có trao đổi đúng, không có quản lí đúng, làm việc tổ sẽ KHÔNG xảy ra. Làm việc tổ là khó bởi vì các thành viên tổ phải giải thích cho người khác điều họ làm và tại sao. Đồng thời, họ phải sẵn lòng nghe các gợi ý và sẵn lòng thay đổi cách họ làm mọi thứ. Điều đó nghĩa là mọi thành viên tổ đều phải có mối quan tâm lớn tới người khác và cách họ làm việc của họ bằng tâm trí cởi mở, thái độ cởi mở, để cho họ có thể cải tiến.

Lúc bắt đầu dự án, các thành viên tổ không biết lẫn nhau. Họ tới từ các nền tảng đa dạng, với các kĩ năng và kinh nghiệm khác nhau và họ cũng có những thiên kiến nào đó. Họ cần thời gian để hiểu lẫn nhau, xây dựng mối quan hệ và cuối cùng tin cậy lẫn nhau. Đó là lí do tại sao đào tạo làm việc tổ vào lúc bắt đầu dự án là quan trọng thế. Tôi biết nhiều người quản lí thường bỏ qua việc đào tạo này để tiết kiệm tiền. Đó là sai lầm lớn vì họ sẽ phải giải quyết với xung đột cá nhân, vấn đề và tranh đấu giữa các thành viên trong dự án về sau. Làm việc tổ đặc biệt khó cho những người đã từng làm việc trong LÀM VIỆC NHÓM một thời gian lâu, bởi vì có xu hướng quay trở lại cách làm cũ với mọi sự. Chẳng hạn, người lãnh đạo kĩ thuật có xu hướng nói với những người khác điều phải làm thay vì lắng nghe họ. Người lập trình không quan tâm tới cách người kiểm thử kiểm công việc của họ nhưng sẽ nổi giận khi người kiểm thử tìm ra nhiều lỗi.

Khi nhiều người hơn muốn dùng cách tiếp cận Agile, lời báo trước của tôi là cách tiếp cận này yêu cầu mọi người từ những kinh nghiệp khác nhau làm việc cùng nhau như một TỔ. Bằng việc tạo ra tổ “tự tổ chức”, mọi người phải làm việc cùng nhau bởi vì những rào chắn cá nhân như vai trò, trách nhiệm mất đi. Không có đào tạo cách làm việc tổ, cách tiếp cận này sẽ THẤT BẠI. Vì phải mất thời gian cho tổ làm việc cùng nhau, người quản lí cấp cao phải hội tụ vào việc có đào tạo cho mọi dự án Agile. Đào tạo kĩ thuật cho phương pháp Agile là KHÔNG đủ. Đào tạo LÀM VIỆC THEO TỔ phải là ưu tiên thứ nhất nếu bạn muốn thành công.

Các thực hành Agile như lập kế hoạch đưa ra tăng dần, lập kế hoạch chặng nước rút, và họp hàng ngày cung cấp thời gian cho tổ làm việc cùng nhau và xây dựng quan hệ lẫn nhau. Họp hàng ngày giúp các thành viên tổ nhận diện các cơ hội tiềm năng mà họ có thể tương tác lẫn nhau. Chặng nước rút và lập kế hoạch đưa ra cung cấp nhiều cơ hội có cấu trúc cho công việc tổ. Qua “hoạt động nội quan”, các thành viên tổ có thể kiểm điểm về công việc của họ và cung cấp phản hồi cho nhau cho nên cùng nhau tổ có thể liên tục cải tiến. Tổ đánh giá kết quả từ sản phẩm của chặng nước rút để xác định liệu làm việc theo tổ thêm có thể tạo ra kết quả tốt hơn không. Mọi chặng nước rút sẽ cho tổ cảm giác về hoàn thành và động viên tổ về giá trị của làm việc theo tổ. Điều đó bao giờ cũng là điều kì diệu khi người phát triển, người chủ sản phẩm, thầy scrum, người kiểm thử cùng nhau xây dựng để tạo ra cái gì đó có chất lượng cao, đúng thời gian và trong chi phí. Đó là lí do tại sao đào tạo LÀM VIỆC THEO TỔ có lẽ là quan trọng nhất trong phần mềm vì nó xác định thành công hay thất bại của dự án.

–English version–

Groupwork and Teamwork

Teamwork is something many people talk about but very difficult to achieve in software project. The reason that people do not work well in team because of differences in opinions and goals. I have seen many team members fighting against each other as they protect their own opinions or believe that they are right and everybody else is wrong.

People will work together as a GROUP if there are well defined roles, responsibilities and authority. For example in software project you have roles like project manager, technical leaders, software designer, programmers, testers, quality assurance specialist etc. As long as people follow the rules, understand their roles and responsibilities than the group will work. It means people are doing what is expected of each of the roles, but nothing beyond. This approach work well in the factory, in assembly line, in manual works when the process is well defined and highly visible. In software sometime it does not work well. The reason is roles and responsibilities create an “artificial boundary” between group members. For example, programmers write code and “throw over” to testers to test them. Their view is “we complete our jobs as required and let others do their jobs”. This GROUPWORK approach allows people to maintain their OWN view, their OWN place without much interacting. It helps avoid conflicts among members and allow them to stay WITHIN their own limiting skills without the need to do anything beyond their roles.

People will work together as a TEAM when they depend on each other’s skills and knowledge to create something that is exceptional and beyond their individual abilities. This involves a lot of learning, understanding, negotiating, challenging and trusting on each other’s strengths. In this kind of TEAMWORK, everybody can gain significant benefits. For example: Programmers trust Quality assurance to review their works to determine problems so they can fix them earlier resulting in high quality products. Without proper training, without proper communication, without proper managing, teamwork will NOT happen. Teamwork is difficult because team members must explain to others what they do and why. At the same time, they must be willing listen to suggestions and be willing to change the way they do things. That means every team member must have significant interest in others and how they do their work with an open mind, open attitude, so they can improve.

At the beginning of project, team members do not know each other. They come from various backgrounds, with different skills and experiences and they also have certain biases. They need time to understand each other, build relationship and eventually trust each others. That is why teamwork training at the beginning of the project is so important. I know many managers often skip this training to save money. It is a big mistake because they will have to deal with personal conflicts, issues and fighting among members in the project later. Teamwork is especially difficult for people who have been working in GROUPWORK for a long time, because there is a tendency to go back to the old way of doing things. For example, a technical leader has tendency to tell others what to do rather than listen to them. A programmer does not care how tester check his work but will get upset when tester find more defects.

As more people want to use the Agile approach. My caution is this approach requires people from different experiences to work together as a TEAM. By creating “self-organized” team, everybody must work together because personal barriers such as roles, responsibilities go away. Without teamwork training, this approach will FAIL. Since it takes time for the team to work together, senior manager must focus on having trainings for every Agile project. Technical training for Agile method is NOT enough. TEAMWORK training must be the first priority if you want to succeed.

Agile practices such as incremental release planning, sprint planning, and daily meetings provide the time for teams to work together and build relationships with each other. Daily meetings help team members to identify potential opportunities that they can interact with each others. Sprint and release planning provide more structured opportunities for teamwork. Through “retrospectives activity”, team members can review on their works and provide feedback to each other so together the team can continue to improve. The team evaluate results from the sprint product to determine if more teamwork could produce better results. Every sprint will gives the team a sense of accomplishment and motivating the team on the value of teamwork. It is always a wonderful thing when developers, product owners, scrum masters, testers build off each other to create something of high quality, on time and within costs. That is why TEAMWORK training is probably the most important in software as it determines project success or failure.

Cập nhật thông tin chi tiết về Redux Saga Phần Iii (Tips Khi Làm Việc) trên website Channuoithuy.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!