Tải bản đầy đủ (.pdf) (25 trang)

Báo cáo thực tập lập trình ứng dụng mobile với react native tại Công ty KMS-Technology

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.4 MB, 25 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN

-----o0o----

BÁO CÁO THỰC TẬP
LẬP TRÌNH ỨNG DỤNG MOBILE VỚI
REACT-NATIVE

Công ty thực tập

: KMS-Technology

Người phụ trách

: Cao Thanh Long
Phan Trần Bảo Long

Thực tập sinh

: Lục Trường Phong

TP. HCM, ngày 06 tháng 06 năm 2019


LỜI MỞ ĐẦU

Với tốc độ phát triển vô cùng mạnh mẽ, các ứng dụng di động là nhân tố kích thích
sự phát triển của cơng nghệ thơng tin thế giới, cả về phần cứng và phần mềm.
Nhắc đến lập trình ứng dụng là nhắc đến những developer như bản thân em, những con
người ngày ngồi cạnh máy tính để viết từng dòng code, tối ưu từng tập dữ liệu, thiết kế hàng loạt các


tính năng với mục đích đem lại tiện lợi cho người dùng và đẩy mạnh sự phát triển của phần mềm. Thế
nhưng, quá trình để xây dựng một phần mềm thực sự là như thế nào? Từ lúc triển khai ý tưởng của một
phần mềm, cho đến bước thiết kế UX, UI, cho đến lúc đặt tay vào viết dòng code đầu tiên, rồi những
cuộc họp hàng ngày để giải quyết vấn đề của mỗi thành viên trong team, những lúc cãi nhau về một
tính năng của ứng dụng,.... Nó thực sự là một nghệ thuật trong lĩnh vực công nghệ thông tin chứ không
đơn giản như chúng ta đã từng nghĩ.

Trong thời gian thực tập tại KMS, em đã được tiếp cận và tham gia trực tiếp vàoc ác dự án thực tế,
được đóng góp vào những tính năng của dự án mà mình tham gia vể cả mặt kĩ thuật lẫn ý tưởng , đó là
những trải nghiệm hết sức thú vị và mới mẻ đối với những sinh viên năm cuối như em.
.


LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty KMS-Technology đã tạo điều kiện cho em có cơ
hội được thực tập tại công ty.

Trong kỳ thực tập vừa qua nhờ sự giúp đỡ tận tình của mọi người mà em đã có cơ hội được
tiếp cận với tồn bộ quá trình xây dựng, phát triển một dự án. Tìm hiểu được quy trình và vận dụng
được khả năng của mình vào một ứng dụng di dộng thực tế với React Native và NodeJS.

Em xin gửi lời cảm ơn đến anh Long Cao và anh Long Phan và mọi người trong team Grove cũng như
đã giúp đỡ và hỗ trợ em trong quá trình thực tập, đưa ra nhiều lời khun hữu ích và hướng dẫn tận tình
trong q trình làm việc

Ngoài ra, em xin cảm ơn ThS. Phạm Thi Vương và các chị trong team HR đã hỗ trợ em
rất nhiều trong quá trình thực tập.
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều
kiện em làm bài báo cáo này.


Lục Trường Phong
HCM, ngày 6 tháng 6 năm 2019


NHẬN XÉT CỦA KHOA


Mục lục
GIỚI THIỆU VỀ CÔNG TY

I.

NỘI DUNG NGHIÊN CỨU & TÌM HIỂU

II.
2.1.

Tìm hiểu cơng ty và thiết lập mơi trường làm việc

1
2
2

2.2.1.

Mobx

2

2.2.2.


Plugin Prettier và Eslint

3

2.2.3.

Plugin FlowType

4

III.

CHI TIẾT PROJECT GROVE-ONE

5

3.1.

Giới thiệu về dự án

5

3.2.

Quá trình làm việc

8

3.3.


Kết quả đạt được

11

IV.

CHI TIẾT PROJECT SPRYNKL

11

4.1

Giới thiệu về dự án

11

4.2

Quá trình làm việc

15

4.3

Kết quả đạt được

19

V.


TỔNG KẾT – ĐÁNH GIÁ

19


I.

GIỚI THIỆU VỀ CƠNG TY

