연봉이 조금 올라도 정말 큰 차이가 날까 최종 업데이트 2026 년 4 월 15 일 작아 보이는 연봉 인상도 복리로 쌓이면 수십 년 후에는 엄청난 차이가 돼요 astro island astro slot astro static slot display:contents function let e async e await await e self.Astro self.Astro only e window.dispatchEvent new Event astro:only function function e t babel helpers typeof return e typeof Symbol function typeof Symbol.iterator symbol function e return typeof e function e return e typeof Symbol function e.constructor Symbol e Symbol.prototype symbol typeof e e t function t t n if e t object t return t var r t Symbol.toPrimitive if r void 0 var i r.call t n default if e i object return i throw TypeError toPrimitive must return a primitive value return n string String:Number t function n n var r t n string return e r symbol r:r function r e t r return t n t in e Object.defineProperty e t value:r enumerable 0 configurable 0 writable 0 e t r e let i __PURE__ new Set __proto__ constructor prototype let e 0 e a e 1 e n e 2 e new RegExp e 3 e new Date e 4 e new Map n e 5 e new Set n e 6 e BigInt e 7 e new URL e 8 e new Uint8Array e 9 e new Uint16Array e 10 e new Uint32Array e 11 e 1 0 e t t let n r t return n in e e n r void 0 n e e.map t a e typeof e object e e:Object.fromEntries Object.entries e map e n e t n class o extends HTMLElement constructor e super e r this Component void 0 r this hydrator void 0 r this hydrate async var e if this.hydrator this.isConnected return let t e this.parentElement null void 0 e.closest astro island ssr if t t.addEventListener astro:hydrate this.hydrate once 0 return let n this.querySelectorAll astro slot r i this.querySelectorAll template data astro template for let e of i let t e.closest this.tagName t null t.isSameNode this r e.getAttribute data astro template default e.innerHTML e.remove for let e of n let t e.closest this.tagName t null t.isSameNode this r e.getAttribute name default e.innerHTML let o try o this.hasAttribute props a JSON.parse this.getAttribute props catch e let t this.getAttribute component url n this.getAttribute component export throw n t export n console.error hydrate Error parsing props for component t this.getAttribute props e e await this.hydrator this this.Component o r client:this.getAttribute client this.removeAttribute ssr this.dispatchEvent new CustomEvent astro:hydrate r this unmount this.isConnected this.dispatchEvent new CustomEvent astro:unmount disconnectedCallback document.removeEventListener astro:after swap this.unmount document.addEventListener astro:after swap this.unmount once 0 connectedCallback if this.hasAttribute await children document.readyState interactive document.readyState complete this.childrenConnectedCallback else let e document.removeEventListener DOMContentLoaded e t.disconnect this.childrenConnectedCallback t new MutationObserver var t t this.lastChild null void 0 t.nodeType Node.COMMENT_NODE this.lastChild.nodeValue astro:end this.lastChild.remove e t.observe this childList 0 document.addEventListener DOMContentLoaded e async childrenConnectedCallback let e this.getAttribute before hydration url e await import e this.start getRetryImportUrl e let t new URL e document.baseURI return t.searchParams.set astro retry Date.now toString t.toString async importWithRetry e try return await import e catch t return await new Promise e setTimeout e 1e3 import this.getRetryImportUrl e handleHydrationError e let t this.getAttribute component url n new CustomEvent astro:hydration error cancelable 0 bubbles 0 composed 0 detail error:e componentUrl:t this.dispatchEvent n console.error astro island Error hydrating t e async start let e JSON.parse this.getAttribute opts t this.getAttribute client if Astro t void 0 window.addEventListener astro t this.start once 0 return try await Astro t async let e this.getAttribute renderer url try let t default:n await Promise.all this.importWithRetry this.getAttribute component url e this.importWithRetry e Promise.resolve default r this.getAttribute component export default if r.includes this.Component t for let e of r.split if i.has e this.Component typeof this.Component object typeof this.Component function Object.hasOwn this.Component e throw Error Invalid component export path r this.Component this.Component e else if i.has r throw Error Invalid component export path r this.Component t r return this.hydrator n this.hydrate catch e return this.handleHydrationError e e this catch e this.handleHydrationError e attributeChangedCallback this.hydrate r o observedAttributes props customElements.get astro island customElements.define astro island o 이런 도구도 있어요 FIRE 계산기 나는 정말 조기 은퇴할 수 있을까 복리 계산기 내 돈이 실제로 얼마나 불어날까 기회비용 계산기 이 돈을 투자했다면 얼마가 됐을까 스킬 투자 ROI 계산기 학습의 시간과 비용 vs 연봉 인상 회수 기간과 IRR 계산 FIRE 계산기 몬테카를로 시뮬레이션으로 경제적 자유 달성 확률 계산 실질 시급 계산기 통근 준비 시간 업무 관련 지출을 뺀 진짜 시급은 얼마 500 만원 인상은 500 만원이 아니다 세 가지 복리 층 연봉 500 만 인상은 동시에 세 가지 미래 인상의 더 높은 베이스 더 큰 퇴직연금 적립 영구적 투자 가능 잉여 각 층이 독립적으로 복리되고 쌓인다 첫 연봉 협상이 이후 모든 협상을 능가하는 이유 초봉은 모든 퍼센트 인상이 곱해지는 베이스가 된다 같은 500 만 협상을 25 35 45 세에 실행 25 세는 같은 대화에서 8 배의 평생 영향을 얻는다