3월, 2017의 게시물 표시

개발팀장이 되면서 겪게된 점들 1

이미지
                                                         <팀원을 모집하기 위해 고군분투하는 모습이다. > 첫 한달  개발팀장을 맡다 2021년 5월 , 기존에 있던 CTO분이 휴직(개인사)을 하게 되면서    개발에 대한 모든 권한을 내게 일임하였다.   개발에 대한 모든 의사결정을 전부 내게 맡긴 것으로 ,   어느 정도 규모가 있는 회사의 의사결정권한을 갖게 된 것은 그만큼 내게 큰 신뢰가 있었음을   알수 있게해주는 대목이었다. 그러나 전혀 예측하지 않았던 상황이기에 준비가 되어있지 않았던만큼 처음에는 삐걱거렸다. 가장 첫번째로 어려움을 겪었던 것은 업무의 배분이었다.   관리자가 되니까 해야할일은 업무를 만들고 또 그것을 팀원들에게 분배하고 잘 되고있는지 취합하고 관리감독을 하는것이었다.   군 시절 장교로 복무하면서 겪어봤던 일이긴 했지만, 군복무 당시에도 그닥 잘 하지는 않았던 것 같다.   그럼에도 어쨌든 전반적인 시스템을 이해하고 있었고, 어떻게 구현해야할지에 대해서는 어느정도 경험이 쌓여있었기때문에 큰 문제가 없을 줄 알았다.   실무자로 일을 할 때에도 항상 업무를 받아서 하지는 않았다. 스스로 돌이켜보건대, 나는 주어진 업무가 없으면 스스로 만들어서 제안하고 기획하여 업무를 진행했다.  조그마한 스타트업이었던 첫 회사에서부터  내가 할일은 내가 만들어서 곧 잘했다. 어떤 큰 방향만 정해져있다면 그건 큰 어려움은 아니었다. 나에게 일은 항상 있었다.   매니저가되면서 달라진게있다면 내가 할일만 만드는 것은 아니라는 점이다 . 남이 할 일도 만들어줘야했다.  다행히 팀원들에 대한 면담을 실시한 결과,(팀원을 맡게되자마자 했던 부분)   마이크로 매니징을 원하지는 않았기때문에 큰 그림을 그리는 정도만 준비하면 됐었다.   문제는 내 실무를 동시에 진행하면서 팀원들의 업무 방향도 설정해야했기때문에 시간이 배로 들게 되었다는 점이다. 물론 두배로 일하지는 않았다. 대신에 내 실무시간을 줄였고

프론트개발자 면접 준비/ 공부 4

이미지
Testing Questions: 테스팅에 대해서는 사실 공부가 제일 필요한 곳이다. 관련서적도 읽어볼 필요가 있고, 사실 지금까지 작업하면서 테스팅을 제대로 해본적이 없는 것이 사실이다. 어쩌면 크게 필요성을 못느껴서 찾아보지 않은 것도 있을 것이다. 디버깅과 테스팅작업이야 말로 생산성을 급격히 높일 수있는 방법일 텐데....  이 부분은 큰 취약점임에는 분명하다.  What are some advantages/disadvantages to testing your code? What tools would you use to test your code's functionality? What is the difference between a unit test and a functional/integration test? What is the purpose of a code style linting tool? Performance Questions: What tools would you use to find a performance bug in your code? js관련 질문에서 나왔던 것이랑 겹치는 것 같은데, 지금은 크롬 개발자 도구, 개발툴 (VS code)를 이용할 뿐이다 .  What are some ways you may improve your website's scrolling performance? https://www.html5rocks.com/en/tutorials/speed/scrolling/ Explain the difference between layout, painting and compositing. Network Questions: Traditionally, why has it been better to serve site assets from multiple domains? 속도의 문제이다. HTT

프론트개발자 면접 준비/ 공부 5

이미지
Coding Questions: Question: What is the value of  foo ? var foo = 10 + ' 20 ' ; 형변환 (자바에서는 casting이라고 하던데) 에 대한 질문이다. 답은 1020이다. 숫자는 문자열을 만나면 문자열로 변하게 된다. 문자열을 숫자로 변환하고 싶다면 따로 파싱해주는 메소드를 사용해야 한다.  Question: How would you make this work? add ( 2 , 5 ); // 7 add ( 2 )( 5 ); // 7 function   add ( operand1 ,  operand2 ) {      let   memo ;      if  ( operand1  &&  typeof   operand1  ===  'number' ) {          if  ( operand2  &&  typeof   operand2  ===  'number' ) {              memo  =  operand1  +  operand2 ;              console . log ( memo );         }  else  {              memo  =  operand1 ;         }     }      return   function   addResult ( operand ) {          if  ( operand  &&  typeof   operand  ===  'number' ) {              memo  +=  operand ;              console . log ( memo );         }     }; } 음... 좀 지저분하게 느껴지는건 왜일까.  (a, b)=>b?a+b:c=>a+c; 

