thảo luận Fresher + Outsource = Nightmare

  • Người tạo chủ đề Người tạo chủ đề SoulEvilX
  • Ngày bắt đầu Ngày bắt đầu
Quy trình là thứ chúng nó đặt ra để sau khi đá đít mình thì có thằng khác vào hốt :sexy_girl:

Tôi còn nhớ năm xưa làm 1 cái dự án dày cộp business nhưng hoàn toàn ko có 1 tờ tài liệu, k có cả comment code, hỏi ra mới biết thằng outsource trc đây là 1 team khựa. Mấy anh khựa thâm như dái chó đánh hơi được bọn kh chuẩn bị đá đít nó để kiếm team rẻ hơn nên nó xoá sạch comment + huỷ luôn tài liệu. Tôi không biết ai bảo khôn lõi hay điếm lác gì chứ là tôi tôi cũng làm y bọn khựa, ra đời kiếm ăn ai điếm hơn thằng đó thắng :sexy_girl:

via theNEXTvoz for iPhone
Làm os hay thấy nó chơi trò ban đầu thuê team ngon dựng base tốt, sau khi ổn nó đá, thuê đội rẻ hơn để duy trì
 
Quy trình là thứ chúng nó đặt ra để sau khi đá đít mình thì có thằng khác vào hốt :sexy_girl:

Tôi còn nhớ năm xưa làm 1 cái dự án dày cộp business nhưng hoàn toàn ko có 1 tờ tài liệu, k có cả comment code, hỏi ra mới biết thằng outsource trc đây là 1 team khựa. Mấy anh khựa thâm như dái chó đánh hơi được bọn kh chuẩn bị đá đít nó để kiếm team rẻ hơn nên nó xoá sạch comment + huỷ luôn tài liệu. Tôi không biết ai bảo khôn lõi hay điếm lác gì chứ là tôi tôi cũng làm y bọn khựa, ra đời kiếm ăn ai điếm hơn thằng đó thắng :sexy_girl:

via theNEXTvoz for iPhone
lại nhớ hồi ở cty cũ, trư nghỉ lúc sắp bàn giao dự án cho KH vì cty k trả lương

thế là khi bàn giao trư cắt mấy folder platform, đưa đúng file code

đến hôm bàn giao thì chẳng ai chạy được , cuống cuồng gọi thì trư bắt trả hết lương rồi đưa (đang nợ 1 tháng + 1 tháng chuẩn bị tới ngày)


cuối cùng dự án toang, trư thì ôm full code sang bên công ty KH làm
bOkoCjY.gif
 
Mỗi buổi sáng muốn nghe ai đó : hey ! tui mới mò ra cái code này, làm cái pet này thú vị này. Ai join không làm workshop share chơi.
Thì chỉ nghe : Business hỏi cái business flow chỗ này sao ( vì Business còn không biết chính business logic của họ .... opensource mà ).
Em đang junior + outsource cũng ít quy trình, code xuề xòa, nhưng làm ở đây 2 năm lời nói được sếp trọng dụng, code từ bãi rác dần dần được góp ý và bớt rác. Đã có thêm quy trình tuyển thêm tester.

cũng bắt đầu mở rộng và đào sâu tech, bắt đầu perform lại, gặp các khách hàng lớn và khủng hơn, công ty tuyển thêm x2 nhân sự....

nhiều chuyện trải qua, em mới 21 tuổi nhưng nếu không thể lựa chọn môi trường thì em lựa chọn thay đổi môi trường của mình thui ( dù là tối tối về vẫn phài cày cuốc để mình không bị out trend).... i love this job :big_smile:
 
chả bù cho mình làm đúng 1 ngôn ngữ, tự base structure, tự viết ra chuẩn, tự định nghĩa convention. Git tự tạo nhánh tự merge, tự bấm deploy. Chủ động đấy, nhưng nhiều lúc cảm giác nghi ngờ những gì mình làm ra voãi. Đc cái output đầu ra chưa gây ra hậu quả gì, vẫn mang lại giá trị cho KH :shame:
 
