2. 9/3/19
2
Nội dung SHARING
1. Dự báo công nghệ phát triển phần mềm
– Developer Survey Results 2018
– CES 2019 Tech Trends
– 10 Trends in the Software Industry
2. Giải pháp công nghệ “HOT”
– Giải pháp Frontend tại GRAB
– SMACT (Mobile - Social - Analytic - Cloud - IoT)
3. Kỹ sư phát triển phần mềm 2019
4. Kỹ thuật “CODING”
3
1
Dự báo công nghệ
phát triển phần mềm 2019
3. 9/3/19
3
> a. Developer Survey Results 2018
5
Ø Công nghệ MOST POPULAR
TECH
– Programming, Scripting Markup
and Languages
– Database
> Developer Survey Results 2018
6
Ø Công nghệ MOST POPULAR
TECH
– Framework Library and Tools
– Platforms
4. 9/3/19
4
> Developer Survey Results 2018
7
Ø Công nghệ đang LOVED
– Languages – Framework Library and Tools
> Developer Survey Results 2018
8
Ø Công nghệ đang LOVED
– Database – Platforms
5. 9/3/19
5
> Developer Survey Results 2018
9
Ø Công nghệ đang DREADED
– Languages – Database
> Developer Survey Results 2018
10
Ø Công nghệ đang DREADED
– Platforms
6. 9/3/19
6
> Developer Survey Results 2018
11
Ø Công nghệ đang WANTED
– Languages
– Database
– Framework & Libraries
– Platforms
> Developer Survey Results 2018
12
Ø IDE & Tools
– Web Developer
– Mobile Developer
7. 9/3/19
7
> Developer Survey Results 2018
13
Ø IDE & Tools (tt)
– Sysadmin/DevOps
> Developer Survey Results 2018
14
ü Language: Java, JavaScript, HTML5, CSS3 and
C#, Python
ü Database: MySQL, SQL Lite, MongoDB and
SQL Server
ü Platform: Window, Linux, AWS, Docker and
Virtual Box
ü Framework: Node.js, Bootstrap, jQuery,
Angular, Spring Boot and Spring.io
ü IDE: Atom, Android Studio, Visual Studio
Code, Eclipse, Astah UML Tool and NetBeans
ü Management Tools: GitHub, Redmine
(Source: https://insights.stackoverflow.com/survey/2018/#technology)
8. 9/3/19
8
> b. CES 2019 Tech Trends
15
> b. CES 2019 Tech Trends
16
1. 5G Networks
2. AI
3. Autonomous Devices
4. Blockchain
5. Augmented Analytics (ChatBot)
6. Digital Twins
7. Enhanced Edge Computing
8. Immersive Experiences in Smart
Spaces
9. Digital Ethics and Privacy
Source: https://www.bbva.com/en/nine-technology-trends-in-2019
9. 9/3/19
9
> b. CES 2019 Tech Trends
17
> b. CES 2019 Tech Trends
18
Source:
https://www.slideshare.net/squishygorilla/ces-
2019-technolody-trends?from_action=save
More at
https://www2.deloitte.com/content/dam/insights
/us/articles/Tech-Trends-
2019/DI_TechTrends2019.pdf
10. 9/3/19
10
> c. Top 10 Trends in the Software Industry
19
1. Artificial Intelligence
2. Blockchain
3. Low Code Development
4. Code Quality
5. Language Trends
6. Progressive web applications
7. Cybersecurity
8. Outsourcing
9. IoT
10.The Mixed Reality - augmented reality (AR)
and virtual reality (VR)
Source: https://hackernoon.com/20-top-software-outsourcing-companies-2a0d1078836f
2
Giải pháp công nghệ “HOT”
11. 9/3/19
11
> Frontend at GRAB Solution
21
1. Single-page Application (SPAs)
2. New-age JavaScript
3. User Interface
4. State Management
5. Coding with Style
6. Maintainability (Testing, Linting
JavaScript, Linting CSS, Types)
7. Build System
8. Package Management
Source: https://engineering.grab.com/grabs-front-end-study-
guide#single-page-apps-spas
> Frontend at GRAB Solution
22
1.Single-page Application (SPAs)
ü The benefits
– Users do not see the flash between
page navigations
– Fewer HTTP requests are needed
to the server
– Clear separation of the concerns
between the client and the server;
you can easily build new clients for
different platforms (e.g. mobile,
chatbots, smart watches) without
having to modify the server code
ü The downsides
- Heavier initial page load
- There’s an additional step to
be done on your server
which is to configure it to
route all requests to a single
entry point
- SPAs are reliant on JavaScript
to render content, but not all
search engines execute
JavaScript during crawling
(SEO)
12. 9/3/19
12
> Frontend at GRAB Solution
23
2. New-age JavaScript
ü JavaScript is an incredibly versatile language which you can also use to
build web servers, native mobile apps and desktop apps
ü JavaScript has suddenly seen a huge burst of improvements within a short span
of time. In 2015, ECMAScript 2015 (previously called ECMAScript 6) was
released and a ton of syntactic constructs were introduced to make writing
code less unwieldy
> Frontend at GRAB Solution
24
3. User Interface – React
ü Declarative
ü Functional
ü Maintainable
ü High Performance
ü Ease of Learning
ü Developer Experience
ü Alternatives
• Angular, Ember
• Vue, Cycle
13. 9/3/19
13
> Frontend at GRAB Solution
25
4. State Management (Flux, Redux)
– The Flux
– Redux: Redux combines the ideas from Flux, Command
pattern and Elm architecture and is the de facto state management
library developers use with React these days. Its core concepts are
• App state is described by a single plain old JavaScript
object (POJO)
• Dispatch an action (also a POJO) to modify the state
• Reducer is a pure function that takes in current state
and action to produce a new state
> Frontend at GRAB Solution
26
4. State Management (Flux, Redux)
– The Flux
– Redux: they are really powerful as they enable
apps to:
• Have their state rendered on the server,
booted up on the client.
• Trace, log and backtrack changes in the
whole app
• Implement undo/redo functionality easily.
– While Redux does necessarily have to be used
with React, Angular 6
14. 9/3/19
14
> Frontend at GRAB Solution
27
5. Coding with Style (CSS Module)
– To guide people on how to write organized CSS for
complex projects, such as using SMACSS, BEM,
SUIT CSS.
– CSS modules is an improvement over existing CSS
that aims to fix the problem of global namespace in
CSS
> Frontend at GRAB Solution
28
6. Maintainability (Testing, Linting JavaScript, Linting CSS,
Types)
– Testing - Jest + Enzyme
• Jest is a testing library by Facebook that aims to make the process of testing pain-
free
• Jest and Enzyme makes writing front end tests fun and easy.
• Estimated Duration: 2-3 days. Try writing Jest + Enzyme tests for your React + Redux
app!
– Linting JavaScript – ESLint
• A linter is a tool to statically analyze code and finds problems with them, potentially
preventing bugs/runtime errors and at the same time, enforcing a coding style
• Estimated Duration: 1/2 day. Nothing much to learn here. Add ESLint to your project
and fix the linting errors!
15. 9/3/19
15
> Frontend at GRAB Solution
29
6. Maintainability (Testing, Linting JavaScript, Linting CSS, Types)
– Linting CSS - stylelint
• Stylelint is currently being used by big companies like Facebook, GitHub and Wordpress
• Estimated Duration: 1/2 day. Nothing much to learn here. Add stylelint to your project and
fix the linting errors!
– Types – (Flow or TypeScript)
• Static typing brings about many benefits when writing apps. They can catch common bugs
and errors in your code early.
• Types also serve as a form of documentation for your code and improves the readability of
your code. As a code base grows larger, we see the importance of types as they gives us
greater confidence when we do refactoring.
• It is also easier to onboard new members of the team to the project when it is clear what
kind of values each object holds and what each function expects.
> Frontend at GRAB Solution
30
7. Build System – webpack
– webpack is a module bundler that compiles a front
end project and its dependencies into a final bundle to
be served to users
– projects will already have the webpack configuration
set up and developers rarely have to change it
– Estimated Duration: 2 days (Optional).
16. 9/3/19
16
> Frontend at GRAB Solution
31
8. Package Management – Yarn
– When you have multiple projects, these packages are duplicated
across each project and they are largely similar. Each time you run
npm install in a new project, these packages are downloaded
over and over again even though they already exist in some other
project in your computer.
– Some of our CI builds fail because at the point of time when the CI
server installs the dependencies, it pulled in minor updates to
some packages that contained breaking changes.
– Estimated Duration: 2 hours.
> Frontend at GRAB Solution
32
1. Single-page Application (SPAs)
2. New-age JavaScript - ES5 and ES2015 (3 – 4 days)
3. User Interface - React (3 - 4 days)
4. State Management – Redux ( 4 days)
5. Coding with Style - CSS Modules (3 – 4 days)
6. Maintainability (5 days)
– Jest + Enzyme (2 - 3 days)
– Linting JavaScript ESLint (1/2 day)
– Linting CSS – stylelint (1/2 day)
– Types – Flow (1 day)
7. Build System – webpack (2 day)
8. Package Management – yarn (2 hours)
Source: https://engineering.grab.com/grabs-front-end-
study-guide#single-page-apps-spas
18. 9/3/19
18
SOLUTIONS
2. Giải pháp công nghệ
“HOT”
Ø Giải pháp Frontend tại
GRAB
Ø SMACI (Mobile - Social -
Analytic - Cloud - IoT)
35
36
3
Kỹ sư phát triển phần mềm
19. 9/3/19
19
> SE Job Title in Outsource Software
37
> Methodology > SW Design Methods
38
21. 9/3/19
21
> Methodology > SW Development
41
> Joe Test: 12 Steps to Better
1. Do you use source control?
2. Can you make a build in one step?
3. Do you make daily builds?
4. Do you have a bug database?
5. Do you fix bugs before writing new code?
6. Do you have an up-to-date schedule?
7. Do you have a spec?
8. Do programmers have quiet working conditions? -
9. Do you use the best tools money can buy? -
10. Do you have testers?
11. Do new candidates write code during their interview?
12. Do you do hallway usability testing?
42
https://www.joelonsoftware.com/2000
/08/09/the-joel-test-12-steps-to-better-
code/
22. 9/3/19
22
> ”CHÚNG TA” cần chuẩn bị gì?
43
https://github.com/kamranahmedse/dev
eloper-roadmap#-frontend-roadmap
Web Developer DevOps Back End Front End
3. What skills do
you learn or
improve?
1. What do you
want?
2. What job do
you select?
JOBs SKILLsYOU
> ”CHÚNG TA” cần chuẩn bị gì?
23. 9/3/19
23
1. What do you want?
• High salary
• Onsite at US, Japan
• Clearly career path, Fast-track career
• Nice & modern offices, Multinational company, Company
culture, Good profile
• Comprehensively equipped to work effectively
• High and new technology
• Big partner ...
• Automotive
• Industrial
• Consumer
• Mobile
• Detailed/concept design
• 2D drafting/tolerance calculation
• 3D model, rendering
• CAD conversion/Migration
• Register-transfer level verification
• Circuit design
• Physical Design
• PCB Design
2. What job do you select?
46
Automotive BFSI – Bank, Finance CME Supply Chain Utilities
• Application Dev &
Maintenance;
• AMS;
• Call center
• Application
Remediation;
• ERP Implementation:
SAP, MS Dynamics;
• DMS;
• Notes Migration;
• Cloud Transition ;
• Mainframe
Modernization;
• SW Testing;
• Test Automation;
• Embedded Testing;
• Mobile Handset & App
Testing;
• Compatibility;
Cloud Professional
Services
• Consulting;
• Cloudification;
• Saasification;
• Cloud Product Development;
• Cloud Testing;
• Managed Service;
Analytics
• Prediction engine;
• Computer vision and pattern
recognition;
• Speech analytics & NLP;
• Behavior analytics;
• Data Visualization;
• Data warehousing, ETL, BI
IoT
• Monitoring and Analytics
• Machines Management
• Gateway application
Mobility
• Consulting
• Technology evaluation
• UI/UX analysis & design
• Device Management
• App Development
• Testing
Embedded Systems CAD/CAM IC Design
Application Services Biz Application
Services
Legacy Migration TCOE BPO
Traditional
Services
Digital-Age
Services
Product
Engineering
• Data Process;
• Contact Center;
• Engine learning data
creation;
• Construction CAD/CAM;
• HTML Creation
24. 9/3/19
24
3. What skills do you learn or improve?
• What skills do you have
– Problem Solving Communication
– Teamwork Research new technology
– Information TechnologyEnglish etc.,
• Make a plan, monitor and adjust
• How to get it
– At University
– Activities at ICT companies: Internship, seminar, tech talk, …
– Online at MOOC site (Mass Online Open Course)
– Friends
– Social Network
Fpoly Developer là AI?
• Điểm yếu:
– Nhút nhát, Thiếu kỹ lưỡng
– Thiếu kiến thức è làm trễ cũng không báo
– Không báo cáo tiến độ khi thực hiện Task
– Sản phẩm kém chất lượng nhiều bug
– Sẵn sàng OT mặc dù ko cần thiết
• Điểm mạnh
– Dễ dàng uống nắn và đào tạo
– Có sức khoẻ
48
25. 9/3/19
25
4
Kỹ thuật ”CODING”
> CODING
50
ü Coding Process
§ Code => Unit Test => Self
Review => Peer Review
ü Coding Refactoring
§ Refactoring Improving the
Design of Existing Code
ü Coding Review by Checklist
§ Java
§ Android
ü Coding Convention
§ Java
§ TypeScript
ü Coding OOP Tech
§ OOP
§ SOLID Principle
§ Design pattern
26. 9/3/19
26
> CODING
51
ü Coding OOP Tech
§ OOP
§ SOLID
Principle
§ Design
Pattern
Tổng kết WORKSHOP
1. Dự báo công nghệ phát triển phần mềm
– Developer Survey Results 2018
– CES 2019 Tech Trends
– 10 Trends in the Software Industry
2. Giải pháp công nghệ “HOT”
– Giải pháp Frontend tại GRAB
– SMACi (Mobile - Social - Analytic - Cloud - IoT)
3. Kỹ sư phát triển phần mềm 2019
4. Kỹ thuật “CODING”
52