(younggeun0: ๐Ÿข) => dev

์•ˆ๋…•ํ•˜์„ธ์š”!
์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ค‘์‹œํ•˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž '์˜ค์˜๊ทผ'์ž…๋‹ˆ๋‹ค.

ย 

์ผ ๊ฒฝํ—˜


๋ชฐ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.
์†Œํ†ต์„ ์ตœ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉฐ ์ฝ”๋“œ๋ฆฌ๋ทฐ, ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.
ํ•„์š” ์‹œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
๊ทผ๊ฑฐ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
์ž‘์„ฑ๋œ ์ฝ”๋“œ์— ๊ด€ํ•œ ๋‹ค์–‘ํ•œ ์˜๊ฒฌ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.
ํ’€์Šคํƒ์œผ๋กœ ์ผํ•ด ๋ณธ ๊ฒฝํ—˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ตœ๊ทผ claude, cursor ๋“ฑ ์ƒ์„ฑํ˜• AI ๋„๊ตฌ๋ฅผ ์Šค์Šค๋กœ ํ†ต์ œ ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„๋กœ ํ™œ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค.

ย 

๋ฉ”๋””์ฟผํ„ฐ์Šค

FE Developer 2022.11 ~ ํ˜„์žฌ
์ผ๋ณธ ์ปค๋จธ์Šค ํ”Œ๋žซํผ nugu๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.

์ดˆ๊ธฐ์—” ํ’€์Šคํƒ์œผ๋กœ ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค.
UI์˜ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์— ๋ณด๋žŒ์„ ๋А๊ปด ํ˜„์žฌ๋Š” FE ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
skills: {
    fe: {
      // nugu
      react: [
        'Next.js 14 page router',
        'storybook',
        'react-bootstrap',
        'jotai',
        'react-query',
        {
          testing: ['vitest', 'testing-library/react'],
        },
      ],
      // back office
      svelte: ['SvelteKit', 'svelte4'],
    },
    be: {
      python: {
        django: ['django-rest-framework'],
      },
    },
    vcs: ['git', 'github'],
  },
  doing: ['nugu ๋ชฐ ํ”Œ๋žซํผ ๊ฐœ๋ฐœ'],
  done: {
    'nugu ๋ชฐ ์Šคํƒ€์ผ๋ง ์„œ๋น„์Šค ๊ฐœ๋ฐœ - 2025': [
      'hls.js๋ฅผ ์ด์šฉํ•œ ๋™์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ตฌํ˜„',
      'react-virtualized๋ฅผ ์ด์šฉํ•œ ๋ถ€๋ถ„ ๋ Œ๋”๋ง ๊ตฌํ˜„: ์ธํ”ผ๋‹ˆํ‹ฐ ์Šคํฌ๋กค ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์ด์Šˆ ํ•ด๊ฒฐ',
    ],
    'nugu ๋ชฐ UI ๊ณ ๋„ํ™” - 2024': [
      'nextjs12โ†’14๋กœ ๋ฒ„์ „์—…: nextjs ๋งˆ์ด๋„ˆ ์ด์Šˆ ํ•ด๊ฒฐ, ์•ฑ ๋ผ์šฐํ„ฐ๋กœ ์ „ํ™˜ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ฐ˜ ๊ตฌ์ถ•',
      'Figma ๋””์ž์ธ ๊ธฐ๋ฐ˜ ๋””์ž์ธ ๋ฆฌ๋‰ด์–ผ: ๊ธฐํš, ๋””์ž์ธ ํŒ€๊ณผ ํ˜‘์—…ํ•˜์—ฌ UI/UX ๊ฐœ์„ ',
      'Storybook์„ ๋„์ž…ํ•˜์—ฌ ์ผ๋ถ€ ๊ณต์šฉ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์Šคํ† ๋ฆฌ๋กœ ์ถ”์ถœ: ๊ตฌํ˜„์ด ํŒŒํŽธํ™”๋œ ๊ณต์šฉ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ํ†ตํ•ฉ',
      'vitest, react testing library๋กœ ๋ฆฌํŒฉํ„ฐ๋ง ์ง„ํ–‰ํ•œ ์ผ๋ถ€ ์ปดํฌ๋„ŒํŠธ๋“ค TDD ์ง„ํ–‰: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ์•ˆ์ •์„ฑ ํ™•๋ณด',
    ],
    'nugu ๊ธฐํš์ „ ํผ๋ธ”๋ฆฌ์‹ฑ - 2023-2024': [
      '๋””์ž์ธ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ flex, grid๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ',
      '์˜์ƒ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด vimeo sdk, aos ๋“ฑ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉ',
    ],
    'nugu ๋ชฐ, ์–ด๋“œ๋ฏผ(Back Office) ๊ฐœ๋ฐœ - 2022-2023': [
      'cafe24 ๋ชฐ๊ณผ ์–ด๋“œ๋ฏผ์„ ์ž์‚ฌ ๋ชฐ, ์–ด๋“œ๋ฏผ์œผ๋กœ ์ด๊ด€: cafe24 ์ข…์†์„ฑ ์ œ๊ฑฐ',
      '์Šคํฌ๋ž˜ํ•‘์„ ํ†ตํ•ด cafe24 ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜',
      '๊ฒŒ์‹œ๋ฌผ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ(tinymce, ace editor, dropzone) ๊ตฌํ˜„',
      '์นดํ…Œ๊ณ ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ(fancytree) ๊ตฌํ˜„',
      '์ƒํ’ˆ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„',
      '์…€๋ฉ”์ดํŠธ ์ƒํ’ˆ ๋™๊ธฐํ™” ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ',
    ],
  },
}

