회사에서 지원하지 않는 언어를 일부 작업에 사용하는 것이 좋습니까?


27

COBOL, VB6, C # 및 Java와 같은 여러 언어를 지원하는 회사에서 일하고 있습니다.
필자는 일차 작업에 이러한 언어를 사용하지만, 종종 해당 유형의 작업에 가장 적합한 도구라는 것을 알았 기 때문에 파이썬에서 사소한 프로그램 (예 : 스크립트)을 코딩하는 경우가 종종 있습니다.

예를 들어, 분석가는 일부 DB 테이블을 채우는 복잡한 CSV 파일을 제공하므로 Python을 사용하여 구문 분석하고 DB 스크립트를 작성합니다.

뭐가 문제 야?
내가 볼 수있는 주요 문제는 이러한 빠르고 더러운 스크립트의 일부가 천천히 중요성을 얻고 있다는 것입니다.

  1. 우리 회사는 파이썬을 지원하지 않습니다
  2. 그들은 버전 제어되지 않습니다 (다른 방법으로 백업합니다)
  3. 내 동료들은 파이썬을 모른다

분석가들은 이메일을 통해 이메일을 참조하기 시작했으며 ( "내 보낸 스크립트 시작 ..."), 처음에 생각했던 것보다 더 자주 필요합니다.

이 스크립트는 기본 프로젝트의 일부가 아닌 유틸리티 일뿐입니다. 짧은 시간 안에 간단한 작업을 수행하는 데 도움이됩니다. 내 자신의 작은 작업을 위해 그들은 많은 도움이됩니다.

나는 추첨 우승자 인 경우 즉, 사고를 할 수있는 , 내 동료는 그 스크립트없이 살아 프로젝트를 유지해야합니다; 예를 들어 CSV 오류를 직접 수정하는 데 더 많은 시간을 할애합니다.

이것이 일반적인 시나리오입니까? 내가 뭔가 잘못하고 있습니까? 어떻게해야합니까?


22
동료가 다른 언어로 된 스크립트 만 알아낼 수 없다면 더 큰 문제가 있습니다
CaffGeek

1
차드에 동의합니다. 파이썬은 의사 코드와 비슷합니다.
Job

2
@Chad eheh 멋진 하나지만 문제는 다른 것일 수 있습니다. Python SDK는 개발 시스템의 기본 설치의 일부가 아닙니다. 그것을 설치하기 위해 올바른 sysadmin에게 많은 커피를 지불했습니다.).
systempuntoout

3
@systempuntoout, 개발자는 합법적 인 범위 내에서 컴퓨터에 원하는 모든 것을 설치할 수 있어야합니다. 따라서 PowerShell은 Windoze에 사전 설치되어 있으며 Python으로 대체하려고 시도했지만 동일하지는 않습니다. 간단한 일을하려고 할 때마다 가장자리 케이스가 얼굴을 때립니다. 파이썬은 일을 끝내고 회사 드론이 그것을 얻지 못하면 너무 나빠집니다!
Job

1
그것들을 소스 컨트롤에 넣으십시오. 어딘가에 작은 구석이지만, 넣습니다.

답변:


42

실제로이 시점에 도달해서는 안되는 상황을 공식화해야합니다. 그러나 이런 일이 일어나므로 상사에게 개인적으로 사용하기 위해이 스크립트를 만들었 음을 설명해야하지만 더 큰 순환으로 빠져 나간 것입니다. 더 빨리 그의주의를 끌지 않은 것에 대해 당신이 잘못되었다는 것을 인정하십시오.

최소한 스크립트는 "경우에 따라"소스 제어하에 두어야합니다. 그런 다음 최소한 어떤 이유에서든 동료가 스크립트에 액세스 할 수없는 경우에는 스크립트를 사용해야합니다.

그런 다음 상사에게 파이썬이 이들을위한 길이라고 확신 시키거나 지원되는 언어로 다시 작성해야한다는 사실을 받아 들여야합니다. 스크립트를 문서화하고 동료들에게 파이썬으로 교육하는 데 드는 비용이 재 작성 비용보다 낮 으면 논쟁에서 이길 수도 있습니다.