KMS Technology là một cơng ty có cung cấp phần mềm và dịch vụ cho Mỹ có các chi nhánh lớn
đặt tại Việt Nam. Cơng ty làm việc chính với các cơng ty phần mềm khác để đẩy nhanh quá trình
phát triển và cung cấp các giải pháp phần mềm cũng như outsource cho đối tác nước ngồi một cách
đơn giản và nhanh chóng.
KMS là chữ viết tắt của Khai Minh Solutions với logo có hình trống đồng màu xanh da trời. Công
ty được thành lập từ năm 2009 với co-founder CEO là Vu Lam và co-founder Josh Lieberman. Từ đó
đến nay, cơng ty đã cung cấp thành công hàng trăm sản phẩm lớn nhỏ khác nhau cho các doanh nghiệp
để từ đó thực hiện các quy chuẩn xây dựng phần mềm một cách chuyên nghiệp và nhanh chóng hơn.
Hiện cơng ty đang có bốn văn phòng ở VN và hai văn phòng ở US, với khoảng 1400 nhân viên.

Văn phòng UpStar nơi em thực tập

1


II. NỘI DUNG NGHIÊN CỨU & TÌM HIỂU
Tìm hiểu cơng ty và thiết lập môi trường làm việc

2.1.


Thời gian: 2 ngày
• Nội dung:
-

Tham gia buổi giới thiệu về cơng ty, cách tổ chức của cơng ty, q trình thành lập và phát triển
của công ty do bên HR tổ chức

-

Phổ biến quy định làm việc tại công ty

-

Gặp mặt giới thiệu, làm quen và đi ăn trưa với các bạn trong team Dev và các team khác

-

Setup enviroment và cài đặt các phần mềm liên quan cho công việc như Android Studio , Xcode,
Visual code,..

-

Tìm hiểu cách sử dụng JIRA , Zeplin

2.2.

Nghiên cứu các công nghệ liên quan
2.2.1.

Mobx


Mobx là một thư viện hổ trợ việc quản lý State của React ( giống như Context API hay Redux) đơn
giản và dễ dàng mở rộng nhờ áp dụng TFRP ( functional reactive programming )

2


Việc sử dụng Mobx sẽ làm cho app React Native trở về giống mơ hình MVVM , mọi logic được xử lý
ở ViewModel và View chỉ phải đảm nhận việc render.
Cả React và MobX đều cung cấp một giải pháp tối ưu và duy nhất cho các vấn đề phổ biến trong phát
triển ứng dụng. React cung cấp các cơ chế để kết xuất tối ưu UI bằng cách sử dụng DOM ảo giúp giảm
việc thay đổi DOM không cần thiết . MobX cung cấp các cơ chế để đồng bộ hóa và tối ưu State của
React components nhờ việc theo dõi và cập nhật liên tục State. Đơn giản là trong Mobx , state là
mutable , bạn có thể thay đổi nó trực tiếp mà khơng cần thơng qua setState().

-

State của component sẽ được lưu trữ ở MobxClass ( tương tư viewmodel) dưới dạng các
observable variable, và các function logic cũng được viết ở đây.

-

Component khi cần sử dụng thì phải inject class vào với decorate @observer

-

Nhiều component có thể sử dụng chung một

Tài liệu tham khảo : />
2.2.2.


Plugin Prettier và Eslint

Eslint
ESLint là một chương trình mã nguồn mở, theo thuật ngữ tiếng Anh là JavaScript linting utility do
Nicholas C. Zakas viết ra vào tháng Sáu 2013. Code linting là một dạng phân tích tĩnh (static analysis)
thường được sử dụng để tìm những patterns hoặc code có vấn đề. Việc đánh giá code có vấn đề hay
khơng sẽ căn cứ vào những quy chuẩn về cách viết code đã thống nhất từ trước (trong nội bộ nhóm, nội
bộ cơng ty, hay ngành nhỏ). Hầu hết các ngôn ngữ lập trình đều có các cơng cụ code linters riêng, và
trình biên dịch của ngơn ngữ đó thường đi kèm việc linting ngay trong quá trình biên dịch.
Trong lĩnh vực lập trình máy tính, lint là một ứng dụng Unix giúp cảnh báo các vấn đề khi viết code
của ngôn cữ C. Nói rộng ra, lint hoặc linter là cơng cụ giúp phát hiện và cảnh báo các sai sót khi viết
ngơn ngữ lập trình, bao gồm cả các vấn đề liên quan đến định dạng (như dấu chấm phẩy, xuống dịng,
lùi vào đầu dịng, v.v.). Các cơng cụ này thường thực hiện phép phân tích tĩnh (static analysis) các
đoạn code.
Lợi ích :