Viết Unit test thì cx chỉ là chạy trên mtr dev/uat. Xong lên mtr Prod vẫn lỗi như thg:LOL: Cay nhất cái vụ lúc trên mtr dev/uat thì test tủng các thứ ok, đến hôm golive lên prod lại dính lỗi liên quan đến permission. Cay thật sự:LOL:
Có những thứ mình muốn test và nhét vô ut nhưng bất lực vì không có cách nào làm nữa cơ , push lên prob mà trứng dái đánh lô tô =]]
 
Quy trình là thứ chúng nó đặt ra để sau khi đá đít mình thì có thằng khác vào hốt :sexy_girl:

Tôi còn nhớ năm xưa làm 1 cái dự án dày cộp business nhưng hoàn toàn ko có 1 tờ tài liệu, k có cả comment code, hỏi ra mới biết thằng outsource trc đây là 1 team khựa. Mấy anh khựa thâm như dái chó đánh hơi được bọn kh chuẩn bị đá đít nó để kiếm team rẻ hơn nên nó xoá sạch comment + huỷ luôn tài liệu. Tôi không biết ai bảo khôn lõi hay điếm lác gì chứ là tôi tôi cũng làm y bọn khựa, ra đời kiếm ăn ai điếm hơn thằng đó thắng :sexy_girl:

via theNEXTvoz for iPhone
Contract đâu =]] điều khoản delivery các thứ đâu , hay căn bản cả 2 đều lôm côm như nhau
 
Outsource cũng có outsource this outsource that, nhưng mà outsource cho mấy công ty to to như bank hoặc vài cty khác k tiện kể tên, họ chia rất rõ ràng, core code microservice, thuần backend thì để nhân viên công ty code, outsource chỉ có lấy data rồi đẩy lên view, làm cả năm vẫn crud, nghiệp vụ đôi lúc hơi phức tạp tí, nhưng tóm gọn vẫn là crud, ci/cd redis kafka vẫn được dùng đấy nhưng mà k sâu.
 
Bất kì code nào k viết UT được nghĩa là code đó chưa đúng structure
Vd như function ấy dùng để get status trạng thái network của user .

Request của user bth sẽ đi qua vài layers network

Uat hay test không có những layer ấy

Test bằng niềm tin á ;)) . Cho lên prod mà cứ sợ mình fail ở một layers nào ấy :)))) . Chi phí trang bị cac layers ấy cho uat / test quá lớn nên bị gạt phăng đi . Stucture chả liên quan gì ở đây cả
 
Vd như function ấy dùng để get status trạng thái network của user .

Request của user bth sẽ đi qua vài layers network

Uat hay test không có những layer ấy

Test bằng niềm tin á ;)) . Cho lên prod mà cứ sợ mình fail ở một layers nào ấy :)))) . Chi phí trang bị cac layers ấy cho uat / test quá lớn nên bị gạt phăng đi . Stucture chả liên quan gì ở đây cả
Unit test thì mock những external dependency đấy rồi test logic trong code của mình. Uat thì có thể build mock system / contract API.

Sợ mỗi quả tạo nguyên object mới trong method hay dùng Reflection (vd Java), viết test bằng niềm tin :LOL:
 
Vd như function ấy dùng để get status trạng thái network của user .

Request của user bth sẽ đi qua vài layers network

Uat hay test không có những layer ấy

Test bằng niềm tin á ;)) . Cho lên prod mà cứ sợ mình fail ở một layers nào ấy :)))) . Chi phí trang bị cac layers ấy cho uat / test quá lớn nên bị gạt phăng đi . Stucture chả liên quan gì ở đây cả
bác viết unit test bản chất là dùng để test xử lý của cái hàm cần test, mấy cái bác nói nó ở layer/level khác thì mock thôi. chứ bộ bác viết unit test nhưng lại test full luồng luôn à mà bảo ko đc ?
 
bác viết unit test bản chất là dùng để test xử lý của cái hàm cần test, mấy cái bác nói nó ở layer/level khác thì mock thôi. chứ bộ bác viết unit test nhưng lại test full luồng luôn à mà bảo ko đc ?
data thì ai cũng mock dc , nhưng layer network request thì ....
 
