Gợi ý một workspace cho dân IT đặc biệt cho Web Developer

Hi mọi người, nay giới thiệu cho mọi người một workspace (không gian làm việc) của mình như một gợi ý cho mọi người có thể tham khảo. Chủ yếu mình sẽ giới thiệu về các công cụ và chức năng sử dụng trong công việc hàng ngày là chính chứ không đi sâu vào hướng dẫn sử dụng phần mềm đâu nhé. Khi học tập hay làm việc mọi người nên tối ưu cho mình một không gian làm việc sao cho đạt hiệu quả nhất, tối ưu thời gian cho bản thân mình và đồng nghiệp xung quanh. Đối với dân IT thì không gian làm việc là ngay trên chính chiếc laptop hay những bộ Desktop vì vậy mình sẽ gợi ý cho mọi người một Workspace mà mình đang dùng.

  1. Công cụ quản lý tập tin, quản lý thư mục Q-Dir

Phần mềm này hay và tiện ích ở chỗ mình có thể quản lý nhiều cửa sổ trong một màn hình ứng dụng Q-Dir khi muốn thao tác copy, chỉnh sửa hay mở các project thì sẽ tiện lợi, tiết kiệm thời gian hơn rất nhiều. Mọi thao tác trong mỗi cửa sổ con đều giống như chúng ta thao tác với Windows Explorer bình thường nên chúng ta không mất quá nhiều thời gian vào tìm tòi cách sử dụng. Công cụ này hoàn toàn miễn phí nhé mọi người.

2. Công cụ quản lý mail, đa tài khoản: Mailbird

Một phần mềm mà mình rất thích bởi vì mình có thể quản lý nhiều tài khoản email, gmail cùng một lúc rất tiện như trong hình mình có 4 email là mail cá nhân, công việc, trường học với công ty nên cứ mỗi lần thao tác trên trình duyệt “khắc nhập, khắc xuất” nhiều làm mình hơi mệt. Ở đây mình có thể xem danh sách mail, chi tiết mail, xóa mail rác, soạn mail mới tất cả trong cùng một cửa sổ cực nhanh và cực tiện. Nếu mọi người sợ bị làm phiền khi đang làm việc mà sợ mail tới thì có thể cài đặt thời gian nhận thông báo mail ví dụ thời gian làm từ 8h sáng đến 5 giờ chiều thì có thể cài đặt các khoảng thời gian để kiểm tra mail và các thời gian còn lại sẽ không bị làm phiền. Phần mềm này cũng miễn phí, nâng cấp lên để xài các chức năng nâng cao nhé.

Continue reading
Advertisements

Trường học vs Công sở – đôi bạn thân ít ai ngờ tới

Khi còn đi học ở trường đại học chúng ta chỉ muốn nhanh chóng ra trường để đi làm mà mấy ai biết khi đi làm thì chỉ muốn quay về trường học lại.

Đùa với các bạn thế thôi, mình còn một cái khóa luận tốt nghiệp to đùng với 1 môn học thiết kế phần mềm giáo dục nữa còn ở công ty thì tính tới bây giờ mình đã làm được 8 tháng rồi đấy. Nhân hôm nay vừa làm xong cái yêu cầu của khóa luận tốt nghiệp lên tâm sự với mọi người dù biết rằng chắc chẳng có ai vào cái blog mà mình không quảng cáo cũng không cho ai biết này đâu.

Trường học và công ty tuy hai mà một, một bên cung cấp kiến thức mang nặng tính lý thuyết, học thuật, một bên lại yêu cầu luyện tập thực hành hàng ngày, đánh giá dự án thực tế để nâng cao bản thân. Mình thấy nhiều bạn ái ngại việc đi thực tập hoặc đi làm part-time tại một công ty trong thời gian còn học ở trường vì một số lý do sau:
+ Sợ bỏ bê việc học không đạt được điểm số như mong muốn
+ Không cân bằng được việc quản lý thời gian vì ở công ty khi đã làm chính thức đòi hỏi việc estimate thời gian theo task, theo dự án chính xác từ giờ phút đấy nhé
+ Sợ kiến thức học được ở trường không áp dụng vào vì suy nghĩ kiểu gì vào người ta cũng train lại từ đầu thì thôi học cho xong rồi đi làm luôn.