8
+1, 동의합니다. 이런 종류의 일이 매우 쉽게 일어날 수있는 방법을 알 수 있지만 OP의 일부에서 반드시 "나쁜 일"또는 "실수"는 아닙니다. OP가 "일회용"미니 프로젝트로 임무를 맡았을 때 시작되었을 때 그는 프로젝트의 책상을 빨리 정리하기 위해 좋은 도구 인 python을 선택했습니다.
Angelo

나는 지금 이것을 살고 있습니다. 나는 파이썬의 개념 증명을 해킹하여 낡은 오래된 C 코드를 알아내는 데 도움을 받았고 실제로는 오래된 C 코드를 대신하여 전체 혼란을 일으켰지 만 새로운 변경 작업을 한 후에 C로 다시 작성하라는 요청을 받았다. . 나는 파이썬을 관리하고 Python + Flask와 내 관리자를 사용하여 작은 웹 응용 프로그램을 작성했으며 실행중인 C 코드 작업을 분석하는 데 끊임없이 사용합니다. 따라서 파이썬이 여기에서 공식적으로 채택되기를 희망합니다. :)
John Gaines Jr.

6

나는 당신이 무엇인지에 전체 답변을 줄 수 있어야 할을. 나는 당신이 시작할 수있는 단 하나의 제안을 줄 수 있습니다 :

스크립트를 모든 (필수) 개발자가 액세스 할 수있는 저장소로 체크인하십시오. 그러나 먼저이 스크립트를 자신 목적, 즉 주어진 작업을 수행하기 위해 작성했다는 사실에 유의하십시오 . 그런 다음 다른 사용자가 스크립트를 사용할 수 있도록이 스크립트 만 체크인한다고 추가하십시오.

그 후에는 다른 사람들이 그에 어떻게 반응하는지 알아야합니다.


가능할 때마다 의견을 말하십시오. 도대체 무슨 일을하는지 알아 내지 않고 진행 상황을 빠르게 확인할 수 있습니다.
JD Frias

5

나는 일할 때 비슷한 문제에 부딪쳤다. "PHP 란 무엇입니까?" 몇 년 전에 그들은 MS 스택 이외의 것을 배우거나 이해하지 않습니다. 파이썬이 작업에 적합한 도구라면 관리자에게 알려주고 파이썬이 왜 올바른 선택인지에 대해 많은 비교와 설명을 할 수 있습니다. 실망 스럽지만 파이썬이 텍스트 조작에 좋은 선택이라고 생각합니다.


5

가장 먼저해야 할 일은 팀 및 상사와 대화하는 것입니다. 지금, 당신은 큰 트럭 요인이 있습니다 (트럭에 맞으면 다른 사람이 쉽게 스크립트를 유지할 수 없습니다). 이러한 작업을 수행하는 스크립트가있는 것처럼 보이지만 이러한 스크립트를 편집하고 유지 관리해야하는 사람도 중요합니다. 파이썬을 사용하여 가치를 더하는 방법, 시간, 노력, 자원, 돈 등을 절약하는 방법을 설명해야합니다.

둘째, 프로젝트의 버전 관리로 가져옵니다. 지금. 프로젝트를 위해 제작 한 것은 그 프로젝트의 버전 관리를 벗어나서는 안됩니다.

사람들은 일반적으로 변화를 좋아하지 않습니다. 지원되지 않고 알려지지 않은 (팀 / 조직에) 기술을 사용하여 스스로 도망가는 것은 적어도 다른 개발자와상의하고 모든 사람을 위해 이러한 작업을 자동화하는 최선의 방법을 결정하지 않고 나쁜 생각이었습니다. 쓰다.

아마 이것이 좋은 사례라고 생각합니다

허가를받는 것보다 용서를 구하는 것이 더 쉽습니다.

당신이 일을 마치는 것처럼 들리지만, 이제 그 영향을 다루어야 할 것입니다.


4
"" "지원되지 않고 알려지지 않은 (팀 / 조직에) 기술을 사용하여 스스로 실행하는 것은 적어도 다른 개발자와상의하고 이들을 자동화하는 최선의 방법 (프로젝트 만이 아닌)을 결정하지 않은 한 나쁜 생각이었습니다. 모든 사람이 할 일 "" "-동의하지 않습니다. Joel Spolsky는이 경로를 사용하면 Excel 용 VBA를 만들 수 없었습니다. 이것은 독특한 예가 아닙니다.
Job