data thì ai cũng mock dc , nhưng layer network request thì ....
Mã:
    public function testGetItem(): void
    {
        $response = app(ClientManager::class)
            ->getClient(OnejavClient::class)
            ->get('/item');

        $body = $response->parseBody();

        $item = app(CrawlingService::class)
            ->item($body->getData());

        $this->assertInstanceOf(OnejavItemEntity::class, $item);
        $this->assertEquals('/torrent/cvdx588', $item->url);
        $this->assertEquals('https://pics.dmm.co.jp/mono/movie/adult/h_086cvdx588/h_086cvdx588pl.jpg', $item->cover);
        $this->assertEquals('CVDX-588', $item->dvd_id);
        $this->assertEquals(7.0, $item->size);
Mã:
foreach (['new', 'popular'] as $endpoint) {
$clientMock = \Mockery::mock(ClientInterface::class);
$clientMock->shouldReceive('request')
->withSomeOfArgs(
Request::METHOD_GET,
'new'
        )
->andReturn(
new Response(
SymfonyResponse::HTTP_OK,
                [
'Content-Type' => self::CONTENT_TYPE,
                ],
file_get_contents(__DIR__ . '/../Fixtures/Onejav/' . $endpoint . '_1.html')
            )
        );
}

Mã:
$factoryMock = Mockery::mock(Factory::class);
$factoryMock->shouldReceive('enableRetries')
->andReturnSelf();
$factoryMock->shouldReceive('make')
->andReturn($this->clientMock);

app()->instance(Factory::class, $factoryMock);

Về nguyên tắc là không có gì không mock được.
Nếu code nào mà ta không mock được thì ... code đó có vấn đề
 
Mã:
    public function testGetItem(): void
    {
        $response = app(ClientManager::class)
            ->getClient(OnejavClient::class)
            ->get('/item');

        $body = $response->parseBody();

        $item = app(CrawlingService::class)
            ->item($body->getData());

        $this->assertInstanceOf(OnejavItemEntity::class, $item);
        $this->assertEquals('/torrent/cvdx588', $item->url);
        $this->assertEquals('https://pics.dmm.co.jp/mono/movie/adult/h_086cvdx588/h_086cvdx588pl.jpg', $item->cover);
        $this->assertEquals('CVDX-588', $item->dvd_id);
        $this->assertEquals(7.0, $item->size);
Mã:
foreach (['new', 'popular'] as $endpoint) {
$clientMock = \Mockery::mock(ClientInterface::class);
$clientMock->shouldReceive('request')
->withSomeOfArgs(
Request::METHOD_GET,
'new'
        )
->andReturn(
new Response(
SymfonyResponse::HTTP_OK,
                [
'Content-Type' => self::CONTENT_TYPE,
                ],
file_get_contents(__DIR__ . '/../Fixtures/Onejav/' . $endpoint . '_1.html')
            )
        );
}

Mã:
$factoryMock = Mockery::mock(Factory::class);
$factoryMock->shouldReceive('enableRetries')
->andReturnSelf();
$factoryMock->shouldReceive('make')
->andReturn($this->clientMock);

app()->instance(Factory::class, $factoryMock);

Về nguyên tắc là không có gì không mock được.
Nếu code nào mà ta không mock được thì ... code đó có vấn đề
Đề nghị thay code khác nhá , code này tởm vl

Code có vấn đề hoặc quy trình/ security của cty có vấn đề
 
Outsource
Tất nhiên bản chất nó không xấu. Nhưng tất cả đều phụ thuộc vào client, vào process của họ. Ta không có hoặc có rất ít voice vào project. Cái họ quan tâm là xong task.
( Những điều dưới đây có thể KHÔNG XẢY RA ở 1 số công ty nhưng e là phần lớn có )
  • Code không đặt nặng hoặc quá nặng vào quality. Miễn là chạy. Thậm chí UT không có, CI/CD không có, Code standard / review không có
  • Và mệt mỏi nhất : Kiến thức theo chiều ngang. Không tập trung vào 1 thứ bất kì.
Client A code language A, client B code language B.
Nhưng tất cả kiến thức đó chỉ là bề nổi, không có bất kì cái gì thật sự đào sâu vào !!!
Vậy ai sẽ master language A, ai sẽ là master backend với language B ???? Không ai !!!
- Có những client dù mang tiếng là "lớn" nhưng ... process flow không hề có !!! Hình dung release bằng việc manually & email các issues đã làm ( thậm chí PR k có ), thay vì đơn giản là git sau đó release và tự report qua các PRs đã merged !!! Không khác gì ăn lông ở lỗ !!!
Thậm chí debug bằng việc đục vào server qua SSH và ... code ???? !!!!

Fresher
Bản chất fresher là điều ai cũng trải qua. Nhưng khi fresher làm với outsource ( đặc biệt outsource ... trashed ) thì dần dần họ có thói quen xuề xòa. Nên khi educate các bạn này cực kì mệt mỏi
  • Em không cần code structure chi cho mất thời gian. Em chỉ cần code chạy là ok .
  • Em không cần biết technical này. Nó không serve cho business em đang làm !!!
  • Em không cần ..v.....v

Mệt mỏi ... rất là mệt mỏi !!!

Và rồi sẽ có ai đó nói : Sao anh không chọn cty khác mà chui vào chi rồi than.
Uh .... có lẽ "phận" ???

Mình đang master language A nhưng đẩy sang lang B thì khác nào fresher ? Mindset cho sự tư duy logic nhưng không cho knowledge về cái language đó.
Ta biết phải code Repo / Service classes .. Nhưng language B có xài repo đâu ? Có OOP đâu ...
Và vô hình từ master ta thành kẻ useless !!!

Kiến thức bao năm thu thập hao mòn dần. Cách duy nhất là tự làm pet project để study, grow up.
Khi có stucked muốn hỏi ai đó để cùng grow up thì ... no one around :)

Mỗi buổi sáng muốn nghe ai đó : hey ! tui mới mò ra cái code này, làm cái pet này thú vị này. Ai join không làm workshop share chơi.
Thì chỉ nghe : Business hỏi cái business flow chỗ này sao ( vì Business còn không biết chính business logic của họ .... opensource mà ).
Technical chỉ là "trò hề"....


Mệt mỏi ..... !!! T2 đầu tuần
Cuộc sống mà bạn, tập thích nghi thôi. Muốn thoát ra thì phải cố giỏi lên để nhảy, chứ những thứ bạn nói rất phổ biến, ko phải chỉ outsource, kể cả là product công ty nước ngoài vài chục triệu Biden cũng thế, nếu như sếp ko có kiến thức về code.

Khi mục tiêu chỉ làm sao chạy và sếp tổng push theo hướng thế thì chỉ được có thế thôi. Bạn còn có thời gian dạy người khác còn tốt chán. Chứ như mình thời gian fix bug cho nó tử tế còn ko có. Ví dụ có cái Task A nó gọi Service1 với Service2, cả 2 service cùng write xuống database, mà code nó ko handle lỗi cho tử tế, độc 1 câu try catch cho cả Task A. Thế là mỗi lần Service2 lỗi thì Service1 vẫn ghi data rác xuống database. Và sau khi báo cáo lên thì được suggest cách fix là viết 1 cái service chạy định kỳ clean up data rác chứ ko sửa code. Ngắn gọn là patch, patch và patch, hệ thống có những patch gì có khi làm cả năm rồi cũng ko chắc biết hết. May là lượng users rất ít.

Technical là "trò hề" đến bây giờ bạn mới nhận ra là do nhận định sai về mục tiêu của công việc. Thật ra mục tiêu cuối ko phải làm ngon hay không, mà là, làm cho cái thằng trả tiền cho mình nó happy hay không. Hướng tới technical thì chỉ làm tập khách hàng technical happy thôi. Còn những tập khách hàng khác thì hình thức, rồi kỹ năng nói chuyện, bao biện, nói dối, thảo mai có khi mới là những thứ quan trọng hơn bạn ạ.

Thích nghi với môi trường xung quanh mới là thứ quan trọng nhất. Nếu xung quanh bạn lởm thì bạn cũng chỉ cần code chạy được là được, xong sớm về sớm. Và cũng ko cần mất thời gian đi dạy những người khác nếu họ thuộc thành phần khó đào tạo. Nếu cần quality tốt hơn chút và bạn là người chịu trách nhiệm về quality thì cứ giao cho bọn nó viết hàm này hàm kia, rồi sau bạn tổng hợp lại. Refactor bad code nhiều trình vẫn lên nhanh như thường.
 

Thống kê chủ đề

Ngày tạo
SoulEvilX,
Người trả lời cuối
never_can_tell,
Trả lời
123
Lượt xem
13.862
Quay lại
Lên đầu trang