JetBrains Day 2018 - The Drive to Develop
๊ฐ๋ธ๋ ์ธ์ฆ ์ฐฌ์ํด
ํด์ธ์ ๊ฐ๋ฐ์ ์ค์ฌ ๊ธฐ์
์ด ์ด๋ค ์์ผ๋ก ์
๋ฌด๋ฅผ ํ๋์ง ์ฟ๋ณผ ์ ์๋ ๊ท์คํ ๊ธฐํ์๋ค๊ณ ์๊ฐํ๋ค.
'Eat your own dog food. '์ ๋ํด ๋ค์ ํ๋ฒ ์๊ฐํด๋ณด๊ฒ ๋์๋ค.
1. ํค๋
ธํธ (Removing barriers)
์ ฏ๋ธ๋ ์ธ์ ์ด๋ป๊ฒ ์ผ์ ํ๋๊ฐ?
์ค์ค๋ก์๊ฒ ํ์ํ ์ ํ์ ์์ฐํ๋ค.
๊ณ์ธต์ ๋ํด์
- ๋๊ตฌ๋ ๋ฌด์์ ๋ํด์๋ ๋งํ ์ ์๋ ๋ชฉ์๋ฆฌ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
(๋ง์ผํ
๋ถ์๊ฐ ์๋๋ผ๋ ๋ง์ผํ
์ ๋ํด์ ๋งํ ์ ์์ด์ผ ํ๋ค.
๊ตฐ์๊ถ์ด ์๋ ์ผ๋ฐ ์ง์๋ ์ด์์ ๋ํด ๋งํ ์ ์์ด์ผ ํ๋ค.)
๋ฌด์์ด๋ ์ธ์ ๋ ์ด๋ป๊ฒ๋ ํ๊ณ ์ถ์ ์ผ์ ํด๋ผ
๊ทธ๋ฆฌ๊ณ ์์ฑํด๋ผ?- ํด๋ผ?
- ๋ฌผ๋ก ํ๋ผ๋ค์ด์ค๋ ์๋๋ค
1. ์
๋ฌด ์๊ฐ์ ์ฅ๋ฒฝ์ ๋ฌด๋๋จ๋ ค๋ผ
- ์ด์งํผ ์ง์ญ๋ณ๋ก ์์ฐจ๋ก ์ธํด ๊ทผ๋ฌด์๊ฐ์ด ์ ๋ถ ๋ค๋ฆ
- rules of engagement
1. ๋ฏธํ
์๋ ์๋ผ
2. Bavaria๊ฐ ์๋๋ผ๋ฉด ์ผ์์ผ์ ์ผํ์ง ๋ง๋ผ
2. ๋ฏธํ
์ ๊ดํ์ฌ
- ์๋ฌด๋ ๋์ ๋ฏธํ
์ ์ํ์ง ์๋๋ค.
- ๋ฏธํ
์๋ ๋ชฉ์ ๊ณผ ์นดํ
๊ณ ๋ฆฌ๊ฐ ์๋ค.
- ๋ฏธํ
์ ์กฐ์ cordination
1. ํ๋์ ์๊ฑด(ํ ํฝ)
2. ์ก์
์์ดํ
- ํ์๊ฐ ๋๋๊ณ ๋์์ ๋ 'ํด์ผ ํ ๋ชฉ๋ก์ด ๋์์ผ๋ง ํ๋ค.'
- Standups
๋ฌด์์ ์ํจ์ธ๊ฐ? ์ํต? ์ ๋ขฐ?
๋์ : ํธ๋ํน ํด, Logging Standups
3. ๋๊ฐ ๋๊ตฌ์ธ๊ฐ?
- traineer ํ๋ฌ๊ทธ์ธ
- ๋๊ฐ ๋ฌด์์ ํ๋์ง ์์์ผ ํ๋ ์๊ฐ์ด ์จ๋ค. (๋๊ตฐ๊ฐ ๊ฐ์ ์์
์ ํ๋ค๋ฉด?)
- ์๋ก์ ์
๋ฌด ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ง์ผ์ผ ํจ.
์ํตํ๋ ๋ฐฉ๋ฒ
์ด๋ฉ์ผ์ ์ค์ฌ๋ผ
์ด์ ํธ๋์ปค๋ฅผ ์จ๋ผ
์ฌ๋ - ๋๋ฌด ๋ง์ ์๋ฆผ, ์์ฃผ ์ค์ํ๊ฑฐ ์๋๋ฉด ๋ง ์ฐ์ง ๋ง๋ผ
PUSH AND PULL
- ์ ๋ณด๋ฅผ ๋๋ฌด ๋ง์ด ํธ์ํ๋ฉด ์๋ฌด๋ ์๋ณผ ๊ฒ์ด๋ค.
- ๋ฌธ์ํ๋ฅผ ํตํด ๋๋ฃ๋ค์ด ์ํ ๋ ์ํ๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ๊ฐ๋๋ก ํ๋ค.
Internal newsletter
Internal conference -> Technical Wednesday's -> Jettles?
Managements
- no mirco-management
- no micro-reporting
- no permissions required (no layer to do somehitng)
๋ชฉํ๋ฅผ ๊ฐ์ง๊ณ ์ผํ๊ธฐ
- series of goals
- provide guidance
- remove obstaclse
์์ ๋กญ๊ฒ ์ผํ๋ผ - ์์ ์๋ ๋๊ฐ๊ฐ ๋ฐ๋ฅธ๋ค
๊ทธ๋ผ ๋ฌด์์ด ํ์ํ๊ฐ?
- ์๊ฐ ์ ๋ฆฌ self-organisation
- ๊ท์จ
- ์ฑ
์๊ฐ
- ์ด๋ป๊ฒ ์ฐ์ ์์๋ฅผ ์ ํ๋๊ฐ
- '์๋ผ'๋ผ๊ณ ๋งํ๋๋ฒ
- ์ด์ ์ ์ธก์ ํ๋ ๋ฒ์ ์๊ธฐ
questioning if what you're doing adds value
๋ชจ๋๊ฐ ์์ ๋ก์ฐ๋ฉด ๋ฌด์์ด ๋ฆฌ๋์ฝ์ธ๊ฐ?
- not being a bottleneck
- Learning to delegate (์ด๊ฑฐํด๋ผ ํ์ง๋ง๋ผ๋ ์ฝ๋ค. ์ด๋ป๊ฒ ํ๋ผ ๋ผ๊ณ ๊ฐ์ด๋ํด์ฃผ๊ธด ์ด๋ ต๋ค.)
- Providing guidacne
- Being candid
- knowing how to listen and be heard
don't moan up cooper steps
2. ํค๋
ธํธ (์ํํธ์จ์ด๋ฅผ ๋ชจ๋ฅด๋ ๋ํ๋ฏผ๊ตญ ๊ธฐ์
์ ์๊ธฐ)
๐ค ๋ฐํ์ : ์์ํ
2๊ธฐ์กฐ์ฐ์ค
์ํํธ์จ์ด๋ฅผ ๋ชจ๋ฅด๋ ๋ํ๋ฏธ๋
๊ธฐ์
์ ์๊ธฐ
๋ง์๊ฐ ๊ฐ๋ฐ์ ์ ์ฉ ์๋น์ค(๊นํ)๋ฅผ ์ธ์ํ ์ฌ๊ฑด
๊ฐ๋ฐ์๊ฐ ์๋ ์ฌ๋์ ์ด๊ฒ์ ์ด๋ป๊ฒ ๋ฐ์๋๋ฆด๊น?
๊นํ ์ธ์ ๊ฐ๊ฒฉ 8์กฐ = ๋
ธํค์ 8์กฐ = ํํ๋ฌ์ค 8์กฐ
VS SW์๋๊ฐ๋ฐํ ์ถ์ง
: ํ๊ตญํ ๊ฐ๋ฐ์ด๋ผ๋ ์ฐ๋ฌผ์ ๋น ์ง ๊ฒ์ ์๋๊ฐ?
๐ค ๋ฐํ์ : Hadi Hariri
annotaion์์๋ enum ์ฌ์ฉ ๊ฐ๋ฅ
inLine ํด๋์ค, ๋ฉ์๋
์ธ๋ผ์ธ ํจ์ : ๋๋ค, ํจ์๋ฅผ ๋ณต์ฌํด๋ค๊ฐ ๋ถ์ฌ์ค๋ค. C์ DEFINE๊ณผ ๊ฐ์ ์ญํ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
return@forEach
crossInline
experimental -> ๋ฒ ํ์๋น์ค
4. IntelliJ tip and ticks
๐ค ๋ฐํ์ : Hadi Hariri
ํด๋ฐ์ค (๋ฌด๋ฃ)
ํญ ๋์ ๋ค๋น๊ฒ์ด์
์ต์
๋๋ธ ์ปจํธ๋กค -> ๋ญ๋ ์ง ๊ตฌ๋ ๊ฐ๋ฅ
run configuration
Live templates
->
์ค๋งํธ ์ปดํ๋ฆฌ์
not null
ํํผ์ปดํ๋ฆฌ์
hippeCompletion
์ฌํํธ์ปค๋งจ๋ ์ํฐ -> ์ปค์๊ฐ ์ด๋์๋ ์ง๊ฐ์ ๋ฌธ์ฅ์ ๋๋ธ๋ค.
json ์ํธ์ํฐ -> json ์ ํ
์ด๋
ธํ
์ด์
@Language("JSON")
์ ๊ท์์ผ๋ก ์ ํํ ๊ฒฝ์ฐ ๋ง๋์ง ์๋์ง๊น์ง ๊ฒ์ฆ ๊ฐ๋ฅ
ideaVim (PlugIn)
AceJump (Plugin) : ๋ฌด์ธ๊ฐ๋ฅผ ๋นจ๋ฆฌ ๊ฑฐ์ํใ
ฃใฑ ์ํ ๊ธฐ๋ฅ
์ํธ+๋ฐฉํฅํค๋ก ์ํ๋ ๋ถ๋ถ ์ ํ
abbriviation ์ผ๋ก ๋จ์ถํค ์์ด๋ ๋ค๋น๊ฒ์ด์
์ผ๋ก ์ฐพ์ ์ ์๋ค.
๋ฐ์ดํฐ ํ์
๋ฟ๋ง ์๋๋ผ ์กฐ๊ฑด, int์ ๊ฒฝ์ฐ
inspection์ผ๋ก ์ฝ๋๋ฒ ์ด์ค๋ก ์ ์ฌ์ ๋ฒ๊ทธ๋ค์ ์ฐพ์์ค๋ค.
-> ์คํธ๋ญ์ณ๋ด ์์น๋ ์ถ๊ฐํ์ฌ ํน์ ๊ตฌ์กฐ์ ์ฝ๋๋ฅผ ํ์ด๋ผ์ดํธ ํด์ค ์ ์๋ค.
-> ๋ฆฌํ๋ ์ด์ค๊น์ง ๊ฐ๋ฅํ๋ค.
structural search -> ํน์ ๊ตฌ์กฐ์ ์ฝ๋๋ฅผ ์ฐพ์์ค๋ค.
์ฌ๋ฌ์ค์ ํจ์๋ฅผ ํ์ฃผ๋ ์ด ์ํ์์ ๋๋ฒ๊น
ํ ๋:
Stream.of(words).distnct
Trace Bug : stream trace ๋ฅผ ๊ฐ๋์๊ฒ ํด์ค
JAVA8 ์ด์ Stream API ์ ์ฉ ์ ์ฌ์ฉ ๊ฐ์ผ
ThrowExcpetion Debugging -> ๋๋ฒ๊น
์ค ์ต์
์
๋ ๋ฆด ์ ์์
duplicate
replaceInheritanceDeligation
Test restful webservice (deprecated)
test.http