Programmer! 11

좋은 코드를 만들기 위한 방법

1. 코드 리뷰 가장 기본적이면서도 정확한 방법이라 할수 있다. 내 코드 또는 상대방의 코드를 컴퓨터의 도움 없이 눈으로 읽으며 잘못된 부분을 찾아내는 방법이다. 로직을 한눈에 살펴보기 어렵다면 다음 사항들을 위주로 진행하면 도움이 된다. 오타가 있는가? 적절하지 못한 변수/함수 타입을 사용했는가? 사용하지 않(아도 되)는 코드가 있는가? 함수명이나 변수명이 상황에 맞지 않는가? 코드에 중복된 부분이 존재하는가? 코딩 표준을 준수하였는가? 신기하게도 코드리뷰를 하면 할수록 코드를 읽는 힘이 길러져서 나중에는 눈으로 발견하기 어려운 버그들도 찾아내는 경험을 할 수 있다. 코드 리뷰는 보통 git 에서 Pull Request를 생성하면 리뷰어들이 코드를 리뷰한 뒤 문제가 있는 부분에 커맨트를 달고, 그것을 ..

무조건 합격하는 영어면접 준비하기 - 마무리

4. 연봉 협상 4.1 환율, 세금을 고려해서 내가 받을 연봉 정하기 해외 취업은 우리나라에서 취업하는것과 연봉 체계도 다르고 내야할 세금도 다르다. 연봉협상을 할 때에는 어떤 방식으로 급여를 주는지 미리 파악하고 환율과 세금을 고려해서 내가 받아야 하는 금액을 산정해 놓고 면접에 임하는 것이 중요하다. 4.2 큰 수의 단위는 영어로 어떻게 표현하는지 미리 계산하기 가뜩이나 환율이 다른 것도 헷갈리는데, 큰 수의 단위까지 모르면 연봉 협상시 더 큰 혼란을 초래할 수 있다. 1Million USD = 약 13억원, 1Billon USD = 약 1조 3천억원 등 큰 금액에 대해 원화로 얼마나 되는지 미리 파악을 해 놓는다. 면접을 보고자 하는 회사가 이번에 3Million원을 투자받았습니다. 라고 말한다면 ..

무조건 합격하는 영어면접 준비하기 - 3 여기부터 진짜 꿀팁

3. 영어..정말 괜찮겠어? 영어 면접이 1주일 뒤로 잡힌 날, 은수 씨는 발등에 불이 떨어졌다. 발음이야 그렇다 치고, 상대방의 말을 잘 알아들을수 있을지가 가장 큰 문제였다. 아무리 훌륭한 대답을 가지고 있어도 면접관의 질문을 알아듣지 못한다면 큰 문제가 아닐까? 결국 은수 씨가 1주일동안 주구장창 했던 일은 “쉴 새 없이 팟캐스트 듣기" 였다. 계속 흘려듣는 거다. 특히 은수씨의 분야인 개발에 관련된 팟캐스트를 많이 들었다. 전문 용어에 익숙해 지기 위해서라는 이유도 있었다. 3.1 영어실력 단기간에 끌어올리기 시간이 많다면 미리 준비하면 좋겠지만 시간이 없는 사람은 은수 씨가 했던 방법을 추천한다. 유튜브로 흘려듣기를 하는 것도 좋다. 다만 팟캐스트의 경우에는 이어폰만 끼고 다른 일을 하며 들을 ..

무조건 합격하는 영어 면접 준비하기 - 2

2. 어떤 자세로 인터뷰에 임해야 하는가? 2.1 첫째도, 둘째도, 셋째도 자신감 자신감이 없는 사람은 본인 뿐 아니라 상대방도 대화를 통해 단번에 이를 느끼게 된다. 영어 면접의 경우 특히 더 그렇다. 한국은 자신감이 있는 사람을 보며 너무 나댄다, 잘난척한다 라고 생각하는 경향이 있는데 외국인들과 일해본 경험으로 외국인들은 자신감이 넘쳐난다. 자신이 하고 있는 일에 대한 자신감이 있고 절대 주눅들지 않는다. 심지어 영어 발음이 최악인데도 그 자신감이 어디서 나오는 건지, 신기할 때가 많았다. (사실 영어 발음은 한국인이 가장 많이 신경쓰는 경향이 있다.) 면접을 볼때에도 그렇다. 내 영어 발음을 저 사람이 알아들을까, 문법이 틀리지는 않을까 전전긍긍하고 고민할 필요는 없다. 이미 굳어진 영어 발음을 ..

무조건 합격하는 영어면접 준비하기 - 1

