이제는 기술적 취향이라는 걸 이야기할 수 있지 않을까란 생각이 들었다. 그렇게 많은 일을 해본 건 아니라서 아 이건 정말 싫다, 이건 하고 싶지 않다를 이야기하게 될 것 같지만 말이다.

나는 PLC로 엔지니어를 입문했다. PLC 는 모터와 릴레이 같은 전기전자 부품들을 프로그래밍을 통해 컨트롤 하는 컨트롤러로 제법 다양한 기술현장에서 쓰인다. 그리고 그 PLC는 래더 라는 언어를 통해 프로그래밍 된다. 래더 라는 언어만 있는 건 아니지만 보통은 래더가 쓰인다. 상대적으로 쉬운 편이니까, 래더는 전기회로 기호들을 프로그래밍화 했다고 생각하면 된다. 그래서 스위치가 있고, 코일이 있고, 전선처럼 선을 그려 OR, AND를 표현해서 프로그래밍을 한다. 그리고 보통은 PLC 메모리 주소를 직접 할당한다. 예를 들어 미쓰비시 PLC 기준으로 M000 은 000번째 비트 메모리, D000은 000번째 1바이트 워드 메모리인 형식이다, 그래서 엑셀을 통해 여기서부터 여기까지는 이 용도로 쓸 것을 정리하고, 그것을 PLC 프로그램에디터에 메모리 주석으로 넣고, 작업을 하는 식이다.

PLC 프로그램은 굳이 따지자면, 정적이고, 강타입이고, 컴파일 언어인 편이다. 디버깅의 효율을 위해 PLC 와 통신하면 내부 데이터를 볼 수 있지만 그건 디버거니까 그런거지 굳이 따지자면 정적, 강타입, 컴파일 언어인 편이다. 그 일을 4년 정도 했고, 취향이 그렇게 굳혀진 것 같다.

기본적으로 한국의 IT는 2가지 형태로 이루어져 있다고 생각하는 편이다. 무언가를 고객사에 납품하거나, 자기가 만들어서 서비스하는 형태로 크게 나누어져 있다. 흔히 가지 말라는 SI는 공공기관 등의 웹사이트를 자바 스프링과 오라클 데이터베이스로 만들어서 납품하는 형태의 기업을 이야기하는 것이다. PLC 를 하면서 했던 일도 유사했다. 고객사에 장비를 만들고 PLC로 프로그래밍 하고, 공장에 납품하고, 테스트하고, 유지보수하는 형태의 사이클로 돌아갔는데 SI도 비슷한 느낌이다.

서비스 쪽은 깊게 해본 적이 없어서 모르겠다. 하지만 고객응대를 해보니 고객은 좀비 같다. 무척이나 이해하기 어렵다. 고객 상담은 본디 말로 화난 좀비를 상대하는 일이구나 하는 생각이 들었다.

SI 형태의 일들은 무척이나 짜증이 나는 일이다. 가끔은 이게 내가 할 일이 맞나 라는 생각이 드는데 나는 특히 문서들을 쓸 때 무척이나 그런 생각들이 들었다. 발주서, 견적서, 유지보수 상세 내역서, 이걸 내가.? 이래서 PM을 잘 만나야 하지만 좋은 PM은 항상 우리 팀에 없거나 우리 회사에 없다 원래 남은 다 잘하고, 우리는 다 못한다.

결국 이건 기술적 취향이라고 적었지만 일의 취향이라고도 할 수 있을 것 같다. 결국 엔지니어는 기술로 일을 하는 사람이니까 말이다.

일을 해보니 나는 내가 납득할 수 없는 일과 고객 응대를 하기 무척이나 힘든 사람이었다. 나는 내가 흥미를 느끼는 류의 일들을 하는 사람이라고 생각한다. 서버엔지니어에게 견적서나 발주서 요청 같은 일들은 확실히 납득하기 어려운 일이다.

나는 컴퓨터 시스템에 대해 흥미를 느끼고 더 알고 싶다. 보통은 이렇게까지 흥미를 가지지 않던데 신기한 일이다. 그래서 일단 파이썬이나 PHP, 자바스크립트 같은 동적 인터프린터적인 무언가는 무척이나 낯설다. 파이썬이나 PHP, 자바스크립트가 무척이나 다양한 곳에서 쓰이는 걸 생각하면 알긴 알아야겠지만 취향은 아닌 편이다.

그리고 자바는 정적이고 컴파일 언어에 좀 더 가까운 편이라고 할 수 있을텐데 내 인생 목표는 살면서 자바 안 하기다. 자바를 잘 아는 건 아니지만, 뭔가 자바 스프링을 잘못 배우면, SI 같은 곳에서 고생할 것 같다는 생각이 들었다. 이렇게 쓰고보니 나는 웹을 하면 안되는 걸지도 모르겠다. 자바스프링, PHP, 자바스크립트 모두 웹에서는 무척이나 많이 쓰이니까

그럼 어떤게 취향에 맞냐라고 물어본다면 지금 생각으로는 C/C++, Rust, Golang을 사용한 시스템적인 무언가가 썩 재밌을 것 같다 프로그래밍을 PLC로 입문한 시점에서 그렇게 될 수 밖에 없는 건가 싶기도 하다. 취향이나 실력이나 그런 건 결국 익숙함의 문제니까 말이다. 굳이 임베디드라고 이야기하지 않는 이유는 시스템적 무언가가 임베디드만 있는 건 아니니까 굳이 그렇게 적지 않았다.

하지만 결국 이건 취향이다. 내가 싫어도 쓸 때가 되면 적당히 배우고 적응해서 쓰겠지 원래 엔지니어들은 그런 존재이다