Tag Archives: senior developer

12 yếu tố tạo nên 1 web app xịn xò – Lược dịch và giải thích Twelve-Factor – Phần 3

Như đã giới thiệu ở bài trước, mình sẽ giới thiệu về twlve-factor app. Đây là 12 yếu tố cần thiết để xây dựng 1 ứng dụng “xịn xò”, ổn định, dễ mở rộng, dễ deploy.

Trong bài này, mình sẽ giải thích các yếu tố từ 8 tới 12 nhé:

  • 8. Concurrency: Một app nên được chia tách thành nhiều process nhỏ để tăng concurrency
  • 9. Disposability: Process của web app nên sống nhanh, chết nhẹ nhàng, để có thể dễ dàng chạy/kill process nhanh chóng
  • 10. Dev/prod parity: Các môi trường dev/staging/production nên giống nhau hết sức có thể
  • 11. Logs: Logs nên được viết ra dạng stream ở stdout
  • 12. Admin Processes: Một số task dạng admin (tạo database, fix dữ liệu) nên được chạy trong cùng môi trường với app đang chạy

 

Đây là phần 3 trong series 3 phần về Twelve-Factor App:

  1. Lược dịch và giải thích Twelve-Factor. Giải thích Codebase và Dependencies
  2. Giải thích Config, Backing Service, Build -> Release -> Run, Processes, Port Binding
  3. Giải thích Concurrency, Disposability, Dev/Prod Parity, Logs, Admin Processes

Continue reading 12 yếu tố tạo nên 1 web app xịn xò – Lược dịch và giải thích Twelve-Factor – Phần 3

12 yếu tố tạo nên 1 web app xịn xò – Lược dịch và giải thích Twelve-Factor – Phần 2

Như đã giới thiệu ở bài trước, mình sẽ giới thiệu về twlve-factor app. Đây là 12 yếu tố cần thiết để xây dựng 1 ứng dụng “xịn xò”, ổn định, dễ mở rộng, dễ deploy.

Trong bài này, mình sẽ giải thích các yếu tố từ 3 tới 7 nhé:

  • 3. Config: Lưu trữ thiết lập vào biến môi trường (environment variable)
  • 4. Backing services: Xem các service đi kèm (database, API, …) như là resource của app
  • 5. Build, release, run: Tách riêng quá trình release, build và run
  • 6. Processes: App nên chạy dưới dạng 1 (hoặc nhiều) stateless processes
  • 7. Port binding: Mỗi service có thể được truy cập thông qua 1 port cố định

 

Đây là phần 2 trong series 3 phần về Twelve-Factor App:

  1. Lược dịch và giải thích Twelve-Factor. Giải thích Codebase và Dependencies
  2. Giải thích Config, Backing Service, Build -> Release -> Run, Processes, Port Binding
  3. Giải thích Concurrency, Disposability, Dev/Prod Parity, Logs, Admin Processes

Continue reading 12 yếu tố tạo nên 1 web app xịn xò – Lược dịch và giải thích Twelve-Factor – Phần 2

12 yếu tố tạo nên 1 web app xịn xò – Lược dịch và giải thích Twelve-Factor

Sau một thời gian lập trình, bạn sẽ dần nhận ra một điều: Build một ứng dụng là một chuyện khá khó.

Thế nhưng, khi ứng dụng đã bắt đầu có người sử dụng (lên production), ta sẽ gặp phải nhiều vấn đề còn … khó hơn nữa:

  • Làm sao thêm tính năng, sửa lỗi mà không ảnh hưởng đến ứng dụng đang chạy
  • Làm sao để những tính năng mới, bug fix có thể được release nhanh chóng đến tay người dùng
  • Khi lượng người dùng tăng gấp 5, gấp 10 lần, làm sao để có thể nhanh chóng scale hệ thống
  • Làm sao để mấy bạn developer mới gia nhập có thể dễ dàng chạy ứng dụng ở local, test và push code

Đây là những vấn đề làm đau đầu nhiều team, vì nó đòi hỏi không chỉ kiến thức lập trình, mà còn là kiến thức về system architecture, operation, qui trình….

Do vậy, trong bài này, mình sẽ chia sẻ về Twelve-Factor App (12factor.net). Đây là 12 yếu tố cần thiết để xây dựng 1 ứng dụng “xịn xò”, ổn định, dễ mở rộng, dễ deploy nhé.

 

