Bạn có thể sử dụng ngôn ngữ không được công ty bạn hỗ trợ cho một số nhiệm vụ không?


27

Tôi làm việc cho một công ty hỗ trợ một số ngôn ngữ: COBOL, VB6, C # và Java.
Tôi sử dụng các ngôn ngữ đó cho công việc chính của mình, nhưng tôi thường thấy mình viết mã một số chương trình nhỏ (ví dụ tập lệnh) trong Python vì tôi thấy nó là công cụ tốt nhất cho loại nhiệm vụ đó.

Ví dụ: Một nhà phân tích cung cấp cho tôi một tệp CSV phức tạp để điền vào một số bảng DB, vì vậy tôi sẽ sử dụng Python để phân tích cú pháp và tạo tập lệnh DB.

Có vấn đề gì vậy?
Vấn đề chính tôi thấy là một vài phần của các kịch bản nhanh và bẩn này đang dần đạt được tầm quan trọng và:

  1. Công ty của tôi không hỗ trợ Python
  2. Chúng không được kiểm soát phiên bản (tôi sao lưu chúng theo cách khác)
  3. Đồng nghiệp của tôi không biết Python

Các nhà phân tích thậm chí đã bắt đầu tham khảo chúng trong email ("khởi chạy tập lệnh xuất ..."), vì vậy chúng cần thiết thường xuyên hơn tôi nghĩ ban đầu.

Tôi nên thêm rằng các kịch bản này chỉ là các tiện ích không phải là một phần của dự án chính; họ chỉ đơn giản là giúp hoàn thành các nhiệm vụ tầm thường trong thời gian ngắn hơn. Đối với nhiệm vụ nhỏ của riêng tôi, họ giúp đỡ rất nhiều.

Nói tóm lại, nếu tôi là một người trúng xổ số bị tai nạn , đồng nghiệp của tôi sẽ cần phải giữ cho dự án tồn tại mà không có các kịch bản đó; họ sẽ dành nhiều thời gian hơn để sửa lỗi CSV bằng tay chẳng hạn.

Đây có phải là một kịch bản phổ biến? Tôi có làm điều gì sai? Tôi nên làm gì?


22
Nếu đồng nghiệp của bạn không thể tìm ra một kịch bản chỉ vì nó ở ngôn ngữ khác, bạn sẽ gặp vấn đề lớn hơn
CaffGeek

1
Tôi đồng ý với Chad. Python gần với mã giả như nó nhận được.
Công việc

2
@Chad eheh đẹp một nhưng vấn đề có thể là khác; Python sdk không phải là một phần của cài đặt mặc định của máy phát triển. Để cài đặt nó, tôi đã trả rất nhiều cà phê cho đúng sysadmin;).
systempuntoout

3
@systempuntoout, các nhà phát triển sẽ có thể cài đặt bất cứ thứ gì họ muốn trên máy tính của họ trong giới hạn pháp lý. Vì vậy, PowerShell được cài đặt sẵn trên Windoze và tôi đã thử thay thế nó bằng Python, nhưng nó không giống nhau. Các trường hợp cạnh tát vào mặt tôi mỗi khi tôi cố gắng làm điều gì đó đơn giản. Python hoàn thành công việc và nếu máy bay không người lái của công ty không làm được điều đó - quá tệ!
Công việc

1
Đặt chúng trong kiểm soát nguồn. Chỉ là một góc nhỏ ở đâu đó, nhưng đặt chúng vào.

Câu trả lời:


42

Bạn cần phải làm cho tình huống được chính thức hóa vì nó không thực sự phải đến thời điểm này. Tuy nhiên, những điều này xảy ra nên bạn cần giải thích với sếp rằng bạn đã tạo các tập lệnh này cho mục đích cá nhân, nhưng chúng đã "thoát" vào lưu thông rộng hơn. Hãy thừa nhận (nếu cần thiết) rằng bạn đã có lỗi vì đã không chú ý điều này sớm hơn.

