내가 신분당선을 오랫동안 타오면서 매번 느끼는 점은 속도제한 90km를 정말 악착같이 지키려고 한다는 점이다. 신분당선은 무인으로 운영되기 때문에 가속과 감속 방식은 미리 프로그래밍되어 있으리라 추측한다(물론 일부는 사람이 직접 중앙통제 하겠지만). 이 부분에 크게 불편함을 느껴본 적은 없지만 속도제한에 대해서는 시스템상으로 매우 엄격하게 lock 이 걸려있는 것 같다.
신분당선 객차안에 모니터 상에는 속도가 표시되는데, 90km를 넘기면 곧바로 브레이크를 작동시켜 속도를 떨어뜨린다. 문제는 이 브레이크의 강도가 꽤 세기 때문인지 서있는 사람들은 모두 몸이 휘청일 정도이다. 그렇게 속도를 떨어뜨리고 나서 3초정도 지나면 다시 90km를 넘겨서 브레이크를 작동시켜 또 몸이 휘청인다. 이러한 가속과 감속의 울렁임은 다음 역에 도착할 때까지 계속 반복된다. 예민한 사람이라면 다들 신분당선을 타면서 이러한 불편한 승차감을 직접 체감했을 것이다.
왜 이런 방식의 로직으로 설계되었는지 의아하다. 90km를 넘기면 정말 엄청난 큰일이라도 나는걸까? 하다못해 브레이크 작동 방식이라도 조금 매끄럽게 수정하면 훨씬 승차감이 나아질텐데 말이다. 만약 열차가 아니라 일반 승용차를 이런 방식으로 운전한다면 실로 비효율적인 운전이 아닐 수 없다. 가속페달을 밟다가 특정 속도에 도달하면 브레이크를 밟으면 그만큼의 동력손실이 생기기 때문이다. 코드 관점으로 가속/감속 방식을 생각해보면 아래 유사코드처럼 가장 단순무식한 형태로 코딩되지 않았을까 싶다.
while(!다음역 도착)
if(speed >= 90) 브레이크()
else 가속()
실제 현업에서는 내가 모르는 중대한 기술적 문제로 인해 이러한 방식이 불가피할수는 있다.하지만 개발자 입장에서는 떠올리기 쉬운 로직일지는 모르지만, 그 로직이 적용되고 있는 현장에서는 예상치 못한 불편함이 따라올 수도 있다는 점을 항상 명심해야한다.