오늘 본 면접에서 1시간 동안 회원가입 페이지를 구현하는 과제 테스트를 받았다. CRA 환경과 Figma 디자인이 주어졌고 onChange시 유효성 검사 조건, input, select, button 요소가 있었다.
결과적으로 보면, 구현의 10%도 하지 못한 것 같다. 나름 분석을 해 보자면 준비가 미흡했던 것, 시간 배분을 잘하지 못한 것, 스니핏이나 프로젝트 베이스의 사용이 익숙해 제로베이스부터 구현하는 훈련이 안되었던 것 등이 현장에서 여과없이 드러났던 것 같다. 덤으로 OS 환경이 달라서 시간이 지체되었다.
그리고 테스트 환경에서 인터넷을 사용할 수 있었지만 (예를 들면 정규식 등) 심리적으로 우왕좌왕하기 바빴던 것 같다. 곧 실력 부족이었다고 생각한다.
어짜피 면접은 끝났고, 어떤 부분에서 취약한지 무엇이 필요한지 알았으니 개선하는 것이 중요하다!
그래서 다시 1시간 동안 같은 조건으로 진행해 보았다. 무엇보다 중요한 건 시간 내에 구현과 왜 그렇게 했는지 코드를 리뷰할 수 있어야 한다. (모범 답안은 아니지만 이 과정 자체를 봐주시면 좋을 것 같다.)
생각해보면, 계획을 세우는 것이 너무 중요하다. 중간에 구조를 바꾸는 것은 심리적으로 부담이 크다. Signup 페이지와 Input, Button, Select 컴포넌트를 생성하고 연결했다.
app
ㄴ page
ㄴ Signup
ㄴ components
ㄴ signup
ㄴ Input
ㄴ Button
ㄴ Select
주어진 Figma의 스타일을 참조하여 작성한다. 우선 반응형웹 조건이 없다면 PC 기준으로 작성한다. 시간이 남으면(?) 모바일에 대응할 수 있도록 고려하는 것도 좋다. 시간적 압박 때문에 css를 컴포넌트와 함께 분리하지 못하고 global css에 작성했다.
// Field Values
const [name, setName] = useState("");
const [company, setCompany] = useState("");
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [confirmPassword, setConfirmPassword] = useState("");
const [business, setBusiness] = useState("");
// Field Validation
const [nameValid, setNameValid] = useState(false);
const [emailValid, setEmailValid] = useState(false);
const [passwordValid, setPasswordValid] = useState(false);
const [confirmPasswordValid, setConfirmPasswordValid] = useState(false);
const [businessValid, setBusinessValid] = useState(false);
const [isAllValid, setIsAllValid] = useState(false);
각 필드별 항목마다 value와 isValid을 작성했다. onChange마다 유효성검사를 진행하여 isValid를 변경해 주었다. useEffect로 hook으로 isAllValid를 체크하여 submit 버튼의 상태를 변경해 주었다.