Ít nhất các tập lệnh nên được đặt dưới sự kiểm soát nguồn "chỉ trong trường hợp" - sau đó ít nhất là nếu bạn không có sẵn (vì lý do gì đó), đồng nghiệp của bạn sẽ có quyền truy cập vào tập lệnh.

Sau đó, bạn cần phải thuyết phục sếp của mình rằng Python là cách để thực hiện những điều này hoặc chấp nhận rằng bạn sẽ phải viết lại chúng bằng ngôn ngữ được hỗ trợ. Nếu chi phí ghi lại các tập lệnh và giáo dục đồng nghiệp của bạn bằng Python thấp hơn so với việc viết lại, bạn thậm chí có thể thắng được cuộc tranh luận.


8
+1, đồng ý. Tôi có thể thấy làm thế nào loại điều này có thể rất dễ dàng xảy ra nhưng nó không nhất thiết là "một điều xấu" hoặc "một sai lầm" trên một phần của OP. Có lẽ nó đã bắt đầu khi OP được giao nhiệm vụ với một dự án nhỏ "một lần" và anh ấy đã chọn một công cụ tốt, python, để nhanh chóng dọn bàn làm việc của dự án-- nhưng sau đó lại thấy mình thực hiện nhiệm vụ một lần nữa ...
Angelo

Tôi đang sống điều này ngay bây giờ. Tôi đã hack một bằng chứng về khái niệm trong Python để giúp tôi tìm ra một số mã C cũ kỹ xảo quyệt và thực sự có toàn bộ mớ hỗn độn hoạt động như một sự thay thế cho mã C cũ, nhưng được yêu cầu viết lại cho C sau khi các thay đổi mới hoạt động . Tôi đã quản lý để giữ một số Python xung quanh, tôi đã viết lên ứng dụng web nhỏ bằng Python + Flask và người quản lý của tôi và tôi sử dụng nó liên tục để phân tích các hoạt động của mã C đang chạy. Vì vậy, vẫn còn hy vọng rằng Python sẽ chính thức được thông qua ở đây. :)
John Gaines,

6

Tôi không thể cho bạn một câu trả lời đầy đủ về những gì bạn nên làm. Tôi chỉ có thể đưa ra một đề nghị duy nhất bạn có thể sử dụng để bắt đầu với:

Kiểm tra các tập lệnh vào một kho lưu trữ mà tất cả các nhà phát triển (bắt buộc) có thể truy cập. Nhưng hãy chắc chắn lưu ý rằng bạn đã viết những đoạn script này cho mục đích riêng của mình , tức là để thực hiện một nhiệm vụ mà bạn được giao. Sau đó thêm rằng bạn chỉ kiểm tra các tập lệnh này để cho phép người khác có lợi thế sử dụng chúng.

Sau đó, bạn sẽ chỉ cần xem người khác phản hồi như thế nào.


Nhận xét chúng như bất cứ khi nào có thể. Giúp nhanh chóng xem những gì đang diễn ra, thay vì cố gắng tìm hiểu xem bạn đang làm cái quái gì.
JD Frias

5

Tôi đã gặp vấn đề tương tự nơi tôi làm việc. Tôi nghe thấy "PHP là gì?" nhiều năm về trước. Họ không hiểu hoặc quan tâm để học bất cứ điều gì bên ngoài ngăn xếp MS. Nếu python là công cụ phù hợp cho công việc, tôi chỉ cần nói với các giám sát viên của mình về nó và sẵn sàng để so sánh và giải thích lý do tại sao python là lựa chọn đúng đắn. Nó sẽ gây nản lòng, nhưng tôi nghĩ hầu hết sẽ đồng ý python là một lựa chọn tốt cho thao tác văn bản.


5