1. Thank you for having me 드디어 면접을 보는 날. 오늘은 영어 면접 일정이 잡혀 있기 때문에 은수 씨는 아침부터 긴장이 되고 가슴이 두근거렸다. 진정한 노마드의 삶을 꿈꾸고 있던 은수 씨는 지인 영호씨로부터 입사 제의를 받았다. 영호씨는 이미 미국 실리콘밸리의 스타트업에서 개발자로 일하는 디지털 노마드의 삶을 살고 있는 사람이었다. 개발 경력이 5년을 넘어서 이제 중견 개발자가 된 은수 씨에게 영호씨는 말했다. “은수씨, 혹시 우리 회사에 취업할 계획 없어? 우리 회사에서 마침 개발자를 뽑고 있는데, 은수씨처럼 영어가 좀 되고 개발을 할 수 있는 사람이면 도전해볼만 한것 같아서. 한번 이력서 내 보는게 어때?” 영어로 일상 생활에서 의사 소통이 가능했던 은수 씨였지만, 막상 외국 ..

S/W 계층 구조

1. 품질(Quality) . S/W Engineering의 기본 목표는 품질과 생산성의 확보이다. . S/W 자체의 품질 뿐만 아니라 모든 프로세스의 품질까지 고려해야 한다 . 품질에 대해서 엄격하고 문서화된 형식을 갖추어야만 신뢰성 있는 제품이 생산되며 프로그램 개발시 제품을 쉽게 관리할 수 있다. 2. Process . 프로그램 개발시 사용되는 개발 방법 및 순서를 의미한다. . 프로그램 완성 단계까지 해야 하는 작업의 목록을 정의한다. . 프로그램에 투여되는 모든 자원(Resource) 및 기타 환경에 대해서 정의한다. 3. 방법(Method) . S/W 개발에 사용되는 기술적 방법을 제공한다. . 요구사항, 분석, 설계, 프로그램 구축, 테스팅, 유지 및 보수 등과 관련된다. . 다이어그램을 사..

S/W Process

Software process : 소프트웨어 시스템을 개발하기 위해 요구된 활동들의 집합(요구사항 명세화, 설계, 확인, 진화) 소프트웨어 프로세스 모델은 프로세스의 추상적 표현이다. 1. 폭포수 모델 : 요구사항 정의-시스템/소프트웨어 설계-실행/테스트-통합/시스템 테스트-유지보수 의 단계 소프트웨어 개발 프로세스중 가장 첫번째로 발표된 모델이다. 시스템 공학 프로세스로부터 유도됨. 순차적 프로세스 모델로 위의 단계로 개발이 진행되며 각 개 발이 끝날때마다 과정의 끝을 알리고 산출물이 출력된뒤 다음단계로 진행된다. 프로젝트의 수행 단계의 파악이 용이하지만 실제 프로젝트는 요구사항이 안정적이지 않고 명확한 단계를 구분하기 어려우며 변경을 수용하기도 어렵다. 2. 진화적 개발 : 실험적 개발 - 고객과 함..

Critical System

-시스템의 고장은 비교적 일반적이다. 대부분의 경우 고장은 심각한 손해를 입히지 않지만 어떤 시스템 고장은 중요한 경제적 손실, 물질적 피해, 혹은 사람의 생명에 위험이 될수 있다. 이러한 시스템을 Critical system(중대한 시스템)이라 한다. 1. Safety-critical System : 시스템의 고장으로 인해 부상, 사망 등의 심각한 결과 초래 2. Mission-critical System : 시스템의 고장으로 임무 수행의 활동 실패 3. Business-critical System : 시스템의 고장으로 인해 시스템을 사용하는 사업에 대한 높은 비용지불 Critical systems의 가장 중요한 특징 : Dependability(신뢰성/ 확실성) -> 시스템의 신뢰성과 보안성이 떨어지..

소프트웨어 공학 - 프로젝트 관리

1. 프로젝트 관리 : 소프트웨어 프로젝트를 조직, 계획, 일정관리 하는 것 2. 프로젝트 관리가 중요한 이유 * 수입과 지출에 직결되는 경제 관련 작업: 기술 외적인 부분이 많음 * 관리가 잘된 프로젝트도 실패하는 경우가 있음. 관리가 잘 안된 프로젝트는 실패로 끝날 가능성이 많음. * 관리 작업에 대한 방법을 일부 이론적으로 다룸 : 관리를 실제 배우는 일은 현장감이 중요 3. 소프트웨어 프로젝트의 차이점 * 프로덕트가 만질 수 없고 눈이 보이지 않음 * 프로덕트가 매우 flexible함 * 기계공학, 건축공학 처럼 엔지니어링 기술이 아직 확립되어 있지 않음. * 소프트웨어 엔지니어링 프로세스가 표준화되어 있지 않음 * 대부분의 소프트웨어 프로젝트는 일회성 4. 프로젝트 관리 작업 * 계획서 작성 *..

반응형