해외 취업을 할 것이 아니라 국내 SI 환경에서 일하고 싶다면 외국인과 대화를 할 일은 전무합니다. 그래서 SI 개발자 취업할 때는 아무도 토익 점수 같은 건 물어보지 않습니다. 물론 토익점수가 높다는 것은 더 열심히 살았구나! 정도의 반증은 되겠지만, 실무에서는 큰 쓸모가 있지는 않습니다. 그렇다고 영어를 전혀 못 해도 된다는 뜻은 아닙니다. 개발 자체도 영어로 해야 할뿐더러, 개발에 필요한 지식은 영어인 경우가 대다수입니다. 변수명을 한글로 지을 수는 있겠지만 (테스트 케이스를 만들 때를 제외하고는) 아무도 그렇게 짓지 않잖아요. 추가로 영어 기술 문서는 읽을 수 있어야 합니다. SI에서 주로 사용하는 스프링 프레임워크도 외국에서 만들어졌고, DBMS의 명령어도 모두 영어로 쓰여있습니다. 영어 기술 ..
풀스택 개발자는 프론트엔드, 백엔드를 같이 할 수 있는 사람을 말합니다. 프론트엔드 개발은 클라이언트 사이드, 즉 웹 브라우저에서 작동하는 기능과 모양을 만들어내는 작업입니다. html과 자바스크립트를 써서요. 백엔드 개발은 서버 사이드에서 작동하는 기능을 만들어냅니다. 자바와 SQL 등을 사용합니다. SI에서는 프론트엔드와 백엔드 둘 다 개발합니다. 예전에는 개발자라고 하면 무조건 프론트엔드 백엔드를 같이 할 수 있어야 했는데 사용자들의 눈높이가 높아지고 이에 따라 프론트엔드가 많이 복잡해지면서 두 개의 포지션이 분리되었습니다. 다만 요즘 말하는 프론트엔드 / 백엔드 분리와 SI에서의 분리는 조금 개념이 다릅니다. 최근 커뮤니티나 블로그등에서 백엔드와 프론트엔드를 분리한다는 의미는 프론트엔드가 백엔드와..
개발이든 수정이든 마찬가지입니다. SI는 엄청난 속도로 페이지를 만들어 냅니다. 소위 찍어낸다고 표현합니다. 이게 가능한 이유는 프로그램 구조가 획일화되어있고 익숙해지면 로직을 생각할 필요가 없는 단순한 구조가 많기 때문입니다. C(reate) U(pdate) D(elete)의 경우에는 특별한 구조가 아니면 테이블 하나만을 대상으로 하므로 복잡할 것이 없습니다. 저는 작은 프로그램을 만들어서 반자동으로 만들어 내기도 합니다. 일종의 파이프라인을 만들어내는 겁니다. 전자정부 프레임워크에는 심지어 자동 생성 프로그램도 내장되어 있습니다. 누가 쓰는지는 잘 모르겠지만요. R(ead)의 경우에는 조금 복잡할 수도 있는데, 이것도 익숙해지면 기계적으로 만들 수 있습니다. 복잡도가 굉장한 것이 아니라면요. 속도는 ..
"확장에 열려있는 구조로 개발하세요." 마치 객체지향 방법론에 나오는 멋진 말 같지만 그런 거 아닙니다. SI에서 개발은 최소한의 수정만을 필요로 하는 방법으로 개발해야 합니다. 기능이 하나 바뀌었다고 파일이 6개나 바뀌면 절대 안됩니다. 가능하면 파일 1개, 아니면 2개 정도만 바뀌는 게 최고예요. 3개 이상은 위험 신호입니다. 운이 좋으면 뷰(.JSP) 파일만 바꿀 수도 있습니다. 이렇게 하기 위해서는 처음에 쿼리를 짤 때 당장 사용하지 않는 컬럼도 일단 가져오는 지혜가 필요해요. JSP는 JIT 빌드(Just In Time - 변경이 감지되면 다시 빌드)를 하므로 배포할 때 전체 소스 코드 빌드를 하지 않아 최상의 선택이 되죠. 다만 쿼리문에 select * 는 안됩니다. 감사에서 걸려요. 대부분은..
만약 여러분이 SI를 시작했고 초급 등급인데 AOP, 트랜잭션, 인터셉터 등 공통 설계를 진행하라는 프로젝트에 투입된다면 다음 날 그만두세요. 혼자 하는 프로젝트가 아닌 이상 공통 설계는 경험이 많은 AA, 작은 규모에서는 PL이 설정하는 일입니다. 프로젝트 전반에 영향을 미치는 구조를 초급 개발자에게 맡기는 건 프로젝트를 마치겠다는 의지가 없다는 겁니다. 하지만 어떤 상황에서 어떻게 사용하는 것인지는 익혀두어야 합니다. 프로젝트에 투입되면 개발가이드라는 것이 있습니다. 대부분 개발 가이드에 사용법이 적혀 있습니다. AOP라는 단어는 안 쓰여 있어도 로깅을 어떻게 해야 하는지에 대한 가이드는 있을 거에요. 트랜잭션이라는 말은 안 쓰여 있어도 CUD 연산에는 어떤 방식으로 써야 하는지도 적혀있습니다. 예외..
스타트업에서 필요한 스택과 SI에서 필요한 스택은 전혀 다릅니다. 우선 스타트업의 백엔드 측면을 살펴보겠습니다. 대부분의 스타트업은 자체 서비스를 만들기 위한 개발을 합니다. 망하자고 스타트업을 시작하는 사람은 없으므로 더 오래갈 수 있는 단단한 코드를 만드는 데 신경을 많이 씁니다. 만든 사람이 유지 보수해야 하기 때문입니다. 따라서 코드에 업무 도메인이 가능한 한 많이 녹아있는 형태로 만듭니다. python이나 nodejs 등 스크립트 언어를 많이 쓰는 것도 수정해야 할 때 코딩양을 줄이기 위해서입니다. ORM 을 쓰는 것도 언제 데이터베이스가 변경될지 모르기도 하고, 도메인 객체를 코드로 표현하기 위함입니다. 따라서 스타트업에게 데이터베이스는 그냥 저장소고, 업무는 코드에 녹아있습니다. SI는 남이..