Điều đầu tiên bạn cần làm là nói chuyện với nhóm và sếp của bạn. Ngay bây giờ, bạn có một yếu tố xe tải rất lớn (nếu bạn bị xe tải đâm, không ai khác có thể dễ dàng duy trì tập lệnh của bạn). Có vẻ như có các tập lệnh để thực hiện các tác vụ này rất quan trọng, nhưng điều quan trọng nữa là bất kỳ ai cần có thể chỉnh sửa và duy trì các tập lệnh này. Bạn cần giải thích cách sử dụng Python làm tăng giá trị - cách nó tiết kiệm thời gian, công sức, tài nguyên, tiền bạc, v.v.

Thứ hai, đưa nó vào kiểm soát phiên bản của dự án. Hiện nay. Không có gì bạn sản xuất cho một dự án nên nằm ngoài tầm kiểm soát phiên bản của dự án đó.

Hãy chuẩn bị cho phản ứng dữ dội - mọi người thường không thích thay đổi. Tự mình chạy, sử dụng các công nghệ không được hỗ trợ và chưa biết (cho nhóm / tổ chức) là một ý tưởng tồi, mà không tham khảo ý kiến ​​của các nhà phát triển khác và xác định cách tốt nhất (cho dự án, không chỉ cho bạn) để tự động hóa các tác vụ này cho mọi người để sử dụng.

Tôi nghĩ rằng đây có lẽ là một trường hợp tốt của

Yêu cầu sự tha thứ dễ dàng hơn là xin phép.

Nghe có vẻ như bạn đã hoàn thành công việc, nhưng bạn sẽ phải đối phó với những hậu quả bây giờ.


4
"" "Tự mình chạy, sử dụng các công nghệ không được hỗ trợ và chưa biết (cho nhóm / tổ chức) là một ý tưởng tồi, mà không hỏi ý kiến ​​ít nhất là các nhà phát triển khác và xác định cách tốt nhất (cho dự án, không chỉ cho bạn) nhiệm vụ cho mọi người sử dụng. "" "- Tôi không đồng ý. Joel Spolsky sẽ không thể tạo VBA cho Excel nếu anh ta đi theo con đường này. Đây không phải là một ví dụ độc đáo.
Công việc

@Job Tôi không thể nói về hoàn cảnh chính xác của sự phát triển VBA cho Excel, nhưng điều đó có vẻ như R & D hoặc tạo mẫu tiên tiến có liên quan. Có sự khác biệt giữa hệ thống R & D và sản xuất tiên tiến. Bạn không bao giờ có thể làm việc trong bóng tối, một mình và bị cô lập khỏi nhóm của bạn. Tôi không phản đối việc giới thiệu các công nghệ mới, nhưng điều quan trọng là mọi người đều biết những công nghệ mới này là gì, lợi ích của chúng, nhược điểm của chúng và cách chúng được triển khai trong một dự án. Làm một cái gì đó độc tấu và trong bóng tối nói chung là một ý tưởng tồi và đặt một dự án có nguy cơ.
Thomas Owens

@Thomas Tôi là nhóm
systempuntoout

@systempuntoout Điều đó có thể đúng bây giờ. Nhưng nó sẽ được trong 6 tháng? Hay một năm? Phát triển phần mềm, ngay cả khi bạn hiện đang ở một mình, không bao giờ được coi là một nhiệm vụ đơn lẻ - bạn cần nghĩ về nhà phát triển hoặc người duy trì công việc trong tương lai.
Thomas Owens

@Thomas bạn nói đúng; như đã nói trong một số nhận xét ở trên, tôi đã chuyển nhiều tập lệnh bằng C # (ngôn ngữ hỗ trợ của Công ty)
systempuntoout

3

Quy tắc ngón tay cái của tôi là:

Bất cứ điều gì có khả năng ảnh hưởng đến công việc của người khác nên được thảo luận với đồng nghiệp và cấp trên của bạn càng sớm càng tốt.

Nhưng, nếu chỉ dành cho bạn và bạn, miễn là nó không gây thiệt hại cho cơ sở hạ tầng hoặc bảo mật của công ty bạn, bạn có thể tự do làm những gì bạn muốn để hoàn thành công việc.