@Job Excel 용 VBA 개발의 정확한 상황에 대해 말할 수는 없지만 고급 R & D 또는 프로토 타이핑과 같은 소리가 들었습니다. 고급 R & D와 프로덕션 시스템에는 차이가 있습니다. 어둠 속에서 혼자 일할 수 없으며 팀과 격리 할 수 ​​없습니다. 나는 새로운 기술을 도입하는 것에 반대하지 않지만, 모든 사람들이이 새로운 기술이 무엇인지, 그들의 이점, 단점 및 프로젝트에서 어떻게 전개되고 있는지를 아는 것이 중요합니다. 혼자서 어둠 속에서 무언가를하는 것은 일반적으로 나쁜 생각이며 프로젝트를 위험에 빠뜨립니다.
Thomas Owens

나는 팀이다 @Thomas
systempuntoout

@systempuntoout 그것은 사실 일 수 있습니다. 그러나 6 개월 안에 있을까요? 아니면 1 년? 현재 혼자 인 경우에도 소프트웨어 개발은 ​​단독 작업으로 간주되어서는 안됩니다. 향후 개발자 또는 작업 관리자를 생각해야합니다.
Thomas Owens

@Thomas 당신이 맞습니다; 위의 일부 의견에서 말했듯이, 나는 많은 스크립트를 C # (회사 지원 언어)으로 포팅했습니다
systempuntoout

3

엄지 손가락의 규칙은 다음과 같습니다.

잠재적으로 다른 사람의 작업에 영향을 미치는 것은 동료 및 상사와 최대한 빨리 논의해야합니다.

그러나 회사의 인프라 나 보안에 아무런 영향을 미치지 않는 한, 귀하와 귀하만을위한 것이면 , 업무를 완수하기를 원하는대로 자유롭게 할 수 있습니다.


1
그것이 당신이나 다른 사람들을위한 것인지 어떻게 알 수 있습니까? 직장에서 재 할당을 받거나 종료 할 수 있습니다. 직장에서 생산하는 것 (대부분의 경우)은 본인이 아니지만 회사 나 고객의 소유입니다. 그들이 그것을 이해하거나 유지할 수 없다면, 잃어버린 시간은 그것을 개발하는 데 걸린 시간과 다른 사람이 그것을 이해하는 데 걸리는 시간 (그리고 아마도 새로운 솔루션을 개발하는 것)입니다. 직장에서 생산 된 모든 것은 다른 사람을위한 것으로 취급되어야합니다.
Thomas Owens

1
만약 당신이 그 일을하면서 자신의 개인 생산성을 향상 시켰다면, 회사는 이미 그 대본에서 가치를 얻었고 나중에 다른 사람이 다시 사용할 것인지에 관계없이 낭비하지 않았습니다.
네이트 CK

@Thomas Owens-일회성 작업 (한 번 완료된 후 완료된 작업) 또는 개발 과정에서 끈적 끈적한 문제를 해결하기 위해 수행하는 자체 해킹 및 테스트가 종종 있습니다. , 그들은 효과적으로-처분 할 수 있습니다.
벡터

그리고 누군가 다른 사람이 나중에 동일하거나 유사한 작업을 수행 해야하는 경우 (내 경험에 따라)? 그들은 바퀴를 재발 명해야합니다. 문제를 해결하거나 라이브러리 또는 프레임 워크를 학습하기 위해 프로토 타입 작업을하는 것이 중요합니다. 작업을 수행하는 도구를 개발 한 다음 폐기하는 데 시간을 보내는 것도 좋은 방법입니다. 질문에서 언급하는 도구 유형은 잠재적으로 여러 번 수행해야하는 작업을위한 것이며 다른 사람이 그러한 작업을 수행하는 경우이를 지원할 도구가 없어서 시간을 낭비합니다 (또는 그러한 도구를 개발해야 함). .
Thomas Owens

@Thomas Owens는 물론 '다른 사람들의 작업에 잠재적으로 영향을 미칩니다'라고 말한 내용에 포함되어 있습니다.
벡터

2