Vân vân và vân vân ý kiến nhằm phủ định mong muốn đi thực tập hoặc đi làm của bản thân. Điều này làm mất khá nhiều thời gian của các bạn đấy vì như mình dân kỹ thuật đã phần nếu không ở trường thì ở nhà cũng phải tìm hiểu công nghệ, làm dự án cá nhân thì mới lên trình được vậy tại sao thời gian ở nhà đó chúng ta lại không thử sức trong một môi trường mới năng động hơn là ở nhà đó là công ty. Mình có thể đưa ra một số lý do bên dưới:
+ Đi làm công ty được train, học những kiến thức rất rất thực tế
+ Giao tiếp được với mọi người các anh chị được mọi người truyền lại kinh nghiệm
+ Làm dự án thực tế cũng như một dự án cá nhân nhưng sẽ có team và có support thay vì ở nhà cặm cụi tự tìm kiếm, fix bug thì môi trường công ty sẽ giúp ta hướng giải quyết vấn đề và teamwork chuyên nghiệp trong một dự án
+ Học được quy trình làm việc mà từ đó có thể áp dụng vào trường học ngược lại

Nhưng các bạn đừng lo kiến thức ở trường không phải là vô dụng đâu

Chúng ta học được các kiến thức căn bản lập trình nè, hướng đối tượng, hướng hàm từ đó có cái nhìn tổng quan và dễ nắm bắt một ngôn ngữ lập trình. Tiếp theo đó mình sẽ liệt kê một số điều tuyệt vời mà trường học trang bị giúp chúng ta tham gia vào các công ty:
+ Kỹ năng trang bị đối phó trong các đợt đăng ký môn học giúp ta phản ứng nhanh với các tình huống bất ngờ như khách hàng thay đổi requirement chẳng hạn :v
+ Kỹ năng làm việc nhóm ở trường đại học cũng là một bước tiến cho bạn làm việc nhóm tại các công ty nơi các bạn đóng góp ý kiến và chia sẻ kiến thức của mình với mọi người
+ Kỹ năng tìm kiếm ở trường như phải tìm kiếm tài liệu, nguồn tiếng Anh giúp chúng ta có kinh nghiệm hơn trong việc giải quyết vấn đề “first” bởi vì chúng ta phải tự tìm hiểu trước mới hỏi đến mentor hoặc giáo viên điều đó giúp cho làm việc ở công ty cũng theo tuần tự như vậy. Phải tự research trên medium, stackoverflow, viblo,… nếu bí quá thì mới hỏi anh leader, anh senior giúp mình 😀

Áp dụng kiến thức từ công ty vào ngược lại trường học, tại sao không?

Hiện tại mình đang áp dụng quy trình làm việc mà mình học tập ở công ty vào khóa luận tốt nghiệp của mình:
+ Phân tích yêu cầu của ứng dụng, đánh giá thực trạng của chủ đề nhóm đang làm
+ Ước lượng thời gian cho các yêu cầu, cần phải high level cho các module của ứng dụng
+ Sau khi đã có bản ướ lượng ta áp dụng ngay vào cho Đề cương chi tiết khóa luận một cái nhà trường yêu cầu phải có nhưng bây giờ ta có bản estimate thời gian rồi thì chỉ cần việc áp vào rất nhanh
+ Tiếp theo phân tích cơ sở dữ liệu theo mô hình SQL hoặc NoSQL cho việc hỗ trợ tốt đa các chức năng ví dụ là Full-text search chẳng hạn
+ Khi mọi thứ đã ổn định như vậy thì ta tiến hành code theo các module khi đó thời gian ta làm việc sẽ nhanh chóng và chuyên nghiệp đảm bảo đúng theo lộ trình giao viên hướng dẫn đề ra
+ Áp dụng các công nghệ quản lý như Trello, Skype, TortoiseGit để quản lý task, mã nguồn và liên lạc giữa các thành viên nhóm
+ Cuối cùng là các kỹ năng test và viết document được học hỏi từ các anh chị bên team Test giúp cho chúng ta hoàn thành báo cáo và kiểm thử lại dự án chuyên nghiệp nhất có thể.