1
Làm thế nào để bạn biết nếu nó cho bạn hoặc cho người khác? Tại nơi làm việc, bạn có thể được chỉ định lại hoặc bạn có thể nghỉ việc. Bất cứ thứ gì bạn sản xuất tại nơi làm việc (trong hầu hết các trường hợp) không phải là của bạn, nhưng nó thuộc về công ty hoặc khách hàng. Nếu họ không thể hiểu hoặc duy trì nó, thời gian đã mất là thời gian bạn dành để phát triển nó cộng với thời gian người khác cần để hiểu nó (và có lẽ phát triển một giải pháp mới). Tất cả mọi thứ được sản xuất tại nơi làm việc nên được coi là một cái gì đó cho người khác.
Thomas Owens

1
Nếu trong thời gian bạn làm công việc đó, nó làm tăng năng suất cá nhân của bạn, thì công ty đã nhận được giá trị từ kịch bản đó và nó không lãng phí, bất kể sau này nó có được người khác sử dụng lại hay không.
Nate CK

@Thomas Owens - thường có các nhiệm vụ một lần - sau khi hoàn thành, chúng đã hoàn thành - hoặc các bản hack và kiểm tra của riêng bạn mà bạn thực hiện trong quá trình phát triển để vượt qua điều gì đó - một lần nữa, khi chúng được thực hiện , họ đã hoàn thành - hiệu quả một lần.
Vector

Và nếu người khác cần thực hiện nhiệm vụ tương tự hoặc tương tự sau này (điều này rất có thể, theo kinh nghiệm của tôi)? Họ phải phát minh lại bánh xe. Đó là một điều để có một nguyên mẫu bỏ đi để giải quyết vấn đề hoặc học một thư viện hoặc khung. Đó là một cách khác để dành thời gian phát triển một công cụ để thực hiện một nhiệm vụ và sau đó chỉ cần loại bỏ nó. Các loại công cụ mà câu hỏi đang đề cập là dành cho các nhiệm vụ có khả năng phải thực hiện nhiều lần và nếu người khác thực hiện các nhiệm vụ đó, họ sẽ lãng phí thời gian bằng cách không có công cụ hỗ trợ họ (hoặc cần phát triển công cụ đó) .
Thomas Owens

@Thomas Owens - được cấp - bao gồm trong những gì tôi đã nói 'có khả năng ảnh hưởng đến công việc của người khác'.
Vector

2

Bạn có hai lựa chọn:

  1. Làm cho nó trở thành một tiêu chuẩn
  2. Dịch sang một công cụ tiêu chuẩn

Tùy thuộc vào tổ chức số 1 có thể là thách thức (sau khi tất cả giới hạn danh sách các công nghệ tiêu chuẩn sẽ tránh được sự bùng nổ kết hợp của các yêu cầu kỹ năng đào tạo và hỗ trợ).

Tùy chọn thứ hai sẽ giúp bộ kỹ năng của bạn và bạn có thể tìm thấy bên thứ ba (và có thể là nguồn mở với giấy phép thân thiện về mặt thương mại) để thực hiện một số công việc khó khăn. Ví dụ: tìm kiếm "LINQ to CSV" sẽ nhận được một số lượt truy cập hữu ích.

Các công cụ dành cho nhà phát triển (IDE, trình biên dịch) của BTW, VB6 không được hỗ trợ (thậm chí không phải là sửa lỗi bảo mật) nên có khả năng là tiêu chuẩn cần cập nhật. (Thời gian chạy VB6 được hỗ trợ như một phần của tập tin và được bao gồm trong bản cài đặt của các phiên bản Windows hiện tại). Điều này có lẽ có thể được sử dụng như một người trợ giúp để tiếp cận # 1: bộ công cụ tiêu chuẩn cần phải tăng mục tiêu di động vì phụ thuộc vào nhà cung cấp.


2