두 가지 옵션이 있습니다.

  1. 그것을 표준으로 만드십시오
  2. 표준 도구로 번역

조직 # 1에 따라 어려울 수 있습니다 (모든 표준 기술 목록을 제한하면 조합의 폭발적인 훈련 및 지원 기술 요구 사항을 피할 수 있음).

두 번째 옵션은 기술을 습득하는 데 도움이되며, 일부 어려운 작업을 수행하기 위해 타사 (및 상업적으로 친숙한 라이센스를 가진 오픈 소스)를 찾을 수도 있습니다. 예를 들어 "LINQ to CSV"를 검색하면 유용한 결과가 나타납니다.

VB6의 개발자 도구 (IDE, 컴파일러) 인 BTW는 지원되지 않으며 (보안 수정 사항조차 포함되지 않음) 표준 업데이트가 필요할 수 있습니다. (VB6 런타임은 현재 Windows 버전의 일부로 설치에 포함되어 지원됩니다). 이것은 아마도 # 1에 접근하는 데 도움이 될 수 있습니다. 표준 툴 세트는 공급 업체의 의존성 때문에 움직이는 목표를 세워야합니다.


2

만약 당신이 과제를 받았고 제 시간에 그것을 달성 할 수있는 유일한 방법을 선택했다면, 실제로 선택의 여지가 없습니다. 담당자에게 귀하의 행동을 알리는 것이 현명하다고 생각합니다. 필요한 소스 제어를 벗어나지 않아야합니다 (절대로 작동하지 않는 한?) 테스트 및 문서화.

때때로 회사는 단일 개발자가 새로운 개발 영역을 조사하도록해야 할 수도 있습니다. 불행히도, 코드는 다른 사람이 속도를 낼 수있는 것보다 더 빠르게 생산에 들어갈 수 있습니다.


믿거 나 말거나,이 질문을 게시하고 많은 통찰력있는 제안을받은 후에 C #으로 여러 스크립트를 이식했습니다.
systempuntoout

1

글쎄, 나는 20 가지의 다른 언어로 작업하는 것을 많이 인정했다.

C dll을 호출하는 Java 바이너리를 호출하는 Perl 스크립트를 호출하는 Python 스크립트를 호출하는 Bash 스크립트가 있습니다.

그런 다음 전체 파이프 라인에서 팬을 때리며 WTH IS DAT KODEZ입니까? 특히 Perl에서는 ... 인코딩 문제와 같은 간단한 디버깅은 악몽 같은 엉망으로 변합니다. 7 개 언어 중 5 개 언어를 효과적으로 디버깅 할 수 없으며 실제 고통으로 바뀝니다.

또는 간단한 변경 사항을 추가해야하지만 Perl에는 문제가 있고 Java에는 문제가 있으므로 10 개의 오류가 발생합니다.

그리고 7+ 언어 체인은 한 번에 한 단계 씩 시작합니다.

조심스럽게 밟으십시오. 여기는 용입니다 ...


올바른 도구로 작업해도 악취가 발생하지 않으며, 물건을 만드는 유닉스 방식입니다. Windows 방식은 Excel을 시작하는 것입니다. 망치와 못의 오래된 이야기
mouviciel

1

이러한 도구가 자신을 위해 사용하는 도구라면 생산성을 높이는 모든 것을 자유롭게 수행 할 수 있습니다.

실제로, 그러한 도구를 만들고 사용 하도록 장려해야합니다 .

결국, 그들은 어떤 언어로 작성 되었든지간에 이러한 도구를 갖는 것이 중요하다는 것을 인식 하고 업무 환경에서 구현하기 시작할 것입니다.


직장에서 나는 당신이 "자신을위한"것으로 취급해야한다고 생각하지 않습니다. 그것들은 프로젝트를 지원하는 도구이며 해당 프로젝트를 수행하는 팀이 있습니다. 내일 그만두거나 해고 당하거나 재 할당하거나 죽을 수 있으며 이제 다른 사람에게 책임이 떨어집니다. 그들이 도구를 사용하고 유지할 수 없다면, 도구를 만드는 데 드는 노력이 낭비되었습니다 (회사 비용을들이는).
Thomas Owens