ย 

์—๋ฒ„์˜จ

FE Developer 2022.03 - 2022.10 (7๊ฐœ์›”)
์ฐจ์„ธ๋Œ€ ๋ฐฑ์˜คํ”ผ์Šค ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ฐ˜์„ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝํ—˜์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ œ์•ฝ ์—†๋Š” ํ™˜๊ฒฝ์œผ๋กœ BE ๊ฐœ๋ฐœ๋„ ํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ๋ฌธํ™”๊ฐ€ ์„ฑ์ˆ™ํ•œ ์กฐ์ง์—์„œ ์ผํ•˜๊ณ  ์‹ถ์–ด ์ด์งํ–ˆ์Šต๋‹ˆ๋‹ค.
{
  skills: {
    fe: {
      js: ['typescript', 'es6'],
      react: ['react-admin', 'mui'], // back office
    },
    be: {
      node: ['express'],
      java: ['spring boot'],
    },
    vcs: ['git', 'gitlab'],
  },
  done: [
    '์ฐจ์„ธ๋Œ€ ๋ฐฑ์˜คํ”ผ์Šค ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ - 2022': [
      'react-admin ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ ์–ด๋“œ๋ฏผ ํŽ˜์ด์ง€ ๊ตฌํ˜„',
      'Keycloak์„ ์ด์šฉํ•œ RBAC SSO ๊ตฌํ˜„',
      'Dooray! ๊ทธ๋ฃน์›จ์–ด ์—ฐ๋™',
      'nivo ๊ทธ๋ž˜ํ”„ ๋ชจ๋“ˆ์„ ์ด์šฉํ•œ ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์ถ•',
      '๊ฒŒ์‹œํŒ์œผ๋กœ ๊ด€๋ฆฌ๋˜๋˜ ๊ณ ๊ฐ ๋ฌธ์˜๋ฅผ ์นธ๋ฐ˜๋ณด๋“œ UI๋กœ ์ด๊ด€: ๊ณ ๊ฐ ๋ฌธ์˜ ๊ด€๋ฆฌ ํ™˜๊ฒฝ ๊ฐœ์„ ',
      'SVN์œผ๋กœ ๊ด€๋ฆฌํ•˜๋˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ Gitlab์œผ๋กœ ์ด๊ด€: ์†Œ์Šค์ฝ”๋“œ ๊ด€๋ฆฌ ํ™˜๊ฒฝ ๊ฐœ์„ ',
    ],
  ],
}

ย 

ํฌ์‹œ์—์Šค

