Karen
14k
2016-05-26 15:20:58
5
5746

달달 맵싹! 양파의 개발 이야기 - 개발자로서, 몰라도 되지만 그래도 알아야 하는 것들




개발자로서, 몰라도 되지만 그래도 알아야 하는 것들

- 한참전에 썼던 글을 어쩌다가 찾았음



개발자로 취업한다 하면, 특히나 경력직이라면, "이 정도는 알겠지"라고 넘겨짚는 부분이 꽤 많다. 그리고 그걸 모르면 약간 충격 받을 때 있다. 물론 다 자세히 알거라고는 생각 안 한다. 하지만 개발일 하면서 한 번은 해봤을 거고, 아니면 비슷한 걸 해봤고, 다시 하라고 하면 하루 이틀 삽질 해보고 하겠지...라고는 기대한다. 그리고 실제로 내 주위 개발자들은 거의 그렇다.


하지만 돌아보면 지금은 별 거 아닌거 같아도 그 땐 며칠, 몇 주간의 삽질 끝에 배운 것들이고, 짧은 코스로 배웠으면 수십개에 해당할 수도 있겠다 싶다.


중요 순서대로 쓴 건 아니고 그냥 생각나는대로.



# version control system.

요즘엔 github 이 유행이니까 그거 하나만 해도 될 거 같다. 체크아웃 하고, 브랜치 만들고, 체크 인하고, merge 에러 생기면 그거 처리하고, diff 하고 등등. 하나 할 줄 아면 다른 것도 다 한다. 그렇지만! 버전 컨트롤 하나만 써본 사람은 취업 되도, 하나도 안 써본 사람은 안 된다. 개발자로 안 본다.



# 정규식. Regex.

이건 솔직히 문서 작업하는 사람들은 다 배워두면 좋다고 늘 생각한다. 예를 들어 - "철수", "영희", "영수" 라는 문장이 있는데 이것을 

철수, 

영희, 

영수 

요렇게 바꿔야 한다고 하자. 수작업으로 하겠죠? 하지만 그런게 수천 수만개 있으면? 정규식이라고는 할 수도 없는 아주 간단한 방법으로 5초면 바꿀 수 있다. 그 반대도 쉽다. \n 이랑 \r, \t 알아두고, 정규식의 ^ 랑 $ 요거만 알아도 시간 엄청 절약한다. 약간 까다로운 정규식도, 웹 프로그래밍 하면 솔직히 알아야 한다. 이것도 난 절대 안 배울것 같았는데 급할 때 조금조금씩 하니까 배우게 되더라.



# 웹 프로그래밍

사실 잘 할 필요는 없지만, 아무리 백 엔드 전문이라 해도 웹 프로그래밍이랑 전혀 모른척 하고 살 수는 없는지라, 아주 기본적인 MVC 프레임워크 개념은 알아야 한다. 이쁘게는 꾸미지 못할지라도, 백엔드 데이터를 REST API 로 expose 하는 정도는 하루내에 뚝딱 다들 한다. 거기에다가 Twitter 에서 나온 Bootstrap 같은 거 덮어씌우면 의외로 그럴듯한 웹페이지 하나 3-4일만에 만들 수 있다.



# 자바스크립트.

아주 잘 할 필요는 없으나, 그래도 기본적인 컨셉은 알아두면 사는데 편하다. CSS 랑 HTML 은 말할 것도 없다. 그리고 웹 스크립팅 랭귀지 하나쯤은, 아주아주 단순하게는 쓸 수 있음 좋다. Php 라던가, Asp (는 요즘에 좀 갔지만 하여튼). 어떤 언어를 쓰더라도 기존 기술과 비슷하게 나오기 땜에, 난 이전에 Php 랑 Perl template 좀 썼던 것, C# 로 들어오니까 Razr 란 거 뭐 비슷비슷 하더라.



# SQL.

이것도 의외로 쓸 일 많다. 아주 잘 할 필요는 없다. 그래도 select 구문 distinct, group by , order by, union all, inner join 요 정도만 알아도 삶이 무척 쉬워진다.



# 시간, locale. encoding.

초보 개발자와 중견 개발자의 큰 차이중의 하나가, 시간에 대한 개념이 있느냐이다. 지가 미국에 산다고 무조건 시간을 다 EST 에 맞춘다던지 하는 케이스. (UTC 써요 UTC. 내가 런던이라서 시간대가 비슷해서 하는 말은 아니고..) 이럴 땐 나중에 리포트 뽑고 하려면 개판난다. 


아, 영어만 쓰는 프로그래머의 경우 유니코드 개념을 모를수 있겠다. 그리고 시간 formatting/parsing. 시간 포맷이 아주 여러가지인데, 미국식있고 ISO 의 표준이 있고, 프로그래밍 언어마다 조금씩 다르고 뭐 그렇다. 그런 스트링 시간을 parse 하는 것도, 해 보면 별 거 아니지만, 그래도 익숙해지는데엔 꽤 시간 걸렸던 걸로 기억한다. Date 객체가 언어마다 조금씩 다른데, 그것 사용하는 방법은 외우진 못해도 구글로 5초만에 찾을 수 있게 된다.


흠. 그리고 보니 epochmillis 이런 개념도 배우긴 배워야 하는구나. 2015년 2월 1일 이렇게 쓰면 사람이 읽기엔 좋지만, 프로그래밍할 때는 귀찮다. 1970년 1월 1일부터 지금까지의 시간을 초로 바꾼 것을 Epoch seconds 라고 하고, 보통 밀리세컨트 기준으로 epochmillis 로 쓴다. 이건 그냥 숫자기 때문에 더하기 빼기 하기 쉽다. 여기에 더해서 Timespan 이라는 개념도 유용하다.