3
@Thomas : 나는 내가 만든 스크립트를 개인적으로 사용하고 개인적으로 사용합니다. 그것들은 내 팔과 내 마음의 연장입니다. "당신은 그렇게 생각할 수없고, 그렇게 생각할 수 있습니다"라고 말하는 것과 같습니다. 나는 당신이 요청받은 것을 할 수 있다면 당신이 생각하는 것이 중요하지 않다고 생각합니다.
Jose Faeti

그것은 나에게 매우 비전문적이고 비 윤리적입니다. 소프트웨어 엔지니어의 윤리적 책임 중 하나는 대중에게 위험을 초래하지 않는 한 고객과 고용주의 이익을 위해 행동하는 것입니다. 또 다른 윤리적 책임은 동료를 공평하고지지하는 것입니다. 프로젝트를 수행 할 때 도구를 자신에게 유지하면 이러한 원칙을 모두 위반하게됩니다.
Thomas Owens

3
@ 토마스 : 나는 프로젝트를 위해 특정 프로그래밍 언어를 쓰는 것에 대해 이야기하지 않았습니다. "단순한 명령으로 10000 파일 이름 바꾸기"와 같은 말을하는 것입니다. 바보 같은 프로그래머는 한 손으로 직접 수행하는 반면, 자체 제작 스크립트로 할 수는 있습니다. 나는 프로젝트에 특별히 관련된 것과 상호 작용하지 않습니다. 프로젝트 전용 도구가 아닙니다.
Jose Faeti

3
@ 토마스 : 요점은 그러한 유틸리티가 존재하는지 알지 못하지만 그러한 유틸리티를 만들어서 작업을 자동화하는 방법을 아는 것입니다. 일상적인 작업에 도움이되도록 항상 새로운 스크립트가 필요합니다. 프로그래머가 다른 사람이 만든 기존 도구 나 도구를 사용하도록하는 것은 날개를 새에게 자르는 것과 같습니다. 그런 곳에서 일하는 것을 상상할 수 없습니다. 어쨌든 나는 당신의 요점을 이해합니다. OP가 이미 그 상황에 있었기 때문에 내 대답이 제기되었습니다. 필요한 즉시 모든 팀과 특정 도구를 만들고 사용하는 것에 대한 생각을 나누고 결정하는 것이 최선이라고 생각합니다.
Jose Faeti

1

sth.를 수행하는 코드를 작성하라는 지시를 받으면 일반적으로 언어가 지정되거나 암시됩니다 (회사의 규칙).

그러나 DB로 데이터 가져 오기와 같은 일회성 작업을 수행해야하는 경우 정확하고 빠른 작업을 수행해야하며 결과가 중요하기 때문에 자신의 의견으로는 가장 적합한 도구를 자유롭게 선택할 수 있습니다. 도구가 아닙니다.

그래서 나는 그 규칙을 사용할 것입니다 :

1) 데이터 가져 오기와 같은 일부 작업을 수행하라는 메시지가 표시되면 도구 / 언어 등을 사용합니다. 그것은 나에게 가장 편리하고 작업에 가장 빠를 것입니다.

2) 일부 데이터 가져 오기와 같은 일부 작업을 수행하는 도구를 작성하라는 메시지가 표시되면 관리자와 함께 사용할 언어 / 도구에 대해 설명합니다 (예 : 회사에서 표준을 암시하는 언어를 사용할 때 (예 : 회사에서 거의 사용하는 경우) ] Java 만 해당).

3) 작업이 일회성으로 보이지만 반복 가능 해지면 관리자와상의하여 1)에서 2)로 변경하고 원하는 언어에서 회사 지원 언어로 다시 작성해야합니다.


0

나는 당신이 결정할 자리에 있지 않다고 가정합니다 (그렇지 않으면 질문을하지 않을 것입니다). 상사가이 문제에 대해 어떻게 생각하십니까? 그에게 말을 걸어 파이썬이 갈 길이라고 확신 시키려고 노력해야한다 ...

물론, 문제는 당신이 떠날 때 일어날 일에 관한 것입니다. 코드를 유지할 수없는 것은 아마도 파이썬 사용을 중단하기에 충분한 이유 일 것입니다. 또는 동료에게이 언어를 교육시킬 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.