Đồ nghề không thể thiếu của Coder

3895

Là một Developer, bạn sẽ phải dùng tới nhiều công nghệ khác nhau. Chưa kể dù mới hay lạ, hễ nghe tin chúng xuất hiện thì đã phải lật đật down về dùng thử. Sau một thời gian học hỏi thì tôi nhận ra rằng dù có thay đổi kiểu gì vẫn sẽ có một số technology là bạn luôn cần phải có trong túi đồ nghề của mình.

Trước tiên, tôi viết bài này với mindset của một fullstack developer. Và tôi cũng tin rằng một developer nên có khả năng linh hoạt làm được mọi task. Không có ý ám chỉ rằng việc bạn giỏi chỉ một lĩnh vực là điều tiêu cực nhưng tôi cho rằng developer tài năng khi họ có thể học hỏi và mở rộng kĩ năng trên mọi lĩnh vực. Nhưng vậy trước tiên chúng ta cần một gốc rễ cơ bản, một túi đồ nghề chứa đựng những tool cần thiết.

Một Web Framework

Có thể là Ruby trên Rails, hay Node.js, PHP, Phoenix, hoặc Perfect, et. Ý tưởng ở đây là bạn có học cho bản thân mình về một web framework – nó có thể tạo, đọc, update và xóa (CRUD) data từ một database sau khi nhận được một request từ HTTP. Ngoài ra nó còn có thể làm những background task hoặc thêm data và một queue/stream để xử lí sau.

Một Task Runner/Scheduler

Task runner dành cho việc lên lịch để chạy các task. Nó có thể là Cron, sidekiq, Verk, hay thậm chí là cả windows task scheduler. Bạn cần học được là có một số tasks phải diễn ra trong thời gian thực hoặc theo một request, nhưng có thể để sau. Ví dụ như khi bạn đang processing một file upload, khi đó hiển thị là ‘we got your file, thanks!’ nhưng background task lại liên quan tới quá trình xử lí nó hoặc việc gửi email sau khi quá trình trên hoàn thành.

Queue Software

RabbitMQ hoặc Amazon SQS hay Azure Queue Storage/Message Bus đều là những lựa chọn tuyệt vời. Bạn cần biết về những software thuộc backend với tên gọi “producers” và chúng có chức năng gắn data lên queue cho các “consumer” sử dụng. Queue software cho phép bạn bắt đầu, thêm hoặc ngừng số consumer tùy thuộc vào server của bạn.

Stream Software

Tương tự như queuing, khi item được đưa vào queue sẽ bị lấy ra bởi consumers; streaming software cho phép lượng data flow chảy qua như một dòng sông và các consumers thoải mái tương tác với những data đó. Những phần mềm đáng nhắc tới bao gồm Kafka, Amazon Kinesis etc.

Một Frontend Framework

Lựa chọn khá đa dạng bao gồm EmberJS, Angular, React+Redux, Vue.js, thậm chí là cả jQuery! Bạn sẽ cần phải học một front end framework để hiểu được những điều vô cùng thú vị như browser quirks, trans/compilation của các ngôn ngữ, web debugging/inspecting, responsive design, de/serialization của data và cả UI/automated testing.

Một Mobile App Framework

Đối với một số bạn thì có lẽ nó không cần thiết nhưng theo tôi ít nhất bạn cũng nên học một mobile platform như iOS hoặc Android (có thể là Cordova, React Native, hoặc là cả Unity). Lập trình mobile thật sự sẽ dạy cho bạn rất nhiều điều hữu ích liên quan tới user experience cũng như vấn đề về hình ảnh, vị trí cũng như cả thời lượng Pin.

Một ngôn ngữ về Scripting

AppleScript, Bash, Powershell, Python hoặc Ruby đều là lựa chọn tốt để bạn có thể chạy một task tự động. Một developer giỏi là khi biết được lúc nào cần bỏ công sức và lúc nào thì cần dùng “hack” để giải quyết những vấn đề không đáng quan tâm.

Relational Database

MySQL, PostgreSQL, MS SQL Server hoặc là database tương tự vậy. Việc bạn cần biết là cách thức mà relational databases hoạt động như nào cũng như cách mà record được lưu trự và truy xuất. Đây là một dịp tốt để bạn học và hiểu được lợi thế giữa stored procedures so với code procedure cũng như dạng tối ưu hóa nào có thể làm ngay trong thời điểm lưu trữ cũng như xuất dữ liệu.

Và một Non-relational database

Ngày càng có nhiều những database như thế này nhằm phục vụ cho từng task khác nhau, ví dụ như ElasticSearch dành cho tìm kiếm hoặc Druid đối với data thuộc based time. MongoDB hoặc DynamoDB cũng là 2 lựa chọn nổi bật nếu bạn muốn NoSQL databases dành cho các task chung chung tí.

Với tất cả những tool trên, bạn sẽ có khả năng tạo ra bất cứ phần mềm và ứng dụng trên bất kì một platform nào miễn là bạn có hứng thú. Tất nhiên không thể học hết chúng chỉ trong vài tuần nhưng với định hướng cho vài năm thì lại là một chuyện hoàn toàn có thể. Bạn cũng không cần phải lo lắng về việc phải học hết, cứ tập trung vào cái nào bạn thích trước và làm cho giỏi đã bởi đó sự nghiệp của bạn mà.  

Nguồn: blog.topdev.vn via Hackernoon