Trên đây là một số chia sẻ của mình giữa trường học và công ty, giữa việc học và việc đi làm. Nó bổ sung kinh nghiệm, kiến thức cho nhau chứ không loại trừ lân nhau nên nếu có thể hãy đắm mình trong sự hối hả của cả 2 để thấy được chúng ta mạnh mẽ đến thế nào như mình chẳng hạn Ahihi

Quy trình từ zero đến hero của một dự án thực tế

Hé lô mọi người lại là mình đây, tuần sau mình sẽ được làm một dự án thực nên tiện đây muốn chia sẻ với anh em chút kinh nghiệm làm việc mà mình học được ở công ty nè.
Giai đoạn 1. Đầu tiên các bạn sẽ nhận được một bản requirement, các bạn có thể xem nó như một bài kiểm tra đi thì cái yêu cầu này là để bài. Tiếp theo sau khi có đề bài, team leader và technical cùng anh em trong team sẽ ngồi lại với nhau phân tích requirement vạch ra các hướng phân tích và yêu cầu mọi người phải hiểu tường tận chi tiết bản yêu cầu này để tránh gặp phải rắc rối sau này khi mình đã build hoàn chỉnh mà sai requirement thì rất mất thời gian. Sau khi họp xong nếu có câu hỏi thác mắc gì chúng ta sẽ note lại và gửi Q&A với khách hàng. Khi mọi vấn đề đã được giải đáp ổn thỏa thid chúng ta bắt đầu gì tiếp theo nhỉ? Thiết kế database, viết code luôn …..
Giai đoạn 2. Câu trả lời là “Chưa phải lúc này”, sau khi đã confirm với khách hàng team sẽ họp lại tạo một bản High-level hệ thống các module cần làm trong dự án, trong các module đó chúng ta sẽ có các chức năng gì? Trong từ chức năng chúng ta lại tiếp tục chia nhỏ thành các task. Mockup UI từ bản Module này từ đó gửi lại cho khách hàng confirm.
Giai đoạn 3. Tiến hành ước lượng thời gian cuae các module, qua trình implementation và integration lên front-end. Quá trình này được gọi là Estimationm, việc ước lượng thời gian này càng chi tiết, càng chia nhỏ các task ra thì chúng ta càng kế hoạch được dự án, quản lý thời gian cũng như dự án, resource của team một cách tốt nhất. Mình sẽ chia sẻ với các bạn chi tiết về giai đoạn này trong các bài viết sau.
Giai đoạn 4. Thiết kế database tùy vào độ “khủng” của dự án mà ta lựa chọn cơ sở dữ liệu cho phù hợp và các quan hệ giữa các bảng có cần thiết hay không nếu không chúng ta sẽ tạo ràng buộc dữ liệu ngay trong code mà không cần phải tạo ràng buộc dữ liệu trong database. Bước thiết kế database cũng cực kỳ quan trọng bởi vì chúng ta phải tính các field chúng ta sẽ dùng đến trong quá trình code, cấu trúc database để sau này có chỉnh sửa thì cũng chỉnh sửa mau lẹ gọn gàng :D.
Giai đoạn 5. Sau bước này team sẽ hoàn thành công việc setup project, structure, environment, tạo 1 project trên gitlab. Tiến hành tạo các entity model các package của một dự án. Ở đây mình đang làm việc với dự án Spring Boot Web Application nên sẽ tạo các package như API, Service, Repository, Utils,…
Giai đoạn 6. Tiếp theo lần lượt implement thực thi các module, các bạn nên nhớ bước này chúng ta nên hoàn thành có thứ tự các chức năng sau thì nên hoàn thành chức năng tiền xử lý của nó. Ví dụ chúng ta thực hiện cho Admin tạo user thì cần xử lý các bước đăng nhập, phân quyền, kiểm tra authentication, session, nếu phân quyền liên quan tới các API của bên thứ 3 thì nên hoàn thiện các API này như grant Access Token, refresh Access Token chẳng hạn. Continue reading

