나의 Manifesto 

 

나는 불가능한 것이 있다고 믿기를 거부한다. 

그리고 무엇보다 해야할 일을 중요시 한다. 

 

나는 가장으로써 나와 가족의 건강을 돌보며, 가정내의 행복을 추구한다.

나는 소프트웨어 개발자로써 소프트웨어 개발의 탁월성을 추구한다. 

나는 프로젝트 매니저로써 가치 있는 소프트웨어를 지속적으로 전달한다.

나는 리더로써 구성원들의 발전을 이끌어 낸다.

나는 경영진으로써 대표이사를 보좌하여 회사가 올바른 방향으로 나아갈 수 있도록 감시 조력한다.

 


매일 아침 일어나 가장 먼저 나의 선언문을 낭독 혹은 필사한다.

처음에 두줄이었던 선언문이 지금은 꽤 길어 졌다. 

 

20년 가까운 사회생활에 나의 R&R은 시작보다 훨씬 다양해졌고, 나의 욕구 역시 복잡해졌다. 

이런 점들이 때로는 서로 보완하여 발전적인 상태로 이끌기도 하지만, 대부분 충돌하여 혼란스러운 상태로 이끈다.

 

충돌이 발생할때마다 선언문을 곱씹으며, 각 Role이 가지는 근본적인 가치를 훼손하지 않는 선에서 의사 결정을 하도록 노력한다. 

 

책을 읽기 전에, 

내가 생각하는 프로덕트 오너의 정의

  • Product 에 대한 최상위 의사 결정권자
  • Product가 나가야할 방향을 설정하는 전략 수립가
  • PM이 없는 경우 Management도 해야 한다.

이 책을 읽고 나면 PO에 대한 개념이 좀더 명확해 질까? 

 

책을 읽고 나서, 

내가 읽기전에 생각했던 것과 별반 다르지 않았다.

회사의 사정에 따라 PO의 역할 범위에 차이가 있겠지만, PO의 주요 미션은 Product가 나아가야 할 방향을 설정하는 것이고, 이를 전파 하는 것에 있다. 

스타트업 혹은 소기업인 경우에는 CEO가 PO를 겸임 하는 것이 바람직할 것이며, 실제로 PO라는 용어를 사용하지 않을 뿐 현실세계에서도 그렇게 동작하고 있다. 

 

이 책은 PO가 해야하는 일, 그리고 알아야 하는 일들에 대한 INDEX를 제공하고 설명한다.

그렇기에 내용을 깊이 있게 다루지 않는 아쉬움이 있지만, 그 자체만으로도 충분한 가치가 있다. 

 

Product "Owner"라는 새로운 용어/직함이 권워적이기에 거부감을 느끼는 사람도 있겠지만, 나는 최상위 의사결정권자라는 것을 명시하기에 좋은 용어라고 생각된다.

 

PO vs PM 

업무가 상당히 겹쳐보이기 때문에 차이가 없다 생각할 수 있다. 실제로 현업에서는 구분되지 않는 경우도 많다. 

하지만 이 두 Position은 많이 다르다.

 

PO는 Product의 방향성을 설정하는 것이 주요 임무이고,

PM은 Product 개발,운영을 관리하여 올바르게 실행하도록 하는 것이 주요 업무이다. 

 

권하고 싶은 사람들

창업가 및 회사 경영진들에게 한번쯤 권하고 싶다.

그리고 리더 포지션의 모든 이들에게 교양서적으로 권하고 싶다.

 

 

1. Twitter API 찾기.

특정 Tweet을 Retweet 한사람을 조회 하는 API

https://dev.twitter.com/docs/api/1/get/statuses/%3Aid/retweeted_by

/statuses/:id/retweeted_by

* 주의 할점은 한번에 100명 까지만 조회 하기 때문에, parameter 중에 page 를 이용하여 추가 조회를 해야합니다.


2. Python 에서 Twitter API 호출하여, 20명 추출하기.

제가 분석할 tweet의 id 가 '194985314832490496' 임으로 호출 url 은 아래와 같이 됩니다. 

https://api.twitter.com/1/statuses/194985314832490496/retweeted_by.json

해당 json 은 Dictionary 의 array 로 되어 있습니다. 제가 필요 한건 리트윗 하신분의 id 임으로 'screen_name' 속성만 가져오면 될것 같습니다.

아래는 'Visual JSON'이라는 어플로 호출해본 결과 입니다.



# -*- coding:utf-8 -*-
import httplib
import urllib
import csv 
import codecs
import json
import random

tweet_id='194985314832490496'

def getJson(page):
    conn = httplib.HTTPConnection('api.twitter.com')
    conn.request("GET","/1/statuses/%s/retweeted_by.json?count=100&page=%s"%(tweet_id,page))
    response = conn.getresponse()
    data = response.read()
    encoding=response.getheader('content-type').split('charset=')[-1]
    conn.close()
    jsonData = json.loads(data)
    return jsonData

if __name__=='__main__':
    entries = []
    page=1
    while(1) :
        jsonData = getJson(page)

        for jsonItem in jsonData :
            entries.append(jsonItem['screen_name'])

        if len(jsonData) < 100:
            break

    random.shuffle(entries)
    winners = entries[0:20]
                                                                                                                                                                
    print winners

위의 코드는 해당 tweet의 screen_name 목록을 만들고 shuffle을 한후, 상위 20명만을 뽑아내는 코드 입니다.




http://www.mobclix.com/appstore
http://majicjungle.com/majicrank.html
http://applyzer.com
http://148apps.biz/app-store-metrics/
http://topappcharts.com/
http://www.yappler.com/Apple-iPhone-App-Store-Stats/
 

