본 내용은 2가지 책의 내용을 요약한 것입니다. 참고하세요





  


"특히 프로젝트가 서쪽으로 간 까닭은" 은 꼭한번 읽어보시라고 권해드립니다.


  • 리더가 당신에게 무엇을 하고 있는지 묻기 전에 어떤 일을 하고 있는지 먼저 말해 주는 것에 주저하면 안됩니다. 자주 피드백 합시다.
  • 모형, 프로토타입, 스토리보드를 고객에게 미리 제공하여 고객이 원하는 바를 조기에 파악해야 합니다. - 밀짚 인형 기법
  • 업무에 우선 순위를 매긴 후 최고 속력으로 처리가 가능한 만큼만 진행 합니다.
  • 특정 분야에 전문가가 되기 위해서 10년 법칙 1만 시간의 노력이 필요 합니다.
  • 기술적 숙련도에 도움이 되는 수요조사
    • 직원 공모 또는 취업 사이트를 분석하면 유망한 기술을 분석할 수 있습니다.
    • 해외 외주 사이트를 분석하면 유망 기술 동향을 분석할 수 있습니다. - oDesk
  • 업무와 관련된 잡지를 정기 구독 합니다. - 마이크로소프트웨어
    • 과 월호를 찾아봅니다. 정독합시다.
    • 뉴스, 특집기사 등을 주의해서 봅니다.
  • 자신의 업무에 익숙해지기 위한 반복 학습을 실행 합니다.
  • 정상을 바라보고 프로젝트 목표를 설정합니다.
  • 적정한 기간 내에 출시 할 결과물을 계획합니다.
  • 모니터를 여러 대 추가하고, 모니터의 적당한 높이 조절을 통하여 생산성을 향상시켜보도록 합니다.
  • 인체 공학적인 마우스를 이용합니다.
  • 다육이 화분을 책상 주변에 배치 합니다. - 공기 정화
  • 좋아하는 글귀와 명언을 출력하여 붙여 놓습니다.
  • 감탄을 잘합시다. - 리 액션
  • 단위 시간당 더 많은 깨달음의 순간을 경험하도록 통찰력을 키우도록 합니다.
  • 내가 할 일에 대한 목록을 정리 합니다.
    • 우선순위를 수시로 변경하도록 합니다.
    • 중요도 순으로 정리합니다.
  • 자신이 사랑하는 일을 합니다
    • 행복을 찾아라
    • 배울 수 있는 건 뭐든 배워라
    • 새로운 것을 시도하고 옛 것을 지켜라
    • 최고의 사람과 함께
    • 조언자를 찾아라
    • 자기 팀, 회사, 분야에 보답하라
    • 글쓰기, 코딩을 꾸준히 연습하라, 동료의 일 조언
    • 좋은 책을 많이 읽어라
  • 개발자로서의 첫 5년이 가장 큰 가르침을 얻는 시기입니다.
    • 한 팀의 일원으로 일하고, 동료와 정보 기술, 자산(문서, 코드, 프레젠테이션)의 공유 방법을 익힙니다.
  • 중요한 스킬을 익힙니다.
    • 4가지 이상의 언어 및 방법론
    • 람다식, 클로저등 함수형 언어 익히기
    • Jpeg. Xml, Text, Json
    • 동시에 천 명 이상 접속 가능한 서버 기술
    • 여러 명의 개발자와의 팀워크 경험
    • 다른 사람의 소스코드 분석 노하우
    • 다국어 지원 방법
  • 도메인 특성에 집중 합니다.
    • 트랜드 기술 보다 통신, 이미지 처리, 데이터베이스, 그래픽스, 알고리즘 등 기본적인 기술 원칙에 치중
  • 메이븐이 됩시다.
    • 특정 분야에 대해 방대한 지식을 갖추고 있으면서, 그 정보를 널리 공유하는 사람
  • 온라인 멘토가 됩시다.
    • 메신저, 화상 회의 등의 방법으로 정보 공유
    • 지속적인 노하우의 제공
    • 블로그, SNS의 적절한 활용
  • 비밀실험, 전혀 다른 프로젝트를 경험해봅니다.
  • 스스로 특허를 발굴 해보기
  • 전문지에 기고할 글, 백서, 기술 문서 쓰기
  • 논문 쓰기
  • 부하직원의 양성, 차세대 리더의 양성
  • 자신이 개발한 기술에 대한 유튜브 동영상을 제작하여 쇼 케이스 만들기
  • 다양한 업무 역량 배우기
    • 계획
    • 설계 기법
    • 프로그래밍
    • 디버깅
    • 테스팅
    • 공학
  • 업무 외 역량 익히기
    • 강연 능력
    • 조직 예절
    • 협상력
    • 멘토링
    • 팀워크
    • 의사 소통
    • 관리 방법
    • 리더쉽
  • Assertion의 활용
    •  논리 흐름상 반드시 만족해야 하는 과정을 코드에 넣는 것
  • 사분면 기법을 통한 업무의 관리
    • 한 축 : 급한 일 / 급하지 않은 일
    • 한 축 : 중요한 일 / 중요하지 않은 일
    • 중요성 축, 긴급성 축으로 구성
  • 감성지능의 키우기
    • 미소, 인간미, 지지 기반
    • 화를 내는 빈도를 줄입시다.
    • 객관적인 시선
    • 팀의 최선, 온화, 자기 계발
    • 긍정적인 정서
  • 소통 하기
    • 모임, 학회 참석
    • 커뮤니티 활동
  • 다른 사람들에게 대가를 바라지 않는 호의를 베풀기
  • 때론 업무 시간의 빈둥거림도 필요합니다.
    • 뉴스, 웹 서핑, 재테크
    • 게임, 안부 묻기
    • 휴식, 산책
  • IT 관련 동향 따라가기
    • Techmeme
    • Hacker News
    • Reddit Programming
    • 블로터
  • 다른 사람과 협업 하는 것은 그 노력에 숨어있는 집단지성을 증가시킵니다.
  • 팀의 상호작용과 협업을 위한 요소
    • 겸손 : 열려 있어야 한다.
    • 존중 : 능력과 업적에 감사
    • 신뢰 : 믿음
  • 실패의 경험이 없다면 충분히 혁신적인 사람이 되지 못하거나 위험을 감수하려고 하지 않게 됩니다.
  • 나의 실패를 문서로 만들자
    • 포스트모텀(Postmortem)
    • 회고록 작성
      • 요약
      • 현상의 발견
      • 원인
      • 평가
      • 문제의 해결을 위한 활동
      • 재발방지 기법
      • 배운 점
  • 당신의 약점을 드러내면 드러낼수록 당신은 더 강해집니다.
  • 당신의 팀이 가치 있고 지켜야 하는 문화를 가지는 것이 중요합니다.
  • 업무 외의 자신을 힐링하기 위한 악기를 하나 배워보도록 합시다.

