728x90
반응형

양파님 페이스북에서 퍼왔습니다.

https://www.facebook.com/seattleyangpa/posts/1736487633303383

 

예전에 썼던 글 - 이런 IT 회사에서 일하지 말자

늘 그렇듯이, 난 한국 사정 잘 모르니까 이건 어디까지나 외국 회사에 해당된다는 것을 전제로 한다.

초보에게는 첫 3-5년이 정말 중요하다고 본다. 본인도 아주 열심히 일할 준비가 되어 있고 정말 많이 배울 수 있는 기회인데 직장 잘못 들어가면 이직이 힘든 것은 물론이고, 힘들게 배운다고 투자한 시간 역시 시간낭비일 가능성이 높기 때문이다. 그러므로 월급이 짜더라도, 그 외의 조건이 안 좋더라도, 다음의 조건에 해당되지 않는 회사를 찾는 쪽이 낫다고 본다.

1. 버전 콘트롤 시스템이 없다

CVS, SVN, Perforce, 요즘 뜨는 github 등등, 뭘 쓰든지 별 상관없다. 하지만 버전 콘트롤 시스템을 안 쓰는 회사라면 진짜 정말 개발의 기본이 안 되어 있는 회사다. 그거 자체가 흠은 아닌데, 이런 회사에서 일하다보면 경험을 쌓는 귀중한 시간이 버전 컨트롤로 간단히 해결 될 수 있는 문제를 해결하는데에 허비하게 된다 (업계 용어로 '개삽질').

2. Automated deploy system, build system 이 없다

위의 이유와 같다. 여러가지 environment 에 자동으로 디플로이 되는 빌드 시스템이 없으면 일 하면서 최소한 30% 는 멍멍이 삽질에 시간을 버린다는데에 돈 걸 수 있다.

그러면 빌드 시스템 쓴다고 개삽질 안 하느냐 하면 그건 아니죠. 하지만 시스템이 있는 회사와 없는 회사의 차이는, 있는 회사에서의 개삽질은 돈 되는 개삽질이라는 차이. 업계에서 곧잘 쓰이는 빌드 시스템 두세개 정도로 개고생 몇 년 했으면 나중에 devops 로 취업이 쉬워진다. 단순한 시스템 애드민보다 전문적인 devops 는 훨씬 전망이 좋다.

3. 모니터링 시스템이 없다

전체 시스템 상태를 모니터하고 혹시라도 문제가 있으면 alert 가 날아가는 솔루션이 설치되어 있지 않다면 시스템 관리가 그리 중요하지 않다는 말이다. 그리고 프로가 아닌 이들을 들들 볶는다는 말도 된다. 코딩이면 코딩, 시스템 애드민이면 시스템 애드민 뭐 이렇게 특화가 필요한데 사이트 다운 될 때마다 불려가면 이것도 저것도 안 된다.

4. 테스터가 없거나, 테스팅 environment, staging environment 가 없다

이것 역시 '특화문제'에 해당된다. 코딩하는 사람이 테스트 하면 안 된다는 말은 당연히 아니다. 유닛 테스트 쓰는 건 기본이어야 하고 버그도 고쳐야 하지만, 테스터가 없고 테스팅 환경이 없다면 이건 절차 자체를 모른다는 말이다. 그러므로 문제 해결하며 코딩할 시간에 유저 문제를 디버깅 한다거나, 그 외 상관 없는 문제 해결하느라 시간낭비할 가능성이 높다. (유닛 테스트 엄청 잘 되어 있고 Continuous Integration 잘 되어 있으며 디플로이 시스템 잘 셋업 되어 있는 회사 중에서는 따로 테스터들이 없는 케이스가 있긴 하다.)

5. 유닛 테스트를 안 쓰고, 코드 리뷰가 없다