1. mobclix


한번 써볼려고 하니 :( 정검중이군요.

2. majicjungle.com



 매직 정글은 앱으로 보여주는군요

3. applyzer.com

 

find ./ -name "Thumbs*" -print0 | xargs -0 ls


-print 0 on "find" 

"It prints the pathname of the current file to standard output, followed by an ASCII NUL character" 

-0 on "xargs"

"Change xargs to expect NUL (``\0'') characters as separators, instead of spaces and newlines.
  This is expected to be used in concert with the -print0 function in find(1)." 


xargs 와 find 를 조합하라고, -0 와 -print0 를 조합해서 사용하라고, man page에 소상히 적어 두었군요 :)

 

A. Bracket을 같은 줄에 쓰는 스타일 - Java 개발자들이 선호
 

if {
}


 
B. Bracket을 개행한후에 쓰는 스타일 - C 개발자들이 선호

if
{
}



다녔던 회사들중에
C 로 개발하던 회사에서는 Coding Convention 으로 B Style이 표준이었고,
Java로 개발하던 회사는 A Style이 표준이었습니다.

사실 왜 C 개발자들이 B Style을 선호하는지에 대한 별다른 생각이 없어서,
Java로 개발하는 회사로 이적한후 A Style을 따르고,
C로 개발할때도, A-Style로 하도록 습관을 고쳤습니다.

그러다 문득..

if ( a== 1) {
}
else {
}


같은 코드가 있을때 Debuggin 위해 else 조건문만 항상 실행하려고 하니 
B Style에서는

#if 0
if (a  ==1) 
{
}
else
#endif 
{



이렇게만 해주면되는것을

 A Style에서는 조건을 항상 거짓으로 변경하거나
개행한후에 #if 0 를 해주어야 하더군요..
정말 별건 아니지만, ㅋㅋㅋ
B Style로 돌아 갈까 심각하게 고민중입니다 ㅎ

혹시 A Style이 가지고 있는 장점이 있을까요? :)

 


개인적으로 읽을 책들을 정리하고, 
왜 읽는가를 생각하면서 읽기 위해 정리해봅니다.

그외에 책을 추천해주시면 너무나들 감사하겠습니다 :)

1. 디자인과 인간심리



소프트웨어 개발자가 디자인에 대한 이해가 필요 할까요?

그럼요 ! 소프트웨어는 혼자 만드는 게 아니니까요.
그래픽 디자이너, UX 설계자 등과의 원만한 커뮤니케이션을 위해 그들의 일에 대한 이해가 필요 하다고 생각되어 읽기 시작했습니다.

아이러니 하게도 

" 이책은 한번에 3장 이상 읽기가 힘드니, 책 디자인에서 인간심리를 전혀 고려하지 않은 셈이죠 ;ㅂ; "
 
2. 실전 코드로 배우는 실용주의 디자인 패턴


읽어본 디자인 패턴책이, Head First , GOF 두권 정도 인데,
디자인 패턴에 대한 깊은 성찰을 위해,
여러 사람이 쓴 책을 읽어 보고 싶다는 생각이 들어, 집어 들었습니다.


아자 아자 아자 부디, 책을 읽는 것을 넘어, 서평을 쓸 정도의 부지런함이 생기길 바라며..
시작합니다 :)
 
 

온라인 눈쇼핑을 좋아라 하는 저입니다 :)

오늘 눈여겨 보게 된 상품은 "모니터 메모보드" 입니다. 


<출처 : 상상날개(http://www.sgsgwg.com) >

그러다 문득 이런 생각이 들었습니다.

Scrum DashBoard용 화이트보드를 항상 갖고 싶었는데, 저걸 이용하면 더 편하지 않을까 하는 생각말입니다. !!

아래와 같이 말이죠 :)


개당 가격도 현실적인 수준이라 아마 조만간 해보지 않을까 싶습니다.

문제는 제가 모니터 3개가 붙어 있는 시스템이라, 어떻게 잘 적용할지가 관건입니다 ㅎㅎ 

파이썬 Python 3 프로그래밍
http://kangcom.com/sub/view.asp?sku=200906160008&mcd=571  

내가 존경해 마지 않는 형이, 극찬한 Python. 수박 겉이라도 좀 핧아 보고자..

잘 팔리는 아이폰 앱 개발: 기획에서 마케팅까지 아이폰 비즈니스의 모든 것
http://kangcom.com/sub/view.asp?topid=5&sku=201103180002 

Seven Languages in Seven Weeks  
 

http://kangcom.com/sub/view.asp?sku=2010F0862392   

심심할땐 심실풀이 땅콩

소프트웨어 아키텍트가 알아야 할 97가지 
http://kangcom.com/sub/view.asp?sku=201104010001&mcd=571 

뭐 이정도 인데,,, 언제 보나 - _-  

Snow Leopard에는 고맙게도, svn ( client , admin) 과 Apache가 기본설치 되어 있다.

만약 /var/svn/repo 로 svn repository가 있다고 가정하고 Apache로 연동하는법을 살펴 보겠다.

  1 LoadModule dav_svn_module /usr/libexec/apache2/mod_dav_svn.so
  2 
  3 <Location /svn>
  4     DAV svn
  5     SVNParentPath /var/svn/
  6 </Location>

svn.conf 파일을 /etc/apaches2/other 에 생성한한다.

apache를 재시작하면 svn.conf 파일이 알아서 로드 된다.  재시작하는 Command는 아래와 같다. 

sudo /usr/sbin/apachectl restart


http://localhost/svn/repo 로 접속하면 된다 ^^




+ Recent posts