Đây là phần 1 trong series 3 phần về Twelve-Factor App:

  1. Lược dịch và giải thích Twelve-Factor. Giải thích Codebase và Dependencies
  2. Giải thích Config, Backing Service, Build -> Release -> Run, Processes, Port Binding
  3. Giải thích Concurrency, Disposability, Dev/Prod Parity, Logs, Admin Processes

Continue reading 12 yếu tố tạo nên 1 web app xịn xò – Lược dịch và giải thích Twelve-Factor

Tôi đã lên cấp và tiến hoá như thế nào qua 6 năm lăn lộn trong ngành – Phần 2

phần trước, mình đã chia sẻ về những trải nghiệm, những điều mình đã học được khi còn ở Việt Nam và UK. Trong phần này, mình sẽ chia sẻ về những thứ giúp mình “tiến hoá” khi làm việc tại Singapore nhé.

Đây là phần 2 trong series 2 phần Tôi đã lên cấp và tiến hoá như thế nào:

Continue reading Tôi đã lên cấp và tiến hoá như thế nào qua 6 năm lăn lộn trong ngành – Phần 2

Tôi đã lên cấp và tiến hoá như thế nào qua 6 năm lăn lộn trong ngành – Phần 1

Mình thường hay khuyên các bạn mới ra trường là: Đừng quan trọng đi làm lương bao nhiêu, mà phải quan trọng là học hỏi được gì? Qua 1 – 2 năm làm ở đấy thì mình có tiến bộ không? Có thể đạt tới trình độ cao hơn, lương cao hơn không?

Thông thường, các bạn hay hỏi lại là: Làm sao để biết mình cần học hỏi những gì? Do vậy, trong bài này, mình sẽ chia sẻ về những thứ mà mình đã học được qua 6 năm làm việc nha.

Những thứ này đã giúp mình “tiến hóa” từ 1 thằng Fresher bình thường lên Senior, lên Full Stack Developer. Mình nghĩ ai làm vài năm cũng rút ra được thôi, nhưng biết những thứ cần học thì mấy năm đầu đi làm đỡ bỡ ngỡ lạc lối ha.

 

Đây là phần 1 trong series 2 phần Tôi đã lên cấp và tiến hoá như thế nào:

Continue reading Tôi đã lên cấp và tiến hoá như thế nào qua 6 năm lăn lộn trong ngành – Phần 1

Cảnh giới cao nhất của việc Code chính là … không Code!

Truyện kể rằng, thuở xưa có người tên Tôn Tử, người Lạc An nước Tề. Vì nội chiến nên phải dời tới kinh đô của nước Ngô, ẩn cư rồi chuyên tâm nghiên cứu binh pháp.

Sau nhiều năm ẩn cư, quan sát thế sự và kinh nghiệm tác chiến của các bậc tiền nhân, ông đã viết ra cuốn: "Binh Pháp Tôn Tử" đồng thời xuất sơn phò tá vua Ngô. 

Kể từ đó nước Ngô bách chiến bách thắng, uy chấn thiên hạ.

Binh pháp Tôn Tử tuy viết rất nhiều về kinh nghiệm chiến tranh, cách chiến thắng mọi trận chiến. Thế nhưng, Tôn Tử lại cho rằng cảnh giới cao nhất chính là … không chiến mà vẫn thắng.

Đọc đi đọc lại một hồi, mình ngẫm thấy điều này cũng khá đúng với ngành lập trình. Do vậy, mình chia sẻ trong bài này để anh em cùng nghiền ngẫm nhé!

Continue reading Cảnh giới cao nhất của việc Code chính là … không Code!

Sập Server có phải muôn đời – Phần 1: Làm gì khi hệ thống sập bất ngờ?

Đây là phần 1 trong series 3 phần “Sập Server có phải muôn đời”.

  1. Làm gì khi hệ thống sập bất ngờ – Xách quần lên công ty
  2. Viết post-mortem sau khi xử lý sự cố – Đừng chỉ trích hay đổ lỗi
  3. Những phương pháp phòng chống/monitoring – Giúp anh em ngủ ngon không lo server sập

 

Đây là câu chuyện của Hùng, một developer quèn tại 1 công ty startup.

Một chiều thứ 6 đẹp trời nọ, Hùng đang thư thả về nhà, dắt gấu đi chơi cuối tuần, đi ăn khuya. Ăn uống no say, Hùng dắt gấu vào nhà nghỉ (tất nhiên là chỉ để nghỉ thui nha, blog này cho cả các bạn chưa đủ 18 tuổi).