Giúp ngăn ngữ một vài loại bug, bao gồm cả những loại bug đem loại rất nhiều phiền hà cho q
trình gỡ lỗi, khiến chương trình khơng chạy được.



Tiết kiệm thời gian của lập trình viên.



Giúp việc viết code ngon lành hơn.
3





Dễ dàng sử dụng.

Việc "linkting" code JavaScript còn giúp bạn tránh được các lỗ hổng bảo mật thông dụng (như XSS),
vấn đề liên quan đến "viết code sao cho dễ đọc dễ nhìn", v.v.
Prettier
Prettier là một cơng cụ giúp format code của bạn cho đẹp hơn. Đẹp ở đây hoàn tồn mang quan điểm chủ quan
của tác giả chương trình này (thế nên nó mới được gọi là "an opinionated code formatter"). Chương trình này sẽ
yêu cầu code của bạn phải theo một format nhất định và thống nhất, thực hiện qua q trình "parsing" và "reprinting" tồn bộ code của bạn dựa trên những quy tắc nào đó, ví dụ ngắt dòng, thêm/ bớt ngoặc tròn ngoặc
nhọn khi cần.
Lợi ích
1. Xây dựng và cưỡng chế việc sử dụng 1 định dạng code chung
2. Giúp đỡ những người mới
3. Giúp tập trung vào việc viết code thay vì mất thời gian vào ngồi căn chỉnh định dạng code
4. Dễ dàng được cộng đồng lập trình chấp nhận
5. Format lại tồn bộ source code hiện tại
6. Thể hiện đẳng cấp theo kịp thời đại

Tài liệu tham khảo : /> />
2.2.3.

Plugin FlowType

Một cách ngắn gọn nhất, ngơn ngữ statically-typed thì type của biến có thể xác
định lúc compile (trước khi chạy), ngơn ngữ dynamically-typed thì chỉ biết được
type của biến lúc run time
Như vậy với ngôn ngữ dạng statically-typed, lỗi sẽ được báo ngay khi build hoặc
trên editor khi chúng ta sử dụng type không đúng. Nhưng với những ngôn ngữ kiểu

dynamically-typed như Javascript nó sẽ khác chút. Những trường hợp quên
mất kiểu của biến như vậy rất dễ gặp trong lúc code. Việc sử dụng static type check
sẽ giúp phát hiện lỗi sớm hơn, mà phát hiện lỗi sớm hơn thì sẽ tốt hơn, right?
Flow là thư viện của Facebook, hỗ trợ tốt nhất cho React, đứng trên góc độ của
người làm sell, nếu nói chúng ta sử dụng Flow từ Facebook sẽ ngon hơn, Typescript
là superset của javascript, việc dùng Typescript cũng thay đổi khá nhiều thứ khác
4


trong project, mình cảm thấy nó tiêu tốn khá nhiều thời gian hơn trong lúc
dev, PropTypes đã ko còn được quan tâm nhiều như trước nữa từ sau khi có Flow

III. CHI TIẾT PROJECT GROVE-ONE
3.1. Giới thiệu về dự án
Grove-One là dự án mobile app thuộc nhóm dự án Grove bao gồm Grove-Enterpise ( WebApp ),
Grove-Analytics và Grove-One.

Grove là nền tảng HCM ( Human Capital Management ) mới và tiện ích để giúp các công ty quản
lý nhân viên của mình, nó khơng chỉ hỗ trợ bên HR trong hoạt động hàng ngày mà còn cải thiện trải
nghiệm của nhân viên và tăng sự gắn kết của

Mục tiêu hướng tới:
-

UX / UI ấn tượng, dễ sử dụng

-

Hiệu suất và khả năng mở rộng cao


-

Tính năng đa dạng với khả năng linh hoạt và thích ứng cho nhiều mơ hình HRM của các công
ty
5


-

Nền tảng mở HCM (hỗ trợ tích hợp với các hệ thống khác)