Nếu bạn được giao một nhiệm vụ và đưa ra cách duy nhất bạn có thể hoàn thành đúng hạn, bạn thực sự không có lựa chọn nào khác. Tôi nghĩ thật khôn ngoan khi để những người phụ trách biết bạn đang làm gì. Bạn không nên đi ra ngoài kiểm soát nguồn được yêu cầu (trừ khi hoàn toàn không hoạt động?) Kiểm tra và tài liệu.

Đôi khi một công ty có thể phải để một nhà phát triển duy nhất bắt đầu tìm kiếm một lĩnh vực phát triển mới. Thật không may, mã có thể đi vào sản xuất nhanh hơn bất kỳ ai khác có thể tăng tốc.


Dù bạn có tin hay không, sau khi đăng câu hỏi này và nhận được rất nhiều lời đề nghị sâu sắc, tôi đã chuyển một số tập lệnh trong C #.
systempuntoout

1

Chà, tôi phải thừa nhận rằng làm việc với 20 ngôn ngữ khác nhau, rất nhiều.

Bạn có một tập lệnh Bash gọi tập lệnh Python gọi tập lệnh Perl gọi tập lệnh nhị phân Java gọi C dll ...

Sau đó, một cái gì đó đập vào quạt trong toàn bộ đường ống, và bạn đi qua - WTH LÀ ĐẠT KODEZ? Đặc biệt là trong Perl ... Và gỡ lỗi đơn giản, giả sử, vấn đề mã hóa, biến thành một mớ hỗn độn ác mộng. Bạn không thể gỡ lỗi 5 trong số 7 ngôn ngữ một cách hiệu quả và nó biến thành một nỗi đau thực sự.

Hoặc bạn phải thêm một thay đổi đơn giản, nhưng bạn tạo ra 10 lỗi vì Perl có gotchas, Java có gotchas, v.v.

Và chuỗi 7+ ngôn ngữ đó bắt đầu từng bước một.

Hãy cẩn thận, đây là những con rồng ...


Làm việc với công cụ phù hợp không hôi thối, đó là cách xây dựng mọi thứ của Unix. Cách Windows là khởi chạy Excel. Câu chuyện cũ về búa và đinh ...
mouviciel

1

Nếu đó là những công cụ bạn sử dụng cho chính mình, bạn có thể tự do làm bất cứ điều gì giúp bạn làm việc hiệu quả hơn.

Trên thực tế, bạn nên được khuyến khích để thực hiện và sử dụng các công cụ như vậy, cuối cùng sẽ trở thành một phần mở rộng của cánh tay của bạn.

Cuối cùng, họ sẽ nhận ra tầm quan trọng của việc có các công cụ như vậy, bất kể chúng được viết bằng ngôn ngữ nào và sẽ bắt đầu thực hiện trong môi trường làm việc của chúng.


Trong công việc, tôi không nghĩ bạn nên coi bất cứ điều gì là "cho chính mình". Chúng là những công cụ để hỗ trợ một dự án và có một nhóm làm việc trong dự án đó. Bạn có thể bỏ việc, bị sa thải, được chỉ định lại hoặc bỏ mạng vào ngày mai và bây giờ trách nhiệm của bạn thuộc về người khác. Nếu họ không thể sử dụng và bảo trì các công cụ của bạn, thì công sức bỏ ra đã bị lãng phí (làm mất tiền của công ty).
Thomas Owens

3
@Thomas: Tôi coi kịch bản tôi làm cho bản thân và sử dụng cá nhân là của tôi. Chúng là một phần mở rộng của cánh tay và tâm trí của tôi. Nó giống như nói "Bạn không thể nghĩ như thế này, bạn chỉ có thể nghĩ như thế". Tôi nghĩ nó không quan trọng với những gì bạn nghĩ, miễn là bạn có thể làm những gì bạn được yêu cầu.
Jose Faeti