출처: 개발자 자기계발 및 실력향상 노하우, http://futurewavedev.tistory.com/7


'프로그래밍 > 이야기' 카테고리의 다른 글

OAuth 2.0 정리  (0) 2021.04.28
[macOS, 맥OS] jEnv로 자바 환경 세팅  (0) 2020.06.27
글을 안 올리는 이유(변명!?)  (0) 2017.06.14

자바는 객체지향 프로그래밍 언어이다. 본격적인 자바 소개에 앞서 프로그래밍 언어에 대해 알아보자.



프로그래밍 언어란?

  • 컴퓨터가 이해할 수 있는 언어는 0과 1로 이루어진 이진 코드(binary code)의 기계어(machine language)이다.

  • 그래서 사람과 컴퓨터가 대화하기 위해서는 사람의 언어와 기계어의 다리 역할을 하는 프로그래밍 언어(programming language)가 필요하다.

  • 프로그래밍 언어는 고급 언어와 저급 언어로 분류 할 수 있다.

고급언어

  • 고급 언어는 컴퓨터와 대화할 수 있는 언어 중에서 사람이 쉽게 이해할 수 있는 언어를 말한다.
  • 즉, 사용자 입장에서의 언어로써 우리가 일반적으로 프로그래밍 언어라고 부르는 C, C++, Java 등이 대표적인 예이다.
  • 고급 언어로 작성된 소스(source)는 컴퓨터가 바로 이해할 수 없기 때문에(기계어가 아니므로), 컴파일(compile) 과정을 통해서 컴퓨터가 이해할 수 있는 기계어로 변환해줘야 컴퓨터가 사용할 수 있다.

  • 컴파일 해주는 것을 컴파일러(compiler)라고 하며, 자바에서는 javac.exe가 담당한다.

  • 우리가 흔히 말하는 프로그램(program)이란 컴퓨터에서 특정 목적을 수행하기 위해 프로그래밍 언어로 작성된 소스를 기계어로 번역한 것을 말한다.

저급언어

  • 저급 언어는 기계어에 가까운 언어로, 어셈블리어가 대표적인 저급 언어이다.
  • 사람이 이해하기 어려워서 배우기 매우 까다롭다.