프론트개발자 면접 준비/ 공부 3

이미지
JS Questions: Explain event delegation Describe event bubbling. 직역하면 이벤트 위임이라는 것으로 해당 엘리먼트보다 상위 엘리먼트에 이벤트를 달아놓는다.  이벤트 버블현상을 이용해 상위 엘리먼트에서 원하고자하는 객체에서 일어났는지를 판단하는 로직을 넣어 이벤트를 실행하게 해주는 것이 그 원리!  이벤트 버블링은 자식객체에서 이벤트가 발생하면 부모객체로 이벤트가 전달된다는 의미로 이벤트 처리기가 바로 위 엘리먼트들까지 달달 볶는듯한 느낌이다.  Explain how  this  works in JavaScript What is a closure, and how/why would you use one? https://studystorage.blogspot.kr/2017/03/javascript-this-1.html 블로그로 잘 정리한적이 있어서 이것으로 대체! 클로저도 같이 설명을 했는데 왜쓰냐는 질문에는 이렇게 답할 수 있겠다. 캡슐화에 아주 유용하게 쓸 수 있기때문! 프라이빗을 구현할수가 있기때문이다.  Explain how prototypal inheritance works 프로토타입을 이용한 상속과정을 설명하라는 것인데 이것은 꼭 공부할만한 가치가 있다! What do you think of AMD vs CommonJS? https://studystorage.blogspot.kr/2017/03/webpack-javascript.html webpack을 조사하다가 크게 연관성이 있는 것을 확인했다. 이 정도만 알아도 충분 할것 같다. Explain why the following doesn't work as an IIFE:  function foo(){ }(); .   즉시실행함수에 대한 질문이다. 구글링을 해도 답이 명확하게 나오지는 않지만 현재 유추해볼 수 있는 점으로 자바스크립트가 실행되는 과

webpack을 이해하기 위한 javascript 모듈화의 역사

이미지
블로그 이전했습니다~ 링크( https://steemit.com/@cicada0014 )  시작하며 Angular cli 툴을 써서 서버를 가동시키거나 빌드를 할때 터미널에 항상 뜨는 문구가 있다 webpack : Compiling... Angular를 처음 접했을때는 이것이 뭔지 몰랐다. 그냥 필요한거겠지 하고 넘겼었는데, 점차 프레임워크를 파고들고 이해하는 과정에서 꼭 알아야 하는 하나의 관문같은 존재였기에  면접을 준비하면서 제대로 파헤쳐보자는 생각으로 조사를 실시하였다.  나는 맥락을 좋아한다. 전체적인 큰 흐름을 보지 않으면 답답해지고 불안해지는 이상한 정신병을 앓고 있다.  이번에 소개하는 자바스크립트의 모듈화는 아주 거대한 서사시의 일부, 삼국지로 치면 삼고초려같은 하나의 에피소드같은 단편적인 부분이다.  자바스크립트의 허점과 그를 해결하기 위한 움직임  자바스크립트는 웹에서 간편하게 쓰일 수 있도록 설계되었다. 하지만 시간이 지남에 따라 기술이 발전하고, 구현하고자하는 것이 많아지면서 점점 코드의 복잡화가 일어나기 시작했다. 하지만 자바스크립트는 그런 복잡도를 예상하지 못했기때문에 허점이 자꾸 드러나게 되었다.  그 허점의 근간은 전역 스페이스이다. 자바스크립트는 암묵적 전역이라는 개념이 있다고한다. 명시적으로 var라는 키워드를 쓰지 않은 변수는 자연스럽게 전역변수로 인식된다는 것이다. 이 문제는 중첩의 문제로 발견된다.  내가 a라는 변수를 써서 코드를 짰다. 1년 뒤 프로그램이 상당히 복잡해졌을때, 새로운 코드를 짜다가 a라는 변수가 있는지를 모르고 같은 이름의 a변수를 써서 작업을 시작했다. 이렇게 함으로써 전에 쓰던 a라는 변수를 1년뒤에 쓴 a로 덮어써버리게 되었고, 기능상 큰 문제를 야기하게 되었다. 이런 문제점을 해결하기위해 여러가지 방법들이 도입이 된다. 즉시실행함수는 전역을 건드리지는 않았으나 메모리상의 문제가 있었다. 네임스페이