Điều đó, với tôi, là vô cùng thiếu chuyên nghiệp và phi đạo đức. Một trong những trách nhiệm đạo đức của một kỹ sư phần mềm là hành động vì lợi ích tốt nhất của khách hàng và nhà tuyển dụng, miễn là nó không gây rủi ro cho công chúng. Một trách nhiệm đạo đức khác là công bằng và hỗ trợ đồng nghiệp. Giữ các công cụ của bạn cho chính bạn khi chúng là cho một dự án vi phạm cả hai nguyên tắc này.
Thomas Owens

3
@Thomas: Tôi đã không nói về việc viết một ngôn ngữ lập trình cụ thể cho dự án. Tôi đang nói về một cái gì đó như "đổi tên 10000 tệp bằng một lệnh", một cái gì đó mà các lập trình viên câm làm từng cái một, trong khi tôi có thể làm điều đó với một kịch bản tự tạo. Tôi không tương tác với bất cứ điều gì đặc biệt liên quan đến dự án. Chúng KHÔNG phải là công cụ dành riêng cho dự án.
Jose Faeti

3
@Thomas: Vấn đề là không biết liệu một tiện ích như vậy có tồn tại hay không, nhưng biết cách tự động hóa công việc của bạn bằng cách tạo ra các tiện ích đó. Bạn sẽ luôn cần một số kịch bản mới để hỗ trợ bạn trong các công việc hàng ngày. Buộc một lập trình viên sử dụng các công cụ hoặc công cụ hiện có do người khác tạo ra giống như cắt cánh cho một con chim. Tôi không thể tưởng tượng làm việc ở một nơi như vậy. Dù sao tôi hiểu điểm của bạn. Câu trả lời của tôi được nêu ra vì OP đã ở trong tình huống đó, tôi nghĩ tốt nhất là chia sẻ suy nghĩ về việc tạo / sử dụng một công cụ cụ thể với tất cả các đội ngay khi cần, sau đó quyết định.
Jose Faeti

1

Khi bạn được yêu cầu viết mã làm sth., Ngôn ngữ thường được chỉ định hoặc ngụ ý (quy tắc trong các tập đoàn).

Nhưng khi bạn phải thực hiện một số tác vụ một lần, chẳng hạn như nhập dữ liệu vào DB, bạn có thể tự do chọn công cụ phù hợp nhất với mình, vì bạn phải làm điều gì đó chính xác và nhanh chóng, và kết quả rất quan trọng, không phải là các công cụ.

Vì vậy, tôi sẽ sử dụng quy tắc đó:

1) Nếu bạn được yêu cầu thực hiện một số tác vụ, chẳng hạn như nhập dữ liệu, tôi sẽ sử dụng các công cụ / ngôn ngữ / v.v. đó sẽ là thuận tiện nhất cho tôi và sẽ là nhanh nhất cho nhiệm vụ.

2) Nếu bạn được yêu cầu viết công cụ thực hiện một số tác vụ, chẳng hạn như nhập một số dữ liệu, tôi sẽ thảo luận về ngôn ngữ / công cụ nào sẽ sử dụng với người quản lý (ngoại trừ khi tôi sử dụng ngôn ngữ được ngụ ý tiêu chuẩn, ví dụ như khi công ty sử dụng [gần như ] chỉ Java).

3) Nếu tác vụ dường như là một lần, nhưng nó có thể lặp lại, bạn nên nói chuyện với người quản lý để thay đổi từ 1) thành 2) và viết lại từ ngôn ngữ ưa thích của bạn sang ngôn ngữ được công ty hỗ trợ.


0

Tôi cho rằng bạn không ở vị trí để quyết định (nếu không bạn sẽ không đặt câu hỏi). Sếp của bạn nghĩ gì về vấn đề này? Bạn nên nói chuyện với anh ta và cố gắng thuyết phục anh ta rằng Python là con đường để đi ...

Tất nhiên, vấn đề là về những gì sẽ xảy ra khi bạn rời đi. Không thể duy trì mã có lẽ là một lý do đủ tốt để ngừng sử dụng Python. Hoặc bạn có thể bắt đầu giáo dục đồng nghiệp của mình bằng ngôn ngữ này ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.