난 실용주의자고 도덕적/종교적인 부분은 거의 없다고 자부한다. 유닛 테스트를 꼭 해야 된다 아니다를 떠나서, 유닛 테스트를 쓰는 곳에 처음 일해야 하는 이유는, 요즘은 유닛 테스트가 완전 기본이기 때문이다. TDD 까지 하는 마당에 유닛 테스트를 안 썼다고 하면, 자동 빌드도 없었다는 말이고, 그렇다면 정말 후진 곳에서 일했다고 깔봄 당하는 것은 물론이요, 이직 힘들어진다. 면접 볼 때 유닛 테스트 안 쓰고 코드 리뷰 안했다 말하면 (==> 자동 빌드 없었고 모니터링 없었고 테스트 자체가 없었다는 말) 자동적으로 개발 경험 자체를 다운그레이드 해버린다.

코드 리뷰 참 중요하다. 특히 코드 잘 하는 사람과 코드 리뷰를 정기적으로 하면 정말 많이 배운다.

5. 버그 트랙킹 시스템이 없다

버그 트랙킹 시스템 혹은 티켓 시스템이 없다면, 문제가 생길 때마다 아무나 불러서 고치라고 시킨다는 것이고, 그렇다면 시스템 릴리즈 스케줄 이런 것도 없고, 버그 고쳤는지 안 고쳤는지 체크하는 방법은 '물어보는 것'이며, 제일 기본적인 문서화도 안 되어 있다는 말이다. 여기에서 열심히 일 하는 거는... 위에서도 말했지만 멍멍이 삽질이다.

6. 개발자에게 웹 디자인을 시킨다던지, 하드웨어 서포트를 요구한다

이것 역시 '특화'문제에 해당한다. 그 자체로는 별 문제가 없다. 나도 포토샵 조금 쓸 줄 알고 웹 개발하니까 기본적인 CSS 랑 디자인 한다. 그리고 새로 시작한 동료라면 이런 저런 서포트 해주는 것도 당연하다. 하지만, 그걸 정상으로 생각하고 업무의 연장으로 본다면, 당신의 상관은 IT 개발에 대한 기본적인 개념이 없고, 당신은 시간낭비만 징하게 한다.

웹 디자인이나 하드웨어 서포트가 안 좋다는 말이 아니다. 여러가지를 한꺼번에 할 거면 시너지가 나는 것을 해야 하는데 (예를 들어 한식 전문이지만 중식이랑 양식도 한다거나) 별 연관이 없는 거 하면 커리어에 도움은 덜 된다 (다림질이랑 군고구마 굽기라던가...).

============

대강 생각나는 것만 적었는데, 결국 결론은 -

- 어차피 첫 직장에선 삽질하면서 개고생하게 된다. 이왕에 고생하는 것, 좀 배워서 도움 되는 고생을 하자 
- 이직 할 때 물어보는 기본적인 질문이 있다. 이럴 때 저 위에 있는 리스트 경험 없다고 하면 점수 확 깎인다

===========

여기까지가 예전에 쓴 글인데 조금 더하자면.

구인광고에서 찌리릭 오는 느낌을 보자.

좀 뻔한 것부터. High-pressure environment. 일 많이 시키고 주말 근무도 수당 없을 가능성 상당히 높다. 이럴 때 특히 펀드나 은행이라면 꼭 물어봐야 할 것이, 프론트 오피스/ 트레이더 들하고 일하느냐 아니냐다. 원래 위에서 압박이 심하다고 해도 현장 상황 아는 보스가 압박하는 거랑, 뭐 모르지만 어쨌든 내놓으라고 갑질하는 윗사람이랑 아주 다르잖소? 그런데 트레이더랑 일한다 혹은 트레이딩 데스크하고 일한다고 하면, 그 회사에서 갑중의 갑 트레이더 님들이 IT 시스템은 모르지만 어쨌든 해 놓으라고 하면 해야 되는 것이다.