-

Bảo mật và quyền riêng tư

-

Khả năng phân tích kinh doanh.

Nếu Grove-Enterpise dành cho bộ phận HR cũng như bên quản lý của cơng ty thì Grove-One là ứng
dụng dành cho nhân viên để hỗ trợ họ hằng ngày với các tính năng như TimeSheet ( lịch biểu ), Leave
Management ( quản lý ngày phép ) , Directory ( Danh bạ điện thoại ) , …

6


7


3.2. Quá trình làm việc

7/1/2019 – 15/2/2019:
8


-

Training về React Native và cái công nghệ liên quan.

-

Clone Login và Emoji của app Facebook

-

Clone swipe behavior của Tinder

Issue Type

Key

Summary

Assignee Status

Untestable

GO- Login components

Phong


Task

32

Luc

Testable Sub- GO- GO-20 implement UI

Phong

task

Luc

49

Testable Sub- GO- GO-21 implement UI

Phong

task

50

Luc

Improvement

GO- [IMP][Login] Login Step2


Phong

65

Luc

GO- [Login] Login - Step 1

Phong

20

Luc

GO- [Login] Login - Step 2

Phong

21

Luc

Story

Story

Bug

GO- The error message incorrect with Phong
83


Bug

message definition

144

Closed 28/Feb/19
10:13 PM
Closed 01/Mar/19
10:07 AM
Closed 01/Mar/19
10:07 AM
Done

Phong

employee displays incorrectly in
detail employee

9

Luc

08/Mar/19
10:30 AM

Done

08/Mar/19

11:37 AM

Done

14/Mar/19
11:26 AM

Closed 14/Mar/19

Luc

GO- [Directory] The name of

Updated

1:42 PM
Done

22/Mar/19
11:07 AM


Bug

GO- [Directory] The instant
143

Bug

Improvement


Story

Improvement

Story

Luc

GO- [IMP][Login] Login Step 2

Phong

116

Luc

GO- [Directory] View Details of

Phong

Story

Employee

Done

Phong

122


Luc

GO- [Directory] Call / Message /

Phong

Email in Directory

Done

contact in Android

Phong

Done

Phong

224

Luc

GO- [Directory] Add To Contacts

Phong

80

Luc


10

22/Mar/19
1:59 PM

Done

28/Mar/19
5:50 PM

Done

28/Mar/19
5:52 PM

Done

03/Apr/19
10:27 AM

Closed 10/Apr/19

Luc

GO- Add to contact too long in IOS

22/Mar/19
11:30 AM


Luc

GO- Loss information when adding

22/Mar/19
11:16 AM

Luc

GO- [IMP][Directory] Action Item

22/Mar/19
11:16 AM

Luc

74

228
Bug

Phong

Phong

69
Bug

slack in instant message on
android


GO- [IMP][Login] Login Step 1

68

Done

Luc

GO- [Directory] Cannot redirect to
145

Story

Phong

messenger fields do not work

12:01 PM
Closed 11/Apr/19
3:35 PM
Done

11/Apr/19
3:35 PM


GO- [Directory- Offline Message]

Bug


229

Phong

Message does not disappear
when I manual reload list of
Directory

Closed 11/Apr/19

Luc

3:54 PM

3.3. Kết quả đạt được
-

Nắm vững các kiến thức nền về React Native và ngơn ngữ JavaScript

-

Có đủ kiến thức để thực hiện các mảng nâng cao trong React Native như Animation, implement
các module bằng code native (Java , Objective-C )

-

Cải thiện kĩ năng giao tiếp và sắp xếp thời gian công việc

IV. CHI TIẾT PROJECT SPRYNKL

4.1

Giới thiệu về dự án
Sprynkl là ứng dụng nằm trong nhóm Grove Project với mục đích xây dựng Team culture.
Mục tiêu chín của dự án là “Give your employees a voice”:


Nhận phản hồi, góp ý nhanh chóng từ nhân viên



Xố bỏ ngăn cách giữa nhân viên trong môi trường làm việc



Tạo ra một môi trường làm việc cởi mở và năng động

Ứng dụng Sprynkl hoạt động với ba tiêu chí :


Đơn giản: Xây dựng ứng dụng với giao diện đơn giản và dễ sử dụng để có thể dễ
dàng tiếp cận với người dùng (employee)