자바의 역사

  • 자바는 1991년에 썬 마이크로시스템즈(Sun Microsystems)사에서 제임스 고슬링(James Gosling)이 다른 연구원들과 함께 고안한 오크(Oak)라는 언어에서 시작되었다.

  • 오크는 처음에 가전제품에서 사용될 목적이었으나, 인터넷의 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용되었고, 이름을 자바로 변경하였다.

  • 1995년에 자바 1.0을 발표하였고, "Write Once, Run Anywhere"(한번 쓰고 어느 곳에서도 실행)를 약속하였다.

  • 1995년~1999년까지는 윈도우 프로그램 개발이 주류여서 C++언어에 비해 자바는 열세였다. 또, 메모리 및 CPU를 지나치게 많이 사용한다는 문제점이 있었다.

  • 하지만, 1999년도부터 인터넷이 활성화되면서 웹 애플리케이션 구축을 위해 자바 활성화되었다. 단 한번 작성으로 모든 곳에서 실행 가능한 언어는 자바뿐이었기 때문이다.


자바의 특징

자바는 이식성이 높은 언어이다.

  • 이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다.

  • 예를 들면 윈도우 운영체제에서 실행하는 프로그램을 리눅스 또는 유닉스에서 실행할 수 있으면 이식성이 높은 것이다.

  • 자바는 자바 실행 환경(JRE:Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능하다.

자바는 객체 지향 언어이다.

  • 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 것을 객체 지향 프로그래밍(OOP, Object Oriented Programming)이라고 한다.

  • 객체 지향 프로그래밍에 사용되는 언어를 객체 지향 언어라고 한다.
  • 자바는 객체를 만들기 위해 설계도인 클래스를 작성하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다.
  • 자바는 객체 지향 언어의 특징인 캡슐화, 상속성, 다형성을 완벽하게 지원한다.

자바는 함수적 코딩 스타일을 지원한다.

  • 객체 지향 프로그래밍 이전에 Lisp 또는 Scheme와 같은 함수적 프로그래밍 언어들이 있었지만 큰 호응을 얻지 못했다.
  • 최근에 대용량 데이터 병렬 처리와 이벤트 지향 프로그래밍을 위해 함수적 프로그래밍이 다시 부각되고 있다.
  • 자바는 자바 8부터 람다식(Lambda Expressions)을 지원하여 함수적 프로그래밍을 지원한다.

  • 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다.

자바는 메모리를 자동으로 관리한다.

  • C++은 메모리에 생성된 객체를 제거하기 위해 개발자가 직접 코드를 작성해야 한다. 만약 이 작업을 성실하게 해주지 않으면, 프로그램은 불완전해지고 갑자기 다운되는 현상을 겪게 된다.

  • 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며,. 메모리는 자바가 직접 관리한다.
  • 객체 생성 시 자동으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기(Garbage Collector)를 실행시켜 자동으로 사용하지 않는 객체를 제거한다.

  • 자바 개발자는 메모리 관리의 수고를 덜고, 핵심 기능 코드 작성에 집중할 수 있다.

자바는 다양한 애플리케이션을 개발할 수 있다.

  • 자바는 다양한 운영체제에서 실행되는 프로그램을 개발할 수 있다.
  • 또, 단순한 콘솔 프로그램에서부터 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션, 그리고 모바일용 안드로이드 앱 등 거의 모든 곳에서 실행되는 프로그램을 개발 할 수 있다.

  • 자바는 다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션(Edition) 형태로 정의하고 있다.

멀티 스레드(Multi-Thread)를 쉽게 구현할 수 있다.

  • 운영체제에 따라서 멀티 스레드를 구현하는 방법이 다르지만, 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하므로 운영체제에 상관 없이 멀티 쓰레드를 쉽게 구현할 수 있다.

동적 로딩(Dynamic Loading)을 지원한다.

  • 자바 애플리케이션은 클래스로부터 생성 된 여러 개의 객체가 서로 연결되어 실행된다.

  • 애플리케이션 실행 시 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다.

  • 또, 개발 완료 후 수정 사항이 발생하더라도 해당 클래스만 수정 하면 되므로 전체 애플리케이션을 다시 컴파일 할 필요가 없다. 따라서 유지보수를 쉽고 빠르게 진행 수 있다.

막강한 오픈 소스 라이브러리가 풍부하다.

  • 자바는 오픈 소스(Open Source) 언어이므로 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스의 양이 방대하다.
  • 고급 기능을 구현하는 코드를 작성하는 대신 검증된 오픈소스 라이브러리를 사용하면 애플리케이션 개발 기간을 단축하여 생산성을 높이고 안정성도 높일 수 있다.

+ Recent posts