Vào đến nhà nghỉ, Hùng vừa mới tuột quần, chuẩn bị … chạy thẳng vào toilet (chắc do nồi lẩu vừa ăn không sạch lắm). Bỗng dưng, di động reo, anh Sơn team leader trên công ty réo: Hùng ơi, hệ thống sập con bà nó rồi, khách hàng không vào được trang chủ, em lên công ty phụ anh và anh Kha kiểm tra với.

Vội vàng chưa kịp mặc quần, bỏ gấu nằm bơ vơ trong khách sạn, Hùng bắt vội chiếc Grab chạy thẳng lên công ty để tìm lỗi… Còn tiếp!

Vui chơi nhưng không quên nhiệm vụ, hãy như Hùng!

Continue reading Sập Server có phải muôn đời – Phần 1: Làm gì khi hệ thống sập bất ngờ?

Từ chuyện cargo cult programming, đến phong cách lập trình theo kiểu “bầy đàn”

Chuyện kể rằng, vào thời thế chiến thứ 2, binh lính Mĩ lần đầu tiên tiếp xúc với các thổ dân ở nhiều quần đảo thuộc vùng Melanesia.

Vì nhu cầu chiến tranh, quân Mỹ/Nhật chở hàng loạt tàu hàng, cho máy bay thả hàng tiếp tế (thức ăn, lương thực, vũ khí) xuống, làm đời sống nhân dân trên đảo được cải thiện.

Khi chiến tranh kết thúc, hàng hoá cũng hết theo. Cư dân trên đảo bắt đầu bắt chước hành động của binh lính Mĩ. Họ cũng dựng chòi canh, khắc gỗ làm radar headphone, quơ quào trên đường băng như binh lính liên lạc.

Cư dân trên đảo làm giả máy bay, headphone, đài phát sóng; với hi vọng máy bay thật sẽ quay lại

Dân chúng bắt đầu làm theo những nghi lễ này, với hi vọng máy bay sẽ quay lại, mang theo những thùng hàng tiếp tế. Tất nhiên là, dù họ có quơ quào cả năm trời, cũng chẳng có chiếc máy bay nào quay lại cả.

Dần đà, những thứ này trở thành nghi lễ, được thờ cúng. Những tôn giáo, nghi lễ dạng này được gọi là cargo cult (cargo là hàng hoá được chuyên trở trên tàu).

 

Ơ, chuyện nghe thú vị đấy, nhưng mà nó có liên quan gì đến lập trình đâu?? Ấy vậy mà có đấy!

Continue reading Từ chuyện cargo cult programming, đến phong cách lập trình theo kiểu “bầy đàn”

Mấy ông Senior/Full Stack cũng không “trâu bò” như các bạn tưởng đâu!

Mấy nay, khi tư vấn, mình hay nhận được mấy câu hỏi vui vui từ mấy bạn sinh viên, sắp ra trường:

  • Mấy anh senior trâu bò lắm hay sao mà lương ông nào ông nấy cao khủng thế ạ?
  • Nghe nói mấy ông Full Stack cái gì cũng biết, trên thông Cờ Lao dưới tường Đép Ộp phải không ạ?
  • Nghe kể công ty em có mấy ông senior cái gì cũng biết, code bay tóc không cần Google

Do vậy, hôm nay mình sẽ tự bóc phốt mấy ông Full Stack/Senior (trong đó có cả mình), mấy ổng không trâu cho như các bạn tưởng đâu nhe!

Continue reading Mấy ông Senior/Full Stack cũng không “trâu bò” như các bạn tưởng đâu!

Số năm kinh nghiệm có phản ánh đúng năng lực của bạn??

Dạo gần đây mình thấy có 1 cuộc thảo luận khá vui. Có nhiều người hay khuyên: Đi làm dev vài năm, có kinh nghiệm, lên senior rồi thì tha hồ mà deal lương nghìn đô!

Thế nhưng cũng có nhiều bạn kể rằng: Em đi làm cũng 3-4 năm rồi, mà sao vẫn chưa được lên senior, lương vẫn lèo bèo. Hoặc có vài ông senior giả cầy, 6-7 năm kinh nghiệm nhưng khả năng cũng chỉ hơn junior chút đỉnh.

Vậy, có phải cứ làm lâu, làm vài năm là sẽ lên được senior không? Số năm kinh nghiệm có phản ánh đúng trình độ của một developer hay không?

Anh em cùng đọc bài viết và suy ngẫm nhé!

Continue reading Số năm kinh nghiệm có phản ánh đúng năng lực của bạn??