SlideShare a Scribd company logo
1 of 26
좋은 개발자 되기
개발역량강화 세미나
KESTI 2016-01-08
목차
 좋은 개발자란?
 어떻게 공부할 것인가?
 Programming Language 습득 방법
 좋은 개발팀원이란?
 좋은 코더란?
 전문분야 찾기
2
좋은 개발자란?
3
개발자 분류
 Domain 별
 Software 산업이라는 것은 모든 산업에 Software를 제공하는 것
 정부, 게임, B2C, B2B, O2O, Embedded …
 Topic 별
 보안, 엔터테인먼트, 오픈소스
 Role 별
 SI, SM, Service, Infra, DBA, Device
 Architecture, PM, Analysis, Consultant
 기술 분야
 Frontend – Windows, Web, Mobile (iOS, Android …)
 Backend – Web, Middleware, Servers (Cache, MQ …) …
 Database – DBA, OLTP, OLAP, Big Data
4
좋은 개발자란?
 좋은 제품을 만드는 사람
 사용성
 안정성 (예외처리)
 성능
 유지보수성
 납기 준수, 매뉴얼
 논리적 사고, 자기계발
 게으름  자동화, 관심  자기주도, 3D  끈기
 참고 : 좋은 프로그래머 되기
5
좋은 개발자란?
6
SI
• 적기 납품
• Domain 지식 (요구사항 충족)
• 유지보수성
Solution
• 범용성 (다양한 Needs를 일반화)
• 안정성 / 성능
• 자동화 / 매뉴얼
• 호환성
Embedded
• 안정성
• 성능
• 호환성
SM
•현업과의 소통
•Domain 지식 / 코드 이해력
•시스템 운영 능력
분야별
어떻게 공부할 것인가?
7
개발자 학습 분야
8
Software
Domain
Knowledge
Business
Management
학습 전략을 짜라
 분야별로 10년 학습 Milestone 을 짜라 (Currier Path)
 자신있는 분야, 흥미있는 분야부터 공략해라
 돈 되는 것, 남이 원하는 것만 하게되면 언젠가 후회한다.
 쉬운 것부터 해라
 폼생폼사가 아니다.
 첨부터 잘하는 놈 없다.
 눈에 보이는 것부터 해라 - 남들에게 Feedback 을 쉽게 받을 수 있는 것
을 해라
 최종적으로는?
 자신이 오래 할 수 있는 것을 해라
 성과가 높은 것?
 자동화가 가능한 것?
 항상 새로운 것?
9
학습전략
10
개발방법론 CBD (UML) Waterfall Agile
Language Java (OOP) Python C/C++
Scala
(Functional)
Frontend HTML /
JavaScript
jQuery
Responsible
Web
JavaScript
Framework
NodeJS
Backend 자료구조 WAS
멀티스레딩
비동기
분산 서버
DATA RDBMS NoSQL Hadoop Spark
Machine
Learning
Infra OS / Linux
Build
Automation
Docker AWS (Cloud)
11
KEST 개발자
Backend
이론
자료구조
디자인패턴
Framework
Spring
Framework
Spring MVC
Spring Data
Spring Batch
Spring
Integration
비동기
Java NIO
Concurrency
Parallel
Programming
분산환경
HA 구성
분산 Cache
Frontend
JavaScript
jQuery
AngularJS
React
Meteor
Resposible
Bootstrap
CSS3
Mobile App
Android
iOS / Swift
Database
RDBMS
Persistence
Framework
SQL Mapper
MyBatis
jOOQ
ORM
Hibernate
JPA
Oracle PostgreSQL
PostGIS
HStore
NoSQL
MongoDB
Redis
ElasticSearch
InfluxDB
KESTI 개발자는?
Data 처리
•자료구조
•Collections
•선형수학
•RDBMS
•ERD
•인덱스
•서브쿼리
Frontend
•HTML5
•Bootstrap
•JavaScript
•jQuery
•AngularJS
•Mobile
•Android
•iOS
Backend
•Spring
Framework
•Spring MVC
•Spring Data
•WAS
•Persistence
Layer
•MyBatis
•JPA/Hibernate
•분산 서버
•Redis, Akka
12
책 읽기 방법
 좋은 책을 선택해라
 다독보다 양서를 읽어라
 변화가 심한 분야는 차라리 Blog Article 을 읽어라
 Head First 류는 서점에서 간단히 읽어라 (돈이 아깝다)
 추천도서를 우선순위에 둬라 (서평도 꼭 봐라)
 되도록 영문원서를 읽을 수 있도록 해라 (SW 정보 변화를 생각해
라)
 같은 책을 두번 이상 읽어라
 끝까지 읽어라
 처음에는 전체 구조 파악을 목표로 하라 (목차, 전체 내용 파악)
 두번째는 정독하기 (예제는 실행해보기)
 요즘은 예제도 github에 올라온다 (이런 책이 좋은 개발자가 쓴 책이다)
 세번째부터는 모르는 부분, 즉시 적용해야 하는 부분
13
Program Language 학습방법
14
Programming Language 학습방법
 자신에게 맞는 개발 환경을 구축해라
 좋은 IDE (VS.NET, IntelliJ IDEA), 코딩용 폰트
 언어의 Eco Environments 를 적극 활용하라
 빌드 툴 (Maven, Gradle) 을 먼저 익혀라 (Ant 는 잊어라)
 개발 프로세스를 먼저 익혀라
 소스 관리 툴 (GIT) 을 익혀라
 TDD 로 코딩하라
 예제도 TDD 로 하라
 실제 코딩 전에 테스트 코드로 검증하라
 운영 OS 에 대한 기본 지식은 필수이다
 프로그램이 구동되는 환경이다
 되도록 운영 환경과 같은 환경에서 개발해라
15
16
Dependency Diagram
Class Diagram
좋은 개발팀원
17
좋은 팀원이 되려면
 문제를 숨기지 마라
 지뢰를 심어놓으면, 나중에 다른 사람이 다친다
 문제를 빨리 파악하는 능력을 키워야 한다 (TDD)
 남의 문제에 대한 지적질도 매우 중요하다 (대안도 같이 제시)
 꼼수는 필요하지만, 나중에 꼭 개선해야 한다 (Refactoring)
 논쟁은 필수, 항상 Why 를 생각하라
 누가 시켰어요 … (전 생각이 없어요)
 지식은 나누면 더 크게 돌아온다
 팀원의 경험과 Idea는 나눠야 팀의 역량이 강화된다
 Communication Tool 을 적극 활용하라
 개발자는 문제 해결사이다
 문제 파악 / 문제 해결 경험을 많이 가져라 (직관도 높아진다)
 협업 툴을 적극 활용하라
 GIT, Wiki, Jira, Build Automation 등을 사용 못하면 팀에서 제외될 수 있다
18
Communication Tools
19
Evernote
kifi
Slack
좋은 프로그래머가 되려면
 소프트웨어 개발 방법론을 공부해라
 CBD, DDD, TDD, Agile …
 알고리즘을 배워라
 자료구조는 기본이다
 알고리즘은 작동여부 뿐 아니라 성능도 중요하다
 H/W 를 알아야 한다
 OS 의 기본 특성을 잘 알아야 한다 – OS 설정은 매우 중요하다
 관심 분야의 Community 활동을 해라
 회사 내부에 전문가가 없다하더라도 국내외에는 상당히 많다
 영어를 못하더라도 상관없다. 외국애들 참 친절하다.
 두가지 이상의 언어를 사용해야 한다 (Polyglat)
20
Programming Languages
21
Best Language for me
좋은 코더가 되려면 1
 내가 짠 코드는 내가 책임진다
 코드가 작동되는 것을 책임진다 (증명한다)
 의사코드(Pseudo code) 와 주석은 꼭 작성한다.
 Logging Frameworks 을 잘 사용해야 한다
 Log 만 보고도 시스템의 활동을 알 수 있어야 한다
 Printf 가 아니다 ㅠ.ㅠ
 읽기 쉬운 코드 (Readable Code) (참고)
 코드는 간결하게, 중복 제거
 Format 은 보기 좋게
 변수는 의미있게 (한글이 아닌 영어 단어로 – JuminNo 
CitizenNo)
 함수명도 의미있게 (전치사를 잘 쓰면 좋다 – With, Of, By, On 등)
22
23
/**
* 예보 발표 시각과 예보 시각에 해당하는 값을 조회한다. DB에 없으면 새로 생성하여 반환합니다.
*
* @param refTimeUtc 예보 발표 시각
* @param forecastTimeUtc 예보 시각
* @return {@link ForecastTime} 인스턴스, 없으면 null 반환
*/
default ForecastTime getOrCreate(@NonNull DateTime refTimeUtc, @NonNull DateTime forecastTimeUtc) {
ForecastTime time = findOne(refTimeUtc, forecastTimeUtc);
if (time == null) {
synchronized (this) {
time = findOne(refTimeUtc, forecastTimeUtc);
if (time == null) {
time = save(ForecastTime.of(refTimeUtc, forecastTimeUtc));
log.debug("새로운 ForecastTime 엔티티를 생성했습니다. {}", time);
}
}
}
return time;
}
1. 주석은 꼭 작성해야 한다
2. Logging 은 필요한 부분에 적절한 LEVEL로 추가한다 (비용문제)
참고 : Top 15+ Best Practices for Writing Super Readable Code
24
public class MongoCacheItem extends AbstractMongoDocument {
private Object key;
private byte[] value;
private long expireAt = 0;
public Object getKey() {
return key;
}
public void setKey(Object key1) {
this.key = key1;
}
public byte[] getValue() {
return key;
}
public void setValue(byte[] value1) {
this.value = value1;
}
public long getExpireAt() {
return expireAt;
}
public void setExpireAt(long expireAt1) {
this.expireAt = expireAt1;
}
private static final long serialVersionUID = 5081372628460588627L;
}
@Getter
@Setter
public class MongoCacheItem extends AbstractMongoDocument {
private Object key;
private byte[] value;
private long expireAt = 0;
private static final long serialVersionUID = 5081372628460588627L;
}
Project Lombok
Java 의 Boilerplate 코드를 최대한 간결하게 줄여라
참고: Reducing Boilerplate Code with Project Lombok
Readable Code Books
25
좋은 코더가 되려면 2
 남의 좋은 코드를 참고하라
 유명한 라이브러리의 소스를 자주 읽어라
 사용하는 라이브러리의 소스를 자주 읽어라
 좋은 코드 작성 능력은 하늘에서 떨어지는 게 아니다
 좋은 소설도 초안이 여러 개이다
 Refactoring 을 습관화하라 (변수명 개선, 구조 개선 등등)
 디자인 패턴을 익히고 적용하라
 디자인 패턴은 코딩 Best Practices
 좋은 라이브러리를 사용해라
 좋은 라이브러리를 채택하는 능력이 중요
 검증된 라이브러리를 잘 사용하는 것이 능력이다
26

More Related Content

What's hot

2020년 12월 20일 개발자 이야기
2020년 12월 20일 개발자 이야기2020년 12월 20일 개발자 이야기
2020년 12월 20일 개발자 이야기Jay Park
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼Kenu, GwangNam Heo
 
이벤트: 마이크로서비스 도입, 이렇게 한다
이벤트: 마이크로서비스 도입, 이렇게 한다이벤트: 마이크로서비스 도입, 이렇게 한다
이벤트: 마이크로서비스 도입, 이렇게 한다Jay Park
 
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서Jeongmin Cha
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드NAVER Engineering
 
2020년 7월 19일 개발 이야기 정리
2020년 7월 19일 개발 이야기 정리2020년 7월 19일 개발 이야기 정리
2020년 7월 19일 개발 이야기 정리Jay Park
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)VMware Tanzu Korea
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER Engineering
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례Jeongsang Baek
 
2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기Jay Park
 
2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기Jay Park
 
2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리Jay Park
 
클라우드 엔지니어 취업 고군 분투기
클라우드 엔지니어 취업 고군 분투기클라우드 엔지니어 취업 고군 분투기
클라우드 엔지니어 취업 고군 분투기InfraEngineer
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료지원 정
 
2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기Jay Park
 
2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기Jay Park
 
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기NAVER D2
 

What's hot (20)

2020년 12월 20일 개발자 이야기
2020년 12월 20일 개발자 이야기2020년 12월 20일 개발자 이야기
2020년 12월 20일 개발자 이야기
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 
이벤트: 마이크로서비스 도입, 이렇게 한다
이벤트: 마이크로서비스 도입, 이렇게 한다이벤트: 마이크로서비스 도입, 이렇게 한다
이벤트: 마이크로서비스 도입, 이렇게 한다
 
Shader Driven
Shader DrivenShader Driven
Shader Driven
 
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
 
2020년 7월 19일 개발 이야기 정리
2020년 7월 19일 개발 이야기 정리2020년 7월 19일 개발 이야기 정리
2020년 7월 19일 개발 이야기 정리
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
 
2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기
 
2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기
 
2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리
 
클라우드 엔지니어 취업 고군 분투기
클라우드 엔지니어 취업 고군 분투기클라우드 엔지니어 취업 고군 분투기
클라우드 엔지니어 취업 고군 분투기
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기
 
2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기
 
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기
 
Cloud developer evolution
Cloud developer evolutionCloud developer evolution
Cloud developer evolution
 
ecdevday7
ecdevday7ecdevday7
ecdevday7
 

Viewers also liked

초보 개발자를 위한 좋은 프로그래머가 되는 방법
초보 개발자를 위한 좋은 프로그래머가 되는 방법초보 개발자를 위한 좋은 프로그래머가 되는 방법
초보 개발자를 위한 좋은 프로그래머가 되는 방법YoungSu Son
 
AWS APAC Webinar Week - 2015 An Amazing Year in AWS
AWS APAC Webinar Week - 2015 An Amazing Year in AWSAWS APAC Webinar Week - 2015 An Amazing Year in AWS
AWS APAC Webinar Week - 2015 An Amazing Year in AWSAmazon Web Services
 
개발자로 사는 길!!! 20141114
개발자로 사는 길!!! 20141114개발자로 사는 길!!! 20141114
개발자로 사는 길!!! 20141114GeniNetworks
 
000001871277_1425351249536_0.35266743797617006
000001871277_1425351249536_0.35266743797617006000001871277_1425351249536_0.35266743797617006
000001871277_1425351249536_0.35266743797617006GeniNetworks
 
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015Amazon Web Services Korea
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기iFunFactory Inc.
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님NAVER D2
 
개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님NAVER D2
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)KH Park (박경훈)
 
E2E-Monitor와 Pinpoint 비교
E2E-Monitor와 Pinpoint 비교E2E-Monitor와 Pinpoint 비교
E2E-Monitor와 Pinpoint 비교Jung Kim
 

Viewers also liked (12)

초보 개발자를 위한 좋은 프로그래머가 되는 방법
초보 개발자를 위한 좋은 프로그래머가 되는 방법초보 개발자를 위한 좋은 프로그래머가 되는 방법
초보 개발자를 위한 좋은 프로그래머가 되는 방법
 
AWS APAC Webinar Week - 2015 An Amazing Year in AWS
AWS APAC Webinar Week - 2015 An Amazing Year in AWSAWS APAC Webinar Week - 2015 An Amazing Year in AWS
AWS APAC Webinar Week - 2015 An Amazing Year in AWS
 
개발자로 사는 길!!! 20141114
개발자로 사는 길!!! 20141114개발자로 사는 길!!! 20141114
개발자로 사는 길!!! 20141114
 
000001871277_1425351249536_0.35266743797617006
000001871277_1425351249536_0.35266743797617006000001871277_1425351249536_0.35266743797617006
000001871277_1425351249536_0.35266743797617006
 
주키퍼
주키퍼주키퍼
주키퍼
 
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
 
E2E-Monitor와 Pinpoint 비교
E2E-Monitor와 Pinpoint 비교E2E-Monitor와 Pinpoint 비교
E2E-Monitor와 Pinpoint 비교
 

Similar to 좋은 개발자 되기

주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기sung yong jung
 
도메인주도설계
도메인주도설계도메인주도설계
도메인주도설계Wonjun Hwang
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기수보 김
 
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석Hosuk Shin
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.효근 박
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처hoondong kim
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it goChris Ohk
 
How to build Design System?
How to build Design System?How to build Design System?
How to build Design System?John Kim
 
Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process uEngine Solutions
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3uEngine Solutions
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견Devgear
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기Chris Ohk
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Eunbee Song
 
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014NDOORS
 
소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵중선 곽
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드Justin Park
 

Similar to 좋은 개발자 되기 (20)

주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기
 
도메인주도설계
도메인주도설계도메인주도설계
도메인주도설계
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기
 
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
GDG Korea campus 새해 밋업 발표자료_플레이윙즈 신호석
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
 
How to build Design System?
How to build Design System?How to build Design System?
How to build Design System?
 
Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)
 
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
 
소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드
 

More from Sunghyouk Bae

JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainersSunghyouk Bae
 
Introduction of failsafe
Introduction of failsafeIntroduction of failsafe
Introduction of failsafeSunghyouk Bae
 
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Sunghyouk Bae
 
Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Sunghyouk Bae
 
Alternatives of JPA/Hibernate
Alternatives of JPA/HibernateAlternatives of JPA/Hibernate
Alternatives of JPA/HibernateSunghyouk Bae
 
Kotlin coroutines and spring framework
Kotlin coroutines and spring frameworkKotlin coroutines and spring framework
Kotlin coroutines and spring frameworkSunghyouk Bae
 
Java naming strategy (자바 명명 전략)
Java naming strategy (자바 명명 전략)Java naming strategy (자바 명명 전략)
Java naming strategy (자바 명명 전략)Sunghyouk Bae
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDDSunghyouk Bae
 
SpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSunghyouk Bae
 
Multithread pattern 소개
Multithread pattern 소개Multithread pattern 소개
Multithread pattern 소개Sunghyouk Bae
 

More from Sunghyouk Bae (16)

JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainers
 
Introduction of failsafe
Introduction of failsafeIntroduction of failsafe
Introduction of failsafe
 
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
 
Spring data requery
Spring data requerySpring data requery
Spring data requery
 
Requery overview
Requery overviewRequery overview
Requery overview
 
Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017
 
measure metrics
measure metricsmeasure metrics
measure metrics
 
Alternatives of JPA/Hibernate
Alternatives of JPA/HibernateAlternatives of JPA/Hibernate
Alternatives of JPA/Hibernate
 
Kotlin coroutines and spring framework
Kotlin coroutines and spring frameworkKotlin coroutines and spring framework
Kotlin coroutines and spring framework
 
Java naming strategy (자바 명명 전략)
Java naming strategy (자바 명명 전략)Java naming strategy (자바 명명 전략)
Java naming strategy (자바 명명 전략)
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
 
SpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSL
 
JUnit & AssertJ
JUnit & AssertJJUnit & AssertJ
JUnit & AssertJ
 
Using AdoRepository
Using AdoRepositoryUsing AdoRepository
Using AdoRepository
 
Multithread pattern 소개
Multithread pattern 소개Multithread pattern 소개
Multithread pattern 소개
 
Strategy Maps
Strategy MapsStrategy Maps
Strategy Maps
 

좋은 개발자 되기

  • 1. 좋은 개발자 되기 개발역량강화 세미나 KESTI 2016-01-08
  • 2. 목차  좋은 개발자란?  어떻게 공부할 것인가?  Programming Language 습득 방법  좋은 개발팀원이란?  좋은 코더란?  전문분야 찾기 2
  • 4. 개발자 분류  Domain 별  Software 산업이라는 것은 모든 산업에 Software를 제공하는 것  정부, 게임, B2C, B2B, O2O, Embedded …  Topic 별  보안, 엔터테인먼트, 오픈소스  Role 별  SI, SM, Service, Infra, DBA, Device  Architecture, PM, Analysis, Consultant  기술 분야  Frontend – Windows, Web, Mobile (iOS, Android …)  Backend – Web, Middleware, Servers (Cache, MQ …) …  Database – DBA, OLTP, OLAP, Big Data 4
  • 5. 좋은 개발자란?  좋은 제품을 만드는 사람  사용성  안정성 (예외처리)  성능  유지보수성  납기 준수, 매뉴얼  논리적 사고, 자기계발  게으름  자동화, 관심  자기주도, 3D  끈기  참고 : 좋은 프로그래머 되기 5
  • 6. 좋은 개발자란? 6 SI • 적기 납품 • Domain 지식 (요구사항 충족) • 유지보수성 Solution • 범용성 (다양한 Needs를 일반화) • 안정성 / 성능 • 자동화 / 매뉴얼 • 호환성 Embedded • 안정성 • 성능 • 호환성 SM •현업과의 소통 •Domain 지식 / 코드 이해력 •시스템 운영 능력 분야별
  • 9. 학습 전략을 짜라  분야별로 10년 학습 Milestone 을 짜라 (Currier Path)  자신있는 분야, 흥미있는 분야부터 공략해라  돈 되는 것, 남이 원하는 것만 하게되면 언젠가 후회한다.  쉬운 것부터 해라  폼생폼사가 아니다.  첨부터 잘하는 놈 없다.  눈에 보이는 것부터 해라 - 남들에게 Feedback 을 쉽게 받을 수 있는 것 을 해라  최종적으로는?  자신이 오래 할 수 있는 것을 해라  성과가 높은 것?  자동화가 가능한 것?  항상 새로운 것? 9
  • 10. 학습전략 10 개발방법론 CBD (UML) Waterfall Agile Language Java (OOP) Python C/C++ Scala (Functional) Frontend HTML / JavaScript jQuery Responsible Web JavaScript Framework NodeJS Backend 자료구조 WAS 멀티스레딩 비동기 분산 서버 DATA RDBMS NoSQL Hadoop Spark Machine Learning Infra OS / Linux Build Automation Docker AWS (Cloud)
  • 11. 11 KEST 개발자 Backend 이론 자료구조 디자인패턴 Framework Spring Framework Spring MVC Spring Data Spring Batch Spring Integration 비동기 Java NIO Concurrency Parallel Programming 분산환경 HA 구성 분산 Cache Frontend JavaScript jQuery AngularJS React Meteor Resposible Bootstrap CSS3 Mobile App Android iOS / Swift Database RDBMS Persistence Framework SQL Mapper MyBatis jOOQ ORM Hibernate JPA Oracle PostgreSQL PostGIS HStore NoSQL MongoDB Redis ElasticSearch InfluxDB
  • 13. 책 읽기 방법  좋은 책을 선택해라  다독보다 양서를 읽어라  변화가 심한 분야는 차라리 Blog Article 을 읽어라  Head First 류는 서점에서 간단히 읽어라 (돈이 아깝다)  추천도서를 우선순위에 둬라 (서평도 꼭 봐라)  되도록 영문원서를 읽을 수 있도록 해라 (SW 정보 변화를 생각해 라)  같은 책을 두번 이상 읽어라  끝까지 읽어라  처음에는 전체 구조 파악을 목표로 하라 (목차, 전체 내용 파악)  두번째는 정독하기 (예제는 실행해보기)  요즘은 예제도 github에 올라온다 (이런 책이 좋은 개발자가 쓴 책이다)  세번째부터는 모르는 부분, 즉시 적용해야 하는 부분 13
  • 15. Programming Language 학습방법  자신에게 맞는 개발 환경을 구축해라  좋은 IDE (VS.NET, IntelliJ IDEA), 코딩용 폰트  언어의 Eco Environments 를 적극 활용하라  빌드 툴 (Maven, Gradle) 을 먼저 익혀라 (Ant 는 잊어라)  개발 프로세스를 먼저 익혀라  소스 관리 툴 (GIT) 을 익혀라  TDD 로 코딩하라  예제도 TDD 로 하라  실제 코딩 전에 테스트 코드로 검증하라  운영 OS 에 대한 기본 지식은 필수이다  프로그램이 구동되는 환경이다  되도록 운영 환경과 같은 환경에서 개발해라 15
  • 18. 좋은 팀원이 되려면  문제를 숨기지 마라  지뢰를 심어놓으면, 나중에 다른 사람이 다친다  문제를 빨리 파악하는 능력을 키워야 한다 (TDD)  남의 문제에 대한 지적질도 매우 중요하다 (대안도 같이 제시)  꼼수는 필요하지만, 나중에 꼭 개선해야 한다 (Refactoring)  논쟁은 필수, 항상 Why 를 생각하라  누가 시켰어요 … (전 생각이 없어요)  지식은 나누면 더 크게 돌아온다  팀원의 경험과 Idea는 나눠야 팀의 역량이 강화된다  Communication Tool 을 적극 활용하라  개발자는 문제 해결사이다  문제 파악 / 문제 해결 경험을 많이 가져라 (직관도 높아진다)  협업 툴을 적극 활용하라  GIT, Wiki, Jira, Build Automation 등을 사용 못하면 팀에서 제외될 수 있다 18
  • 20. 좋은 프로그래머가 되려면  소프트웨어 개발 방법론을 공부해라  CBD, DDD, TDD, Agile …  알고리즘을 배워라  자료구조는 기본이다  알고리즘은 작동여부 뿐 아니라 성능도 중요하다  H/W 를 알아야 한다  OS 의 기본 특성을 잘 알아야 한다 – OS 설정은 매우 중요하다  관심 분야의 Community 활동을 해라  회사 내부에 전문가가 없다하더라도 국내외에는 상당히 많다  영어를 못하더라도 상관없다. 외국애들 참 친절하다.  두가지 이상의 언어를 사용해야 한다 (Polyglat) 20
  • 22. 좋은 코더가 되려면 1  내가 짠 코드는 내가 책임진다  코드가 작동되는 것을 책임진다 (증명한다)  의사코드(Pseudo code) 와 주석은 꼭 작성한다.  Logging Frameworks 을 잘 사용해야 한다  Log 만 보고도 시스템의 활동을 알 수 있어야 한다  Printf 가 아니다 ㅠ.ㅠ  읽기 쉬운 코드 (Readable Code) (참고)  코드는 간결하게, 중복 제거  Format 은 보기 좋게  변수는 의미있게 (한글이 아닌 영어 단어로 – JuminNo  CitizenNo)  함수명도 의미있게 (전치사를 잘 쓰면 좋다 – With, Of, By, On 등) 22
  • 23. 23 /** * 예보 발표 시각과 예보 시각에 해당하는 값을 조회한다. DB에 없으면 새로 생성하여 반환합니다. * * @param refTimeUtc 예보 발표 시각 * @param forecastTimeUtc 예보 시각 * @return {@link ForecastTime} 인스턴스, 없으면 null 반환 */ default ForecastTime getOrCreate(@NonNull DateTime refTimeUtc, @NonNull DateTime forecastTimeUtc) { ForecastTime time = findOne(refTimeUtc, forecastTimeUtc); if (time == null) { synchronized (this) { time = findOne(refTimeUtc, forecastTimeUtc); if (time == null) { time = save(ForecastTime.of(refTimeUtc, forecastTimeUtc)); log.debug("새로운 ForecastTime 엔티티를 생성했습니다. {}", time); } } } return time; } 1. 주석은 꼭 작성해야 한다 2. Logging 은 필요한 부분에 적절한 LEVEL로 추가한다 (비용문제) 참고 : Top 15+ Best Practices for Writing Super Readable Code
  • 24. 24 public class MongoCacheItem extends AbstractMongoDocument { private Object key; private byte[] value; private long expireAt = 0; public Object getKey() { return key; } public void setKey(Object key1) { this.key = key1; } public byte[] getValue() { return key; } public void setValue(byte[] value1) { this.value = value1; } public long getExpireAt() { return expireAt; } public void setExpireAt(long expireAt1) { this.expireAt = expireAt1; } private static final long serialVersionUID = 5081372628460588627L; } @Getter @Setter public class MongoCacheItem extends AbstractMongoDocument { private Object key; private byte[] value; private long expireAt = 0; private static final long serialVersionUID = 5081372628460588627L; } Project Lombok Java 의 Boilerplate 코드를 최대한 간결하게 줄여라 참고: Reducing Boilerplate Code with Project Lombok
  • 26. 좋은 코더가 되려면 2  남의 좋은 코드를 참고하라  유명한 라이브러리의 소스를 자주 읽어라  사용하는 라이브러리의 소스를 자주 읽어라  좋은 코드 작성 능력은 하늘에서 떨어지는 게 아니다  좋은 소설도 초안이 여러 개이다  Refactoring 을 습관화하라 (변수명 개선, 구조 개선 등등)  디자인 패턴을 익히고 적용하라  디자인 패턴은 코딩 Best Practices  좋은 라이브러리를 사용해라  좋은 라이브러리를 채택하는 능력이 중요  검증된 라이브러리를 잘 사용하는 것이 능력이다 26

Editor's Notes

  1. 프로그래밍 언어 중 Java 는 굉장히 쉬운 언어이다. 다만, 같은 의미의 코드 작성 시 장황해지기 쉽다. Lombok Project 의 Annotation 을 활용하면, 코드를 간결하게 작성할 수 있다