Topdev AMA: The best community answers from Technical lead & # 8211; giaohangnhanh

AMA (Ask Me Anything) is a weekly Q&A (live FAQ) event that takes place regularly on TopDev 's fanpage. With two hours of direct inquiry with speakers, AMA will be a good opportunity to answer countless questions about technology trends at home and abroad.

Let's take a look at who this week's speaker is!

Currently Mr. Mau Quang Vu is taking the position of Technical Leader at Giaohangnhanh one of the startups in the field of very large delivery and is trusted by many units. He and his team are developing a new platform for freight forwarding.

With years of web development experience, and being co-founder of Lithium Solutions, he has a wealth of unique experience in web programming and start-up. He is also a "familiar face" speaker of many domestic technology events.

Recently, he has answered many questions "quite hard" of young people in IT industry, from questions related to professional as well as career. Here are the best questions that the audience has asked for Mr. Vu in the past:

-Do I want to ask if I need to study e-commerce to learn about computers like information technology? Or what do I specifically learn?

Hello E-commerce is a broad category, understood to use technologies such as internet, smartphone … to serve sales. There are many parties involved in this field such as: the seller, the buyer, the online trading platform, or the delivery service provider, online payment service or information management service. Customer Information (CRM) … You should determine what role you participate in the market.

Learning about computers or IT does not directly help you with knowledge of e-commerce. You can start with an online business or provide tools for stakeholders.

-Well a. E is known as short and neat JavaScript code, can write a simple app with shorter time. However, because JavaScript's syntax itself makes it difficult for JavaScript projects to expand on the Enterprise scale, typically the NPM lib, most of them do not have standard convention when they write libraries.
My question is if I write a medium and large app, how should I organize the app structure? at 1 project architecture level and covention at source code level? while ensuring that the project can be scaled.
Thank you.

JavaScript is used by enterprises but JavaScript is not suitable for enterprise applications (with the characteristics of complex business logic such as collaboration software, CRM, ERP software, …), because:
– JavaScript's single thread feature makes executing a long task or processing calculations block other tasks.
– JavaScript asynchronous & callback features make it difficult to track the execution flow of application logic – especially with enterprise applications with complex logic.
– Dynamic type and without compile steps of JavaScript make errors easy and only detected at runtime. With the growing source code structure and many developers participating in development, it makes maintaining complex, costly and costly.

You might consider splitting a large JavaScript app into smaller apps or using Java, C #, Scala, Go, … to write enterprise applications.

-Huy Vu, I should make a big company and study by myself many new technologies, or make a medium company but can do a lot, learn a lot from that job, but less time to study by myself? I thank you

In my opinion, during the first 2-3 years of your career as a developer, you should spend time working in many companies with different environments and work characteristics. It can include startups, freelancers or big companies. This helps you to get many different experiences from which to choose the right path for you. It also helps you build a rich network of contacts.

-How to design a successful website and get everyone's trust in you?

I find it difficult to explain the word "successful" and "trusted" in your question.

We need to recognize that a website does not exist independently. In the overall company / business project, the website (or mobile application) is the front for us to interact with your business. A website can be considered successful if
– It helps users interact effectively with business
– It serves the interests of users, companies, employees and related partners.
– It works stably, efficiently, reliably, safely
In short, it helps business succeed

You need a team with different skills to build a "successful" website: product manager, project manager, designer, developer, sales, marketing, customer support, business development and security ?

In a typical process:
– Founder / Business Development identified the market and business model
– Product Manager is responsible for product orientation and feature design
– Project Manager is responsible for progress and development process
– Designer is responsible for the interface and aesthetics
– Software Engineer is responsible for development and technical quality
– Sale / Marketing is responsible for finding more customers to the website
– Community Support / Customer Support is responsible for interacting with customers and retaining customers
– Security is responsible for system security

– Mr. Vu, can you tell me more about your plans to study new skills in the future? And why did you make such a decision?

He intends to develop technical skills, product, business, finance … Technical: System architecture, team organization. Product: design and build products effectively. Business: learn about business models … You equip yourself with many different skills to be able to adapt to the change of technology / life and create new opportunities for you ?

-Well Mr. Vu, can you share some useful resources for developers about NodeJS, Golang?

About JavaScript:
– JavaScript The Good Part
– JavaScript Definition Guide
– Eloquent Javascript
– You don't know Javascript
– JavaScript Design Patterns

About Golang:
tour.golang.org
https://github.com/golang/go/wiki/Books

– Mr. Vu used to work in the field of Golang, do you have any comments on the coming development of Golang?

Since the release of version 1.0 (2012), Golang has had little change in language but only on stability and performance. Notably: garbage collector architecture, redo compiler, SSA conversion, performance improvement, core library (context) standardization, improved tools, mobile support and new platforms … So Go itself will continue the trend as above.

About the ecosystem. More and more companies trust to use Go for new components / services, leading to the quality of Go's repository more and more. Go is still used primarily for micro service development and command line tool. As a web site, NodeJs are still preferred because Go's web framework is not strong. Go is also beginning to use programming on device or machine learning, AI. And we can expect the first applications written in Go on mobile (though this trend is hard to become mainstream).

-Welcome to Vu, I have two issues of interest to improve the MVP model.

1. In Javascript, there is a way for a module A to interpret only the interface of a module B, the execution of module B is interpreted during the call of module A just like the mail mechanism Windows dynamic link library (DLL). More specifically, there are A.js, B.js, if A.call (B) does not execute, the site does not download B.js.
2. I am having a problem when embeded css into the html of a component. If separated, it is very difficult to manage dependencies for comps, but if it is executing, csss are duplicated when cloning multiple comps. Is there any better design for this problem?

1. You can learn about Tree shaking with EcmaScript 2015.
https://blog.engineyard.com/2016/tree-shaking

2. You can use CSS Module and React.
– Shared CSS is placed in a separate file and imported into the entire project (global CSS)
– The individual CSS for each component is placed in that component's namespace (CSS Module) and does not conflict with other components.
https://medium.com/…/modular-css-with-react-61638ae9ea3e

-Why do I ask how to cut HTML / CSS from PSD so that the ratio of psd files is designed? I thank you in advance

The important difference between them: HTML / CSS is dynamic content, varying according to the size of the display space, device, … and PSD is static design.

When designing PSD and cutting HTML / CSS you need to keep the mindset that your design is "dynamic". Some points to note
– Design PSD file for different screens
– Set rules for resizing components
– Priority to use vector images (SVG) instead of bitmap images.
– Test your design with many different screen sizes

Thank you for your sharing with the community in the past. You can still ask your questions to the speakers of the next sections. Follow often Topdev fanpage page.
See original content here

Share the news now