Software Engineer 2019.06 - 2022.02 (2๋…„ 8๊ฐœ์›”)
OZReport HTML ๋ทฐ์–ด ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์— ๋งž์ถฐ ์ผํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.
์ฃผ์–ด์ง„ ๊ณผ์ œ๋ฅผ ์˜๋„๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
์˜ค๋ž˜๋˜๊ณ  ๋ณต์žกํ•œ ์†”๋ฃจ์…˜ ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒฝํ—˜์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์–‘ํ•œ ๊ธฐ์ˆ  ์Šคํƒ์„ ๊ฒฝํ—˜ํ•ด๋ณด๊ณ  ์‹ถ์–ด ์ด์งํ–ˆ์Šต๋‹ˆ๋‹ค.
{
  skills: {
    fe: {
      html5: {
        js: ['vanila js(es5)', 'jQuery']
      },
      flash: ['ActionScript'],
      java: ['Applet'],
    },
    vcs: ['git', 'gitlab'],
  },
  done: {
    '์˜ค์ฆˆ๋ฆฌํฌํŠธ HTML5 ๋ทฐ์–ด ์†”๋ฃจ์…˜ ๊ฐœ๋ฐœ - 2019 ~ 2022': [
      '๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ(IE8~)์„ ๊ณ ๋ คํ•˜๋Š” ๊ฐœ๋ฐœ ๊ฒฝํ—˜',
      '๋™์ผ ๋กœ์ง์„ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์–‘ํ•œ ์–ธ์–ด(C++, C#, Applet, ActionScript)์˜ ์ œํ’ˆ๋“ค์ด ์žˆ์–ด ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ์–ธ์–ด๋กœ ๊ธฐ๋Šฅ ํฌํŒ… ๊ฒฝํ—˜',
      '๋ทฐ์–ด ๋‚ด์šฉ์„ ์Šคํฌ๋ฆฐ ๋ฆฌ๋”(์„ผ์Šค๋ฆฌ๋”)๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ์ ‘๊ทผ์„ฑ ๊ฐœ์„ ',
      '์ „์ž๋ฌธ์„œ ์ถœ๋ ฅ ์‹œ ์ธ์ฆ ๋ฐ”์ฝ”๋“œ ์†”๋ฃจ์…˜ ์—ฐ๋™(MarkAny, SGA)',
      'opencv-js, zxing ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ๊ฐ ์Šค์บ”, ์นด๋“œ ์Šค์บ” ๊ธฐ๋Šฅ ๊ตฌํ˜„',
      '๋ทฐ์–ด ๋™๊ธฐํ™” ์ค‘๊ณ„ ์„œ๋ฒ„ ๋ชจ๋“ˆ ๊ฐœ๋ฐœ',
      'WYSIWYG ํŽธ์ง‘๊ธฐ(summernote) ์ž„๋ฒ ๋”ฉ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ',
    ],
  },
}

ย 

๊ธฐํƒ€ ๊ฒฝํ—˜


ย 

์Œ์šฉ๊ต์œก์„ผํ„ฐ Python&Java ์‘์šฉ SW ์‹ค๋ฌด ๊ฐœ๋ฐœ์ž ์–‘์„ฑ๊ณผ์ • ์ˆ˜๋ฃŒ

2018.10 - 2019.05 (7๊ฐœ์›”) 

ย 

๋ฏธ๋ž˜์œตํ•ฉ์ •๋ณด๊ธฐ์ˆ  ์ธํ„ด

2018.01 - 2018.06 (5๊ฐœ์›”)
์ธํ„ด์œผ๋กœ ๊ฐœ๋ฐœ ์ค‘์ด๋˜ ์†”๋ฃจ์…˜ QA ์—…๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

ย 

์˜๊ตญ ์›Œํ‚นํ™€๋ฆฌ๋ฐ์ด

YMS(Youth Mobility Scheme) ๋น„์ž๋กœ ํ•ด์™ธ ์ฒด๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
2015.06 - 2017.06 (2๋…„) 

ย 

๋™๊ตญ๋Œ€ํ•™๊ต ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด๊ณตํ•™๊ณผ ์กธ์—…

2010.03 - 2018.08 

ย 

์†Œํ”„ํŠธ์Šคํ‚ฌ


ํ•จ๊ป˜ ์ž๋ผ๊ธฐ๋ฅผ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.
์• ์ž์ผ ์„ ์–ธ์„ ๋”ฐ๋ฅด๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
์ ๊ทน์ ์œผ๋กœ ์งˆ๋ฌธํ•˜๊ณ  ์ƒํ™ฉ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
ํ•ด๊ฒฐํ•˜๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ๋Š” ์ ๊ทน์ ์œผ๋กœ ๋„์›€์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์–ด์ง„ ์š”๊ตฌ์‚ฌํ•ญ์ด ํ‹€๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์—ผ๋‘์— ๋‘๊ณ  ๊ณ ๋ฏผํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ์ผ๊ณผ ๋‚จ์˜ ์ผ์˜ ๊ฒฝ๊ณ„๋ฅผ ๋‘์ง€ ์•Š์œผ๋ ค ํ•ฉ๋‹ˆ๋‹ค.
profile