# linux 에서 bash/shell scripting

인생에 꽤 도움 되는 거 중에 하나가 linux 에서 bash/shell scripting. 뭐 리눅스 애드민 할 것도 아니고 까다로운 건 할 필요 없지만, 그래도 리눅스 시스템에서 간단한 스크립팅 언어 쓰고 프로그램 돌리는 정도는 알면 여러모로 편하다. 난 윈도 시스템은 사실 데스크톱 이외로는 써본 적이 없긴 한데, 윈도 시스템/파워쉘 스크립팅도 리눅스 아는 사람한테는 그리 힘들진 않더라. 난 sed, awk 이런 건 편하게는 못 쓰는데, 그냥 파이썬, 배쉬 스크립팅만 해도 아주 감사한 계기가 많이 생긴다. 투자 시간대비 최고 이득은 단연 vi 에디터.



# 디자인 패턴.

내가 쓰지는 않더라도 그게 뭔지는 알아야 다른 사람들 코드보고 이해가 간다 ㅜㅜ 그냥 간단한 웹 프로그래밍이라고 해도, decorator 이런 거 모르면 이게 도대체 왜 여기있는지 이해가 안 된다고 해야 하나.



# Linear algebra, matrix calculation.

나 고등학교 수학 아프리카 수준으로만 끝내고, 대학교에서는 수학 제대로 안 들었다가 나중에 공부한 부분이다. 이것 역시 그리 어렵지는 않은데, 데이터 처리할 때 벡터 계산 할 수 있으면 훨씬 빨라서 도움된다. 예를 들어 아이템 백개 들어있는 어레이가 있을 때, for loop 으로 하나하나 처리하는 거랑, 벡터 계산으로 한줄짜리로 끝내는 거랑, 아무래도 두번째가 낫겠죠. 예를 들어. df['Either'] = (df.Type== "A") | (df.Type== "B") 요렇게 하면, 수천줄의 데이터 프레임 칼럼 하나가 짧은 한 줄로 뙇!. 아니면 for i in range(len(df['Either']): 뭐 어쩌구 나가야되겠죠.



# Latex/D3 등등, 프레젠테이션이나 문서화 툴.

난 둘다 기초만 배웠지만 기본적인 markup/markdown 몇 개 배워두면 비슷비슷하고, visualisation 툴은 한두개 배워두면 나중에 본전 뽑는다.



# 보안

난 보안 잘 모른다. 그래도 기본적인 컨셉 모르면 피볼 때가 꽤 있다. Certificate 이 뭔지, private/public 키가 뭔지, 그게 어케 돌아가는 건지, sign with a certificate 이 뭔지, 내 컴퓨터에 어떻게 설치하고, 어떻게 개발용 버전 만들 수 있는지, 서버 authentication 은 뭔지 이런 거. Single Sign On 이 뭐고, Kerberos 는 뭐하는 거고, encryption 이 뭔지, http 랑 https 차이가 뭔지, cer/pfx 종류 차이...는 그냥 알아만 두면 좋습니다. 네. 해야 할 때가 오더라고요. 이번주처럼 squint 이모티콘 (서버 expired certificate 왕창 업데해야 하는데 제일 만만한 내가 해야 함 ㅜㅜ)



# 각 데이터 포맷.

XML, Json, CSV/TSV 등등의 파일을 열어서/ 아니면 REST API 로 받아서 parsing 하고, 각 엘레먼트 찾는 방법. 이것 역시 배워보면 별 거 아닌데 상당히 유용하고, 익숙해지면 무지 효율적이다. 개인적으로 내가 세상에서 제일 싫어하는게 XML, XPath 이다.



# 위 아이템과 약간은 비슷한, SerDe operation. Serialize Deserialize.

이거 직접 SerDe 드라이버 쓸 일은 없더라도 (...하이브 SerDe 써보려다가 죽을 뻔한 1인), 뭔지는 알아야 한다. 데이터 주고 받는게 너무 기본이라서;;



음. 생각나는게 이정도라 여기에서 스톱.




by Yangpa

https://www.facebook.com/londonyangpa/posts/1705677719717708


6
5
  • 댓글 5

  • 멍태희
    512
    2016-05-26 15:48:14

    위에 나온 내용 중에서 # Linear algebra, matrix calculation  요부분을 자바나 자바스크립트로

    공부하려면 어떻게 해야 하는가요?


    구글로 검색해보면 수학이나 R 언어는 나오긴 하는데요..


    자바나 자바스크립트로 벡터 계산하는 게 안 나오네요.



    df['Either'] = (df.Type== "A") | (df.Type== "B")  은 무슨 언어인가요?

    0
  • 멍태희
    512
    2016-05-26 15:52:32

    구글에서 사용한 검색어는

      java 자바 벡터계산 선형대수 

    입니다.


    뭘로 검색해야 결과를 제대로 볼 수 있을까요?


    0
  • 전재형
    4k
    2016-05-27 00:04:53

    // 멍태희..


    왜 난 질문이 이해가 안가는걸까요...

    0
  • larcyuki
    1k
    2016-05-27 08:10:33

    선형대수나 벡터는 말 그대로 선형 대수랑 기하와 벡터를 공부해야죠.

     일단 프로그래밍 책으로는 코딩 더 매트릭스 많이 추천하시던데,  기본적으로는 수학을 공부해야죠.

    0
  • 애플망고
    14
    2016-05-27 22:44:43
    수학의 필요성
    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.