Archive for the ‘긍정적인 사고’ Category

[Video] The role of leadership in software development

Friday, December 2nd, 2011

The role of leadership in software development

[Youtube]

Google Tech Talks
Speaker: Mary Poppendieck
6 May, 2008
1 hour 32 minutes 04 seconds

ABSTRACT from Youtube Page

When you look around, there are a lot of leaders recommended for software development. We have the functional manager and the project manager, the scrum master and the black belt, the product owner and the customer-on-site, the technical leader and the architect, the product manager and the chief engineer.

Clearly that's too many leaders. So how many leaders should there be, what should they do, what shouldn't they do, and what skills do they need?

This will be a presentation and discussion of leadership roles in software development -- what works, what doesn't and why.

Summary by Kwangshin

1850's Train Wreck Management
> Six Principles of Administration

1880's Command Intent

1910's The One Best Way
> Frederick Winslow Taylor
-. The Principles of Scientific Management

1920's Industrial Training
> Charles R. Allen - New Bedford, Massachusetts
-. On-the job training
-. By a master at the job
-. Four Step Method
* Preparation, Presentation, Application, Testing

1930's Unit Command

1940's Wartime Production
> Training within Industry (TWI)
-. Train first line supervisors
* Job Instruction - how to train workers
* Job Methods - how to improve the way work is done
* Job Relations - how to treat workers with respoect
> Statistical Process Control (SPC)

1950's TWI & SPC move to Japan

Meanwhile in the USA - The Polaris Project
> Success was attributed to "PERT"

Why Polaris was Successful
> Quality of Leadership
> Focus on Deployment
> Decentralized, Competitive Organization
> Emphasis on Reliability
> Esprit de corps

1960's Toyota Production System
> Taiichi Ohno
-. Just-in-Time Flow
-. Stop-the-Line Culture
-. Relentless Improvement

Taiichi Ohno Standard Work

1970's Theory X - Theory Z
> Kaoru Ishikawa
-. "The fundamental principle of sucessful management is to allow subordinates to make full use of their ability."

1980's If Japan can, why can't we?

1990's The Decade of Process

Plank Road Fever

High Reliability Organizations
> Common Characteristic : Mindfulness

Mindfulness
> Preoccupation with Failure
> Reluctance to Simplify
> Sensitivity to Operations
> Commitment to Resilience
> Deference to Expertise

Mission Command vs. Detailed Command : A Comparison
> Where does Software fit?

The Product Leader
> Example: Chief Engineer at Toyota

Functional Leader

Leadership Roles
> Marketing Leader
-. Business Responsibility
-. Customer Understanding
-. Release Planning
-. Tradeoffs

> Technical Leader
-. System Architecture
-. Technical Guidance

> Functional Leader
-. Preserve Knowledge
-. Solve Problems
-. Grow People

> Project Leader
-. Funding
-. Scheduling
-. Tracking

What are You Building?
> "I'm cutting stones."
> "I'm earning a living."
> "I'm building a cathedral."

Cathedral Builders
> Move responsibility and decision-making to the lowest possible level.

-------------------------------------------------

If you have any interests in above keywords I extracted, then it is worth watching this 1 and half hours video.

If someone ask you "What are you doing as a software engineer?", then what will be your response?

"I'm typing keyboard to do a programming.", "I'm doing my programming job to earn money to live."

Or "I'm developing great software helping people do their work faster and more efficiently."

2011-10-31 Useful links…

Monday, October 31st, 2011

1. http://caniuse.com/

When can i use...

Compatibility tables for support of HTML5, CSS3, SVG and more in desktop and mobile browsers.

2. https://onluminousgrounds.wordpress.com/

On Luminous Grounds.

Regarding all four volumes of Christopher Alexander’s The Nature of OrderOn Luminous Grounds is a site created, in part, out of simple admiration for that author and his ideas. It’s name comes from the fourth volume, The Luminous Ground.

3. http://developers.whatwg.org/

HTML5 -  A technical specification for Web developers

4. http://stevenmsmith.com/ar-satir-change-model/

The Satir Change Model

The impact on group performance of a well assimilated change during the five stages of the Satir Change Model.

Cutting an Agile Groove: The Live Sessions

Thursday, September 29th, 2011

Cutting an Agile Groove is a series of videos by respected agile consultant David Hussman that shows you how to design an agile, lean process and deliver real value for your product or project—in plain English, with real-world examples.

The Pragmatic Bookshelf provides 10 min free introduction video (10 min, QuickTimeiPhone/iPodOgg) for Cutting an Agile Groove video series. It is worth watching! You can get information in detail from http://pragprog.com/screencasts/v-dhcag/cutting-an-agile-groove.

The above picture is an interesting "Dude's Law" he introduced. I really like and agree with "Value = Why / How". If we do pay attention to only "How (to solve)" without "Why (we need to solve)", then the "Value" of our product will be dropped.

When you face with new problem in software development, as well as in your life, please do concentrate more on "Why" too.

금융계 자바 인터뷰에 자주 나오는 질문

Friday, April 15th, 2011

자바 프로그래머로서 금융계(투자 은행 같은...)로 가고 싶어하는 개발자가 많은 것은 사실이다. 높은 연봉도 한 몫 하겠지만, 역시나 개발자로서의 도전이랄까? 한국 뿐만 아니라 다 그런가 보다. 우연히 본 "금융계 자바 인터뷰에 자주 나오는 질문"에 관한 이야기이다.

원문은 Top 20 Core Java Interview questions asked in Investment Bank 이다. 사실 이렇게 20개의 질문으로 인터뷰를 한다고 해서 그 사람의 실력을 알 수 있는 건 절대 아니지만, 이 질문들에 대해 한번쯤 생각해 보는것도 나쁘지는 않을 듯 하다.

1. What is immutable object? Can you write immutable object?

You need to make class final and all its member final so that once objects gets crated no one can modify its state. You can achieve same functionality by making member as non final but private and not modifying them except in constructor.

2. Does all property of immutable object needs to be final?

Not necessary as stated above you can achieve same functionality by making member as non final but private and not modifying them except in constructor.

3. What is the difference between creating String as new () and literal?

When we create string with new () it’s created in heap and not added into string pool while String created using literal are created in String pool itself which exists in Perm area of heap.

4. How does substring () inside String works?

Another good question, I think answer is not sufficient but here it is “Substring creates new object out of string by taking a portion of original string”.

5. Which two method you need to implement for key in hashMap ?

(equals and hashcode) read How HashMap works in Java for detailed explanation.

6. Where does these two method comes in picture during get operation?

See here How HashMap works in Java for detailed explanation.

7. How do you handle error condition while writing stored procedure or accessing stored procedure from java?

Open for all, my friend didn't know the answer so he didn't mind telling me.

8. What is difference between Executor.submit() and Executer.execute() method ?

(Former returns an object of Future which can be used to find result from worker thread)

9. What is the difference between factory and abstract factory pattern?

Open for all, he explains about factory pattern and how factory pattern saves maintenance time by encapsulating logic of object creation but didn't know exact answer

10. What is Singleton? is it better to make whole method synchronized or only critical section synchronized ?

see my article 10 Interview questions on Singleton Pattern in Java

11. Can you write Critical section code for singleton?

check here 10 Interview questions on Singleton Pattern in Java

12. Can you write code for iterating over hashmap in Java 4 and Java 5 ?

Tricky one but he managed to write using while and for loop.

13. When do you override hashcode and equals() ?

Whenever necessary especially if you want to do equality check or want to use your object as key in HashMap.

14. What will be the problem if you don't override hashcode() method ?

You will not be able to recover your object from hash Map if that is used as key in HashMap.

See here How HashMap works in Java for detailed explanation.

15. Is it better to synchronize critical section of getInstance() method or whole getInstance() method ?

Answer is critical section because if we lock whole method than every time some one call this method will have to wait even though we are not creating any object)

16. What is the difference when String is gets created using literal or new() operator ?

When we create string with new() its created in heap and not added into string pool while String created using literal are created in String pool itself which exists in Perm area of heap.

17. Does not overriding hashcode() method has any performance implication ?

This is a good question and open to all , as per my knowledge a poor hashcode function will result in frequent collision in HashMap which eventually increase time for adding an object into Hash Map.

18. What’s wrong using HashMap in multithreaded environment? When get() method go to infinite loop ?

Another good question. His answer was during concurrent access and resizing.

PS. 그런데 이런 질문들이 금융쪽에서 자바 개발자를 인터뷰 할때 그 사람의 실력을 측정하는데 정말 도움이 될까?

Why we need to learn a new programming language?

Thursday, March 3rd, 2011

Usually we are using only one or two (maybe maximum) programming language at work. However we can find out new programming language from developer community site.

Do we need to study those other languages I haven't used yet and seem to be used in the near future?

Definitely, YES!

Chad Fowler once said, "The best reason to learn a new programming language is to learn to think differently."

It's time to open the book "Seven Languages in Seven Weeks".

일본의 위치 – 위키피디아

Tuesday, February 8th, 2011

사실 한국 사람 치고 일본을 좋아하거나 일본이 전 세계에서 잘 나가는 국가라는 걸 인정하고 싶어하는 한국 사람은 정말 드물지 않을까 싶다. 아무래도 역사적인 영향이 가장 크지 않을까 싶다. 나 같은 경우도 일본을 좋아하지는 않지만, 그렇다고 싫어하거나 배척하지는 않는다.

하지만 전 세계에서 일본이 차지하는 위치나 위상은 인정해 줘야 하지 않을까 싶다. 싱가포르에서 일하다 보면 일본이 참 대단하다는 것을 실감할 때가 많다. (한국에서는... 거의 없다... ㅎㅎㅎ) 예를 들어, APAC으로 국가들을 그룹지어서 관리할 때도 보통 일본은 APAC에서 제외하고 따로 관리를 한다. 그 만큼 시장의 규모가 다르다는 사실이다. 아쉽게도 보통의 경우 한국은 APAC에 포함된다. 즉, APAC + Japan 이렇게 관리가 된다. 내가 참여했던 프로젝트도 APAC 모든 나라에 적용이 되었는데, 일본은 모든 것이 따로 관리되기 때문에, 따로 구현을 했던 적도 있다.

자바라는 프로그래밍 언어만 하더라도 새 버전이 나올때 일본어를 가장 빨리 지원하고, 일본어로 된 가이드나 문서는 기본으로 제공한다.

오늘은 책을 읽다가 우연히 뇌에 관한 영어 단어들이 쏟어져 나와서 멍 때리고 있다가 위키피디아를 검색하게 되었다. 역시 위키피디아!

1. brain stem (뇌줄기 또는 뇌간)
뇌 줄기? 설마... 하다가 검색을 했는데, 한국어로는 뇌줄기 또는 뇌간이라고 부른다는... ^^;

영어 페이지는 다음과 같다.

한국어 페이지도 있기는 한데, 아직은 좀 간략한 설명만 있다는 느낌이 든다.

일본어 페이지는 일본어를 몰라서 모르겠는데, 그래도 그림도 넣어놓고 나름 노력을 한듯 보인다.

2. cerebral cortex
뭔 소리여...@.@ 사전을 찾아보니 "대뇌 피질". 영어 페이지는 다음과 같다.

흠... 역시 영어로는 설명이 되어 있어도 무슨 내용인지 알 수가 없다. 그래서 혹시나 해서 "한국어"가 있나 봤는데, 아쉽게도 아직은 한국어 페이지가 존재하지 않는다. (사실 구글이나 네이버에서 검색하면 나오지만, 아직은 위키피디아에는 이 페이지가 없다는 것이다.)

혹시나 해서 일본어가 있나 봤더니, 일본어는 있다 혹시나 해서 클릭.

아주 친절한(?) 사진들과 함께 영문 페이지보다 더 잘 설명을 해 놓은 것 같아 보인다. (일본어를 몰라서 검증은 패스~)

예전에 인터넷에서 우스개 소리로 전 세계에서 일본인을 무시하는 유일한 민족이 한국인이라는 이야기를 본 것 같다. 사실 위키피디아라는 사이트 하나로, 그리고 뇌에 관련된 용어 하나만으로 평가하기에는 무리가 있지만, 그래도 나름 의미있는 사실을 보여준다고는 생각한다. 역사를 잊지는 말아야 하겠지만, 그것에 너무 얽매이는 것보다는 배울건 배우는게 더 나은 방향이 아닐까 싶다.

첫인상… 선입견…

Wednesday, February 2nd, 2011

첫인상이라는 것이 정말 중요한 것 같다. 비단 사람뿐 아니라, 어떤 조직이나 그룹, 민족 같은 경우에도 해당하지 않을까 싶다.

2003년에 싱가포르에 나와서 일하기 시작하고 학교까지 다니고, 벌써 8년이란 시간이 흘렀다. 그 중에서 내가 생각했던 것과는 정말 달랐던 첫인상은 바로 "인도 개발자"에 대한 경험이었다.  (설마 인도 사람들이 이 글을 보지는 않겠지..ㅎㅎㅎ 인종 차별주의자는 아니고 그냥 개인적인 경험입니다. ^^) 한국에서의 인식은 인도는 IT가 많이 발전해 있고, 아주 뛰어난! 개발자들이 정말 많다는 것이었다. 하지만, 사실 그러한 생각은 처음와서 인도 개발자랑 함께 일하면서 완전히 깨져버렸다. 사실 미국에서 일하는 뛰어난 인도 개발자들도 많겠지만, 아직까지 내가 만나본 적이 없으니...ㅠ.ㅠ

어제도 함께 일하는 인도 개발자의 어이없는 실수에 할말을 잃고 말았다.

foreach(objectArray as object) {
    if ( x == true ) {
        // Doing something...
        return true;
    } else {
        // Doing some others...
        return false;
    }
}

프로그래밍을 조금만 이해한다면, 저 코드가 왜 어이가 없는지 금방 알 수 있을 것이다. 저렇게 프로그래밍을 해 놓고는, 자기 컴퓨터에서는 에러 없이 잘 돌아간다고 우겼던 걸 생각하면...ㅠ.ㅠ 신입사원도 아니고, 개발자로 5년정도의 경력을 가지고 있는 분이 저렇게 코딩을...

비단 이런 저런 프로그래밍 문제에서만 뿐이 아니라, 내가 만난 인도 개발자들은 모두 100% 독수리 타법을 사용했다. 이제 갓 프로그래밍을 시작한 것도 아니고 2년에서 6년정도의 경험들을 가지고 있는 인도 개발자들을 골고루 만났음에도 불구하고, 어떻게 한결같이 모두 독수리 타법으로 메일 쓰고, 프로그래밍 하고... 가끔 가서 도와주다 보면 정말 답답해 죽어버릴것 같다는...ㅎㅎㅎ

나에게 이렇게 인도 개발자에 대한 선입견이 생기는 것을 보면서, 나로 인해 외국 사람들에게 한국인 이라는 선입견이 생길 수도 있겠구나라는 생각을 했다. 그들에게 좋은 기억을 심어주려면 내가 정말 잘 해야겠구나 라는 생각을 하면서... 이제 네이버 웹툰이나 다음 만화는 집에서만 봐야겠구나라는 생각을... ^^;