Sau một tháng thực tập học được những gì?

Xin chào mọi người lâu lắm rồi mới viết lại bài, xin lỗi vì series Gulp mình chưa ra kịp nhé mình sẽ cố bù lại cho mọi người ngay. 2 tháng rưỡi hè vừa qua có cực kỳ nhiều kỷ niệm đối với bản thân mình. Chạy đồ án cuối kỳ cho 2 môn tự mình viết ứng dụng Android, làm quen với Firebase từ đó nhận thấy khá nhiều điều hay và thú vị bên cạnh đó rút ra một số kinh nghiệm theo lời nhận xét của giáo viên. Sau đó về quê có chút việc của gia đình về 2 tuần lại quay vào lại thành phố, tưởng thế là được chơi cả hè rồi thế mà hứng lên lại nộp CV đi thực tập surrender . Buổi phỏng vấn được anh Technical Leader và anh CEO phỏng vấn cũng tạm ổn có một số câu hỏi giải quyết vấn đề thì mình còn hơi kém nhưng vân đề ra giải pháp được hehe. Sau đó 1 tuần thì mình đi thực tập đó là ngày 16/7/2018 . Mới vào công ty còn khá lạ mình cũng ít nói nên khó hòa nhập, nhưng anh chị với mọi người trong công ty khá vui nên sau 1 tháng thì giờ cũng tạm ổn rồi tuy vẫn ít nói như vậy phải cố gắng khắc phục thôi. À quên mất mình thực tập Java Web Developer ở công ty, công ty chuyên về cloud, giải quyết về các vấn đề bảo mật sử dụng Spring Boot và front end thì làm việc với AngularJS. Sau một tháng thì mình học hỏi được một số kinh nghiệm sau mình sẽ chia sẻ cũng như tự nhìn nhận lại :
1. Thường sẽ có 30 phút Daily Scrum mỗi ngày báo cáo công việc ngày hôm trước và các task sẽ làm trong ngày hôm nay, cuối tuần thì đặc biệt hơn một chút có khoảng 1 tiếng để Weekly Report báo cáo lại tiến độ dự án, các task đã làm trong tuần qua. Cá nhân mình thấy buổi scrum này cực kỳ thú vị và có giá trị, công ty được ngồi lại nói về tất cả dự án của công ty chứ không riêng gì các dự án mà mình đang tham gia. Công ty là công ty startup nên các buổi scrum này khá hay, anh CEO chia sẻ về các kinh nghiệm, các sự kiện mà anh tham gia từ đó chia sẻ khá nhiều thứ.
2. Cuối ngày sẽ có một bản report chúng ta ghi lại những task đã hoàn thành “DONE” và task nào đang còn làm dở “ON-PROGRESS” từ đó có kế hoạch cho ngày hôm sau. Mình khá may mắn khi thực tập 2 tuần thì được join vào dự án thực làm quen với các cấu hình, các thiết lập của một dự án thực, kết hợp giữa Front-end và backend như thế nào.
3. Sử dụng IDE nào không quan trọng, quan trọng là việc coding và cấu hình dự án, đa phần công ty mình sẽ sử dụng IDE IntelliJNetbeans. Bên cạnh đó một điều không thể thiếu là làm việc với Git, Gitlab, các bạn phải tập làm quen với Git nhé sau này dùng nhiều lắm, cuối ngày Leader sẽ review code sau đó mọi thứ ok sẽ commit, pull, push code và merge code lại cho ngày hôm sau. Một điều quan trọng nữa là luôn luôn phải nhớ câu thần chú “COMMIT – PULL – PUSH” kẻo làm mất code của đồng nghiệp đấy nhé hungry Continue reading