제일 무서운 두 단어가 DSL 하고 in-house 이다. 이거 두개를 한꺼번에 썼다면 게임 오버다 (....인데 이번 면접이 그거 두 개 다 쓰는 곳이었음 ㅋㅋㅋ 연봉이 너무 세서 혹했습니다. ㅋㅋ 뭐 어쨌든 망했으니 넘어가고) DSL 이 뭐냐면 domain specific language. In-house 는 자기 회사에서만 쓰는 시스템이라는 거. 이런 데 가면 그러니까 자기네 회사에서만 쓰는 시스템이나 언어로, 자기네 회사에서만 통하는 일을 한다는 거다. 업계 표준 안 쓰고 회사 내에서 쓰라고 하는 시스템을 쓴다는 것은 뭐 꼭 나쁜 건 아니다. 구글에서 깃 안쓰고 도커 안 쓴다고 해서 (쓰는지 안 쓰는지 나는 모르겠지만 뭔가 자기네 거 만들어 쓰겠지) 뭐라 할 사람 없다. 하지만 비 테크 회사에서 이상한 인 하우스 언어 쓰거나 DSL 로 일 해야 한다 하면 경력 관리는 대략 박살난다고 할 수 있다. 그래서 대신 얻는게 커야 한다. 연봉이 엄청 빡세거나, 아니면 한 번 일을 배워두면 평생 도움 되는 혹은 내가 하고 싶어하는 분야라던지 - 픽사 같은 회사는 표준 3D 시스템 안 쓰고 DSL/ 인하우스 시스템이 있을거라 생각하는데 그 업계 최고 회사라면 그냥 닥치고 일 배우는게 선방이겠죠.

풀스택. 작은 회사이고 사장이 기술적이지 않다면 "너한테 컴퓨터 관련된 건 다 시켜먹겠다"이고, 사장이 기술적이라면 "너 개발 관련된 건 다 시켜먹겠다" 이다. 그러므로 기술적인 사장이라면 최소한 데스크탑 서포트랑 포토샵은 안 해도 될 거다. 큰 테크회사에서 풀스택 원한다고 하면 "우리 팀에 따로 디자이너나 UI 하는 사람 없고 급하면 너도 시킬거니까 CSS, Javascript 모른다고 하면 가만두지 않겠다", 혹은 "데브옵스 팀 없으니 온 콜 대기해서 고치는 것도 좀 하고 Nagios 정도는 깔아서 모니터링 시스템 구현할 줄 알고 빌드 시스템도 좀 고칠 줄 아는 걸 바라고 있다"... 정도겠다. 완전 반대로 신기술인데 "XYZ 기술 10년 경력자" 라고 써 있으면... 담당자가 구인 광고 쓰는 것도 귀찮아서 인사과로 토스해서 나온 광고이므로 실제로 가서 면접 보면 광고랑 많이 다를 수 있다는 말 되겠다.

아. 또 길어졌다. 여기서 그만.

반응형
728x90
반응형

갤러리에서 이미지를 선택해서, 현재 액티비티의 이미지뷰에 띄우려는 간단한 코드를 실행하려고 했다.

근데 이상하게도 절대 onActivitiResult가 안되고 액티비티가 종료되어버리는 현상이 발생했다.

 

원인은 간단했는데, 현재 액티비티를 실행할 때 설정해주었던 플래그 때문이었다. 

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

 

구글링 해 본 결과, 이미지 등을 가져오는 액티비티에 대해선 아래와 같이 플래그를 설정해주어야 한다.

 intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);

 

 

문제 해결!

 

이외에도 실행이 안된다면, onActivityResult에서 받아오는 requestCode, resultCode 값들을 로그로 출력해서 무슨 값인지 확인해봐야한다.

 

참고 블로그 : http://theeye.pe.kr/archives/1298

반응형
728x90
반응형

파일 절대경로(absolutePath) 로부터 Uri 얻는 방법

 

반응형

'Tech > 안드로이드' 카테고리의 다른 글

[안드로이드] onActivityResult 가 실행이 안될 때  (0) 2019.04.13

728x90
반응형



Gradle 파일에 'compile' 이란 단어가 없는데, 

자꾸 Android Studio 에서 Error 메세지로, 

Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.

라고 할 때,

 

문제는 여기에 있다.  

build.gradle file - apply plugin: 'com.google.gms.google-services' 


 'com.google.gms.google-services'  이 라이브러리의 버전을 최신 버전으로 설정해주면 Gradle 단에서 발생하는 

에러는 해결할 수 있다. 

반응형

+ Recent posts