Nhanh chóng: Tạo bảng khảo sát và đưa đến những người khác trong Team một
cách nhanh chóng. Tương tác liên tục giữa những người trong team.




Trung thực: Bạn có thể gửi góp ý cho một người khác trong team dưới dạng Ẩn
danh ( Anoynimous ), danh tính của bạn sẽ được bảo mật

11


Với Sprynkl, bạn có thể tham gia một hoặc nhiều team. Lời mời có thể được chấp nhận khi
bạn đăng nhập lần đầu hoặc sau khi bạn đăng nhập. Chuyển đổi giữa tất cả các đội bằng
cách chọn vào hình đại diện của team đó.

Employee tương tác với nhau và xây dựng Team Culture của họ qua việc chia sẽ, khảo
sát,gớp ý lẫn nhau để hiểu nhau hơn. Nhằm đáp ứng cho việc này Sprynkl tạo ra ba mục
đăng khác nhau tuỳ theo nhu cầu sử dụng :


Voice : Dùng cho việc đóng góp ý kiến để xây dựng Team , chia sẽ những khoảnh
khắc đẹp trong quá trình làm việc hoặc của riêng bản thân . Thành viên khác trong
nhóm cũng có thể thể hiện sự đồng ý của họ bằng cách tương tác với bài đăng của
bạn: thông qua Clap hoặc bình luận. (nơi mở để đề xuất và phản hồi)

12


-



Ask: Tạo ra những khảo sát nhanh với 1 câu hỏi duy nhất. Ở đây chúng ta hướng
tới việc thực hiện những câu hỏi khảo sát nhỏ một cách ngẫu nhiên và thỉnh thoảng
hơn là việc đưa ra một bảng khảo sát lớn (> 10 câu hỏi ) mỗi tháng.Có nhiều dạng

câu hỏi khảo sát được hỗ trợ sẵn.

13


-



Thanks: Khi ai đó giúp đỡ bạn , hãy gửi tới họ lời cảm ơn . Bỏ qua sự lúng túng và gửi lời
cảm ơn cho đồng nghiệp của bạn là một cách để khích lệ những nỗ lực của họ.

14


4.2

Quá trình làm việc

Issue Type
Bug

Key

SPM- [Sign up/in] Incorrect
1116

Bug

Status


Phong Luc Done

Updated
25/Apr/19
5:05 PM

Phong Luc Done

Endless loading bar when
user enters an incorrect
password

SPM- [Profile] Cannot scroll to
1174

Assignee

header color UI when
navigate to another screen

SPM- [iOS][Change Password]
1085

Bug

Summary

03/May/19
2:54 PM


Phong Luc Done

top of profile when pressing
on Profile icon

05/May/19
2:56 PM

15


Bug

SPM- [Input code] App does not
891

Bug

SPM- [Update profile] After
1181

Bug

Bug

1212
Bug

Bug


1198

Bug

Bug

Bug

Phong Luc Done

Phong Luc Done

1235

12/May/19
3:03 PM

Phong Luc Done

15/May/19
12:01 PM

Phong Luc Done

crashed/Display the red
error screen after entering
the valid email

17/May/19

1:50 PM

avatar of team changes
when tapping edit profile
button

SPM- [Invite member] Lack of

09/May/19
11:43 AM

SPM- [Edit Team Profile] Default Phong Luc Done
1246

09/May/19
10:40 AM

warning message when user
use back navigation on
android

SPM- [Invite Teammates] App
1265

Phong Luc Done

showing dropdown list
while keyboard is opened is
not good


SPM- [Android] Display a

08/May/19
11:19 AM

for Poll when switching
type

SPM- [Create ask] Animation of
1213

Phong Luc Closed

loading avatar

SPM- [Ask] Lack of empty line

06/May/19
10:27 AM

updating avatar, view
picture screen appears

SPM- [Notification] Cannot
892

Phong Luc Done

automatically switch to
next cell when inputting

same number with existing
number

17/May/19
1:52 PM

Phong Luc Done

empty line when navigating
back to Invite member
screen

17/May/19
3:23 PM

16


Bug

SPM- [Sign in/up] Incorrect UI
1118

Bug

SPM- [Ask noti] App does not
1182

Bug


1173
Bug

1188
Bug

1304
Story

Phong Luc Closed

Phong Luc Done

Phong Luc Done

Phong Luc Done

when using hashtag
suggestion in Poll and Scale

Improvement

8:49 AM
Phong Luc Done

Phong Luc On Hold

notification when the post
has more than 100
comments


SPM- [Notification] Scroll to the
787

04/Jun/19

04/Jun/19
11:25 AM

SPM- [Notification] Disappear
1110

04/Jun/19
8:28 AM

1095
Bug

29/May/19
5:32 PM

not auto refresh after
navigating from push noti

SPM- [Navigation] User flow

27/May/19
2:45 PM

are not rendered as the

same time

SPM- [Create ask] Error appears

27/May/19
11:07 AM

Missing loading bar when
avatar is uploading

SPM- [In-app noti] Noti list does

27/May/19
9:43 AM

several accounts, should
update invited by and send
new email

SPM- [Post detail] Components
1195

Bug

Phong Luc Done

auto push Someone
answered your Ask noti

SPM- [Pixel 2][Personal Profile]


17/May/19
4:04 PM

SPM- [Invite] If user is invited by Phong Luc Done
1176

Bug

Phong Luc Done

when confirm code

(Coding)

Phong Luc Testing

unread comment +
highlight when tapping to
notification

04/Jun/19
2:10 PM

11/Jun/19
11:03 AM

17



Bug

SPM- [My Profile] Avatar is not
1248

Improvement

SPM- [Avatar] Able to view
1140

Bug

1328
Improvement

13/Jun/19
4:51 PM

Phong Luc Done

13/Jun/19
6:12 PM

when tap back from Invite
screen

Phong Luc Done

17/Jun/19
3:05 PM


Phong Luc To Do

receiver is not OK

17/Jun/19
3:54 PM

Phong Luc Done

Notification list is not fixed
while scrolling on
home/team feed

SPW- [Notification] Notification
115

11:20 AM

code] Display "Wrong pin"
pop-up when input a correct
code

SPW- [View Notification]
117

Bug

Phong Luc Done


button] Re-order and
remove features.

SPM- [User flow] Flow of input
1319

Bug

4:45 PM

crashed after tapping Next
button on keyboard

SPM- [Android][Confirm your
1332

Bug

13/Jun/19

SPM- [Create team] App is frozen Phong Luc In-Process 14/Jun/19
1318

Bug

13/Jun/19
4:37 PM

app when tapping on profile


SPM- [See all members][More
1247

Bug

Phong Luc Done

profile when tapping to
avatar

SPM- [Confirm your code] App

12/Jun/19
9:19 AM

SPM- [View Profile/See All] Kill Phong Luc Done
1326

Bug

Phong Luc Done

the same as UI design

14/Jun/19
9:30 AM

Phong Luc Done

list is not responsive on

desktop 13 inch

14/Jun/19
9:54 AM

18


SPW- [Edit Team Profile] Default Phong Luc Done

Bug

138

avatar of team changes
when tapping edit profile
button

SPW- [Create a post] Don't show

Bug

146

pop-up “Are you sure to
discard” when user cancel
creating a post

SPW- [Common Behavior] The


Bug

104

4.3

14/Jun/19
4:23 PM

Phong Luc Done

20/Jun/19
10:32 AM

Phong Luc Testing

pop-up isn't closed when
click "Back" button of
browser

20/Jun/19
1:48 PM

Kết quả đạt được

-

Hiểu thêm được mô hình code khác của React Native khi sử dụng mobx

-


Học thêm được kiến thức về Web ( ReactJS ) và Back-end ( nodeJS )

-

Cải thiện được được khả năng làm việc nhóm hơn khi làm trong mơi trường team đơng người

V. TỔNG KẾT – ĐÁNH GIÁ
Sau khoảng 6 tháng thực tập ở KMS-Technology và tham gia 2 project của công ty, em có những trải
nghiệm khá vui và thú vị khi được làm việc trong một môi trường chuyên nghiệp.Trong quá trình làm
19


việc, em nhận thấy được những điểm mạnh của bản thân và những thiếu sót của mình kể cả về chun
mơn lẫn các kĩ năng mềm khác, nhờ đó mà có thể thay đổi để phát triển bản thân hơn.

20


×