Skip to content

Latest commit

ย 

History

History
186 lines (132 loc) ยท 5.29 KB

1122_JetBrains_Day_2018_The_Drive_to_Develop.md

File metadata and controls

186 lines (132 loc) ยท 5.29 KB

JetBrains Day 2018 - The Drive to Develop

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์ž๋™๊ฐœ๋ฐœํ™” ์ถ”์ง„
: ํ•œ๊ตญํ˜• ๊ฐœ๋ฐœ์ด๋ผ๋Š” ์šฐ๋ฌผ์— ๋น ์ง„ ๊ฒƒ์€ ์•„๋‹Œ๊ฐ€?

3. What's new in Kotlin

  • ๐ŸŽค ๋ฐœํ‘œ์ž : 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