क्या लीड डेवलपर को एक अच्छा या बुरा विचार घूम रहा है?


31

मैं एक टीम पर काम करता हूं जो कई महीने पहले निर्माण के बाद से संगठनात्मक रूप से सपाट है। मेरा प्रबंधक गैर-तकनीकी है और इसका मतलब है कि हमारी पूरी टीम निर्णय लेने के लिए जिम्मेदार है।

मेरे प्रबंधक को यह एहसास होने लगा है कि लीड डेवलपर होने के कई फ़ायदे हैं, दोनों उसकी खातिर (कार्यों के लिए संपर्क का एक बिंदु और एकल जिम्मेदार पार्टी) और हमारा (विवाद समाधान, संगठित तकनीकी मार्गदर्शन आदि)।

क्योंकि टीम सपाट रही है, एक चिंता का विषय यह है कि एक लीड डेवलपर को लेने से दूसरों को हतोत्साहित किया जा सकता है। एक गैर-डेवलपर ने मेरे प्रबंधक को सुझाव दिया कि लीड डेवलपर को घुमा देना इस मुद्दे से बचने का एक संभव तरीका है। एक डेवलपर एक महीने का नेतृत्व करेगा, दूसरा अगले और इतने पर।

यह एक अच्छा विचार है? क्यों या क्यों नहीं?

ध्यान रखें कि इसका मतलब सभी डेवलपर्स - सभी डेवलपर्स अच्छे हैं, लेकिन जरूरी नहीं कि नेतृत्व के लिए समान रूप से अनुकूल हों।

और अगर ऐसा नहीं है , तो मैं कैसे सलाह देता हूं कि हम इस दृष्टिकोण से बचने के लिए बिना ऐसा लगे कि यह केवल स्वार्थी कारणों से है?


7
"वर्तमान लीड डेवलपर काल्पनिक है। कृपया उसे 90 डिग्री घुमाएं और फिर से प्रयास करें"; ओ)
पिस्कॉर

14
मैं इसकी सिफारिश नहीं करूंगा, जिससे उसे चक्कर आ सकता है।
गौरव

जवाबों:


31

घुमाएँ नहीं।

मुझे नहीं लगता कि किसी को भी घुमाए जाने की स्थिति से कुछ भी हासिल होता है (इसके अलावा जो लीड के लायक नहीं हैं वे वर्तमान में प्राप्त होने वाले धन से अधिक धन प्राप्त कर सकते हैं)।

एक शानदार लीड डेवलपर, जो निम्न कार्य कर सकता है, विकास प्रक्रिया के लिए चमत्कार करता है:।

  1. जानता है कि कैसे प्रतिनिधि बनाना है।
  2. नियंत्रण में है।
  3. एक अनुभवी डेवलपर है।

वह बाकी टीम के लिए एक ही स्रोत है जिससे वह सलाह ले सके। वह उच्च-स्तरीय प्रबंधन और मुख्य विकास टीम के बीच मध्यस्थ भी है। मैं किसी भी प्रबंधकीय टीम के बारे में नहीं जानता जो बदलाव से निपटना पसंद करती है (जब तक कि वे इसे उकसाने वाले नहीं होते)।

यदि आप वास्तव में इस पद के लिए सबसे उपयुक्त हैं, तो सभी को पता होगा। हर कोई जानता होगा कि (जैसे उच्च-स्तरीय प्रबंधन, आपकी टीम का साथी, आदि)। बताएं कि आपको विश्वास नहीं है कि स्थिति को घुमाने लायक है (यदि आप ऐसा मानते हैं)। फिर वापस बैठते हैं और उन्हें नियुक्त करते हैं - नाम छोड़ने या किसी भी प्रकार के आत्म प्रचार से बचना चाहिए क्योंकि इससे आप अव्यवहारिक दिखेंगे


@ जोनाथन खो: आपका जवाब "एक फ्लैट सिस्टम को भूल जाना, एक रॉक स्टार डेवलपर को किराए पर लेना" प्रतीत होता है।

3
@ मोज़ - शायद रॉक स्टार डेवलपर नहीं है, लेकिन एक बार एक परियोजना एक निश्चित आकार तक पहुंच जाती है, तो यह कुछ हद तक संपर्क के प्राथमिक बिंदु के रूप में समझ में आता है जो प्रशासनिक उपरि संभालता है। यह भी सिर्फ एक परियोजना प्रबंधक हो सकता है जो कोई विकास कार्य नहीं करता है।
rjzii

2
यदि यह एक फ्लैट टीम है, तो "लीड डेवलपर" को बाकी की तुलना में अधिक भुगतान नहीं मिलेगा। उसके पास जिम्मेदारियाँ होंगी, लेकिन वरिष्ठ पद होने के लाभ नहीं। वास्तव में मैंने अभी तक
जितनी

6
@moz: एक रॉक स्टार उस स्थिति में बर्बाद हो जाएगा, क्योंकि लीड डेवलपर क्या प्रोग्रामिंग को शामिल नहीं करता है। अनुभव उपयोगी है क्योंकि यह संरक्षक को नेतृत्व करने की अनुमति देता है, और उसे या उसके गीक को प्रभावी ढंग से नेतृत्व करने का श्रेय देता है, लेकिन आप शायद अपने सबसे उत्पादक डेवलपर को उच्च प्रबंधन के साथ बैठकों में समय बिताना नहीं चाहते हैं।
डेविड थॉर्नले

1
मुझे पता है कि प्रबंधकीय प्रकार जो जानते हैं कि कोडिंग किस बारे में है (कोड पढ़ सकते हैं, पता कर सकते हैं कि टेबल और डेटाबेस क्या हैं, जानते हैं कि टीसीपी / आईपी-सॉकेट पहले क्या हो सकता है, पहले कोडित हो सकता है) इन भूमिकाओं के लिए सबसे उपयुक्त हैं। वहाँ सब के बाद शामिल कागजी कार्रवाई है, और वे इसे करने के लिए इस्तेमाल कर रहे हैं।
विंसेंट वैंकलबर्ग

11

लीड डेवलपर होने के लिए दो भाग हैं:

  • तकनीकी नेतृत्व तकनीकी नेतृत्व के लिए, यह परियोजना स्तर पर एक अलग लीड डेवलपर को चुनने के लिए समझ में आता है। प्रत्येक डेवलपर को एक अलग प्रोजेक्ट के लिए एक तकनीकी लीड बनाएं, यदि आवश्यक हो तो प्रोजेक्ट को घुमाएगी। इस तरह का दृष्टिकोण टीम की गतिशीलता से निपट सकता है, और सुनिश्चित कर सकता है कि सभी को ठीक से चुनौती दी गई है

  • संचार बाहरी दुनिया के साथ संचार के लिए संपर्क का एक बिंदु बाहरी दुनिया के लिए अच्छा है, और संपर्क के बिंदु के लिए बुरा है। जो कोई भी संचार गेंद के साथ फंस जाता है, उसके पास वास्तविक काम करने के लिए कम समय होगा, और पास होने के लिए सभी से जानकारी प्राप्त करने के लिए दौड़ना होगा। यदि आप सबसे अच्छे कम्युनिकेटर हैं और सभी बातें करने के बदले में जितना मज़ेदार काम करना चाहते हैं, उतना करने के लिए तैयार हैं।


तो क्या इन दो भूमिकाओं को विभाजित करना संभव नहीं होगा? अक्सर सर्वश्रेष्ठ संचारक तकनीकी रूप से सर्वश्रेष्ठ नहीं होता है। मुझे सबसे अच्छी "जोड़ी प्रोग्रामिंग" स्थिति मिली है, जब हर एक उन सभी में से एक में उत्कृष्टता प्राप्त करता है
CashCow

पुष्टि कर सकते हैं। मैंने 6 महीने पहले (12 देवों की टीम) में अपनी पहली मुख्य भूमिका को स्वीकार किया था, और कभी भी इतना समय नहीं बिताया है जितना अब मैं प्रोग्रामिंग करता हूं। ज्यादातर सिर्फ सलाह, प्रबंधन, और ऊपर की ओर रिपोर्टिंग।
श्री जावास्क्रिप्ट

6

यह जरूरी नहीं कि एक बुरा विचार हो, बशर्ते इसमें शामिल डेवलपर्स लगे हों और (आदर्श रूप से) सक्षम हों।

मुझे इसके लिए संदर्भ ढूंढने में परेशानी हो रही है (लेकिन मैं देखता रहूंगा), लेकिन अगर मुझे सही ढंग से याद है कि कुछ फुर्तीली कंपनियां ऐसा करती हैं - तो वे "टीम लीड" का शीर्षक घुमाते हैं या तो हर पुनरावृत्ति या किसी अन्य पूर्व-परिभाषित समय पर अवधि। यह डेवलपर की भागीदारी को बढ़ावा देता है और सभी को टीम प्रबंधन / बाहरी संचार में से कुछ को स्थायी रूप से उस भूमिका में विकसित करने से एक डेवलपर को स्थानांतरित किए बिना करने का मौका देता है।

कुछ कमियों में जानकारी का संभावित नुकसान शामिल है (इसे कई तरीकों से कम किया जा सकता है) और "खराब" नेतृत्व के लिए उच्च क्षमता। टीम के लिए एक दृष्टि / दिशा बनाए रखना भी मुश्किल हो सकता है। हालांकि, अगर हर कोई इस दृष्टिकोण के साथ बोर्ड पर है और टीम के सदस्य दोनों जानकार हैं और इस तरह के सिस्टम काम करने में रुचि रखते हैं, तो यह शॉट के लायक हो सकता है।


मुझे नहीं लगता कि आप आवश्यक रूप से हर किसी को टीम लीड की स्थिति में घुमाना चाहते हैं, लेकिन मुझे उम्मीद है कि एक वरिष्ठ देव अपनी जिम्मेदारियों को संभालने में सक्षम होंगे। सच कहूँ तो, यह एक धन्यवादहीन काम है, और यह बोझ को साझा करने और एक व्यक्ति को जलाने से बचने का मामला है। मुझे यह भी लगता है कि यह आपके फ्लैट ओर्ग टीम के फायदों को गतिशील बनाए रखने में मदद करेगा ताकि स्थायी लीड के रूप में एक देव न हो।
MeAAlone

"कुछ कमियों में जानकारी का संभावित नुकसान शामिल है (इसे कई तरीकों से कम किया जा सकता है) और" खराब "नेतृत्व के लिए उच्च क्षमता": केवल चयनित डेवलपर्स पर घूमने के बारे में, यह इस समस्या से बच सकता है।
बी

1
@AdrienBe आपको अभी भी उनके बीच जानकारी स्थानांतरित करने की आवश्यकता होगी। जब तक वे हर समय एक ही समय में अग्रणी रहे (जो उद्देश्य को हराता है), तो आपको इसे ध्यान में रखना होगा। आप उस टीम के अन्य देवों को भी अलग कर सकते हैं, जिन्हें नेतृत्व करने का मौका नहीं मिलता है और वे छूटे हुए महसूस कर सकते हैं।
एडम लेअर

5

यदि आप घूमते हैं, तो किसी प्रोजेक्ट के दौरान ऐसा न करें। उस विशेष परियोजना के लिए प्रत्येक स्थिति में सबसे उपयुक्त कौन है, इसके आधार पर, विभिन्न परियोजनाओं के लिए अलग-अलग लोगों को अलग-अलग भूमिकाएं सौंपने में आंतरिक रूप से कुछ भी गलत नहीं है। लेकिन जो "लीड प्रोग्रामर" को केवल इसलिए न करें क्योंकि यह काम करने के लिए रोस्टर पर उसका समय है। वह इसके लिए कुशल नहीं हो सकता है, वह नौकरी भी नहीं कर सकता है।


4

लीड डेवलपर को समय के आधार पर घुमाना एक बुरा विचार है।

हर कोई एक अच्छा डेवलपर है इसका मतलब यह नहीं है कि हर कोई एक अच्छा नेता है। और एक अच्छा नेता है इसका मतलब यह नहीं है कि वह इस कार्यक्रम के नेता के लिए उपयुक्त है।

मुझे लगता है कि डेवलपर्स को सौंपे गए अभियानों का महत्व अलग है, और प्रत्येक डेवलपर का नेतृत्व अलग है। मुझे लगता है कि आप अपने प्रबंधक को वोट देने के लिए सलाह दे सकते हैं। हर एक को सर्वश्रेष्ठ उम्मीदवार के लिए 2 लोग वोट देते हैं, और जिस व्यक्ति को सबसे अधिक वोट मिलते हैं, वह नेता डेवलपर होना चाहिए


3

मैं जोनाथन खो के साथ सहमत होने के लिए इच्छुक हूं कि मुख्य डेवलपर को घुमाना एक बुरा विचार हो सकता है। आम तौर पर बड़ी परियोजनाओं के लिए एक एकल तकनीकी नेतृत्व होता है जो परियोजना का प्रमुख होता है और उस व्यक्ति के पास कई घटक हो सकते हैं जो विभिन्न सिस्टम संबंधी व्यापक मुद्दों पर चर्चा करने के लिए उन्हें रिपोर्ट करते हैं।

हालांकि, एक महत्वपूर्ण बिंदु जो जोनाथन ने उल्लेख नहीं किया है कि तकनीकी नेतृत्व भी संस्थागत ज्ञान का एक उच्च स्तर विकसित करता है जो परियोजना पर अन्य लोगों के पास नहीं हो सकता है। तकनीकी लीड को घुमाकर आप उन्हें उस ज्ञान को विकसित करने की आवश्यकता होती है, जब हर बार किसी को स्थिति में घुमाया जाता है। इसके अतिरिक्त, लीड परियोजना के बाहर ग्राहकों के साथ एक तालमेल विकसित करेगा क्योंकि वे अंत उपयोगकर्ताओं के साथ कुछ (बड़ी) बैठकों के लिए आदर्श रूप से मौजूद होना चाहिए।

तकनीकी लीड का होना अच्छा है, लेकिन अगर आप कोशिश करते हैं और उन्हें घुमाते हैं तो आप पा सकते हैं कि आप एक के बिना बेहतर थे।


2

मुझे लगता है कि पहले आपको यह निर्धारित करने की आवश्यकता है कि इस व्यक्ति की भूमिका क्या है, इससे अधिक कौन करता है और कितने समय के लिए है।

आपको यह निर्धारित करने की भी आवश्यकता है कि क्या यह आपके बाकी काम करने के तरीके को महत्वपूर्ण रूप से बदलने वाला है और क्या यह आपके प्रदर्शन को कम करेगा। एक व्यक्ति के पास किसी भी सहकर्मी के बजाय आपके कोड की हर पंक्ति को "अनुमोदित" करना पड़ता है, जिसका गंभीर प्रभाव हो सकता है।

अलग-अलग विशिष्ट भूमिकाएं अलग-अलग टीम के सदस्यों को दी जा सकती हैं, आप में से कोई भी "श्रेष्ठ" नहीं है। जो प्रबंधक और अन्य लोगों के बीच संवाद स्थापित करने में सबसे अच्छा है, उसे ऐसा करने के लिए एक विशिष्ट भूमिका दी जा सकती है, लेकिन इसका मतलब यह नहीं है कि वे "लीड डेवलपर" हैं, और वे वह व्यक्ति नहीं हो सकते जो तकनीकी रूप से सबसे अच्छा या सबसे अच्छा है कोड समीक्षा कर रहा है।


2

मैं शर्त लगाने को तैयार हूं कि जब टीम अस्थिर रूप से फ्लैट है, तो उनके बीच एक नेता पहले से ही है, और वे सभी पहले से ही जानते हैं।

संगठन चार्ट शायद ही कभी प्रतिबिंबित करते हैं कि लोग वास्तव में कैसे काम करते हैं। विशेष रूप से आदर्शित चार्ट जैसे "एक सपाट टीम"।


2

यदि आपका संगठन सपाट है, तो अपने सभी देवों को आवश्यकताओं और समाधान विश्लेषण (आरएसए) प्रशिक्षण से गुजरना होगा ताकि उन्हें एक औपचारिक प्रक्रिया का पालन करना पड़े। फिर आप एक परियोजना के लिए कई विषय वस्तु विशेषज्ञों (एसएमई) को असाइन कर सकते हैं और सभी समाधान के लिए एक दस्तावेज प्रक्रिया प्राप्त कर सकते हैं।

इसके अलावा, चूंकि आपने उल्लेख किया है कि प्रबंधक गैर-तकनीकी है, इसलिए व्यक्ति अभी भी आरएसए प्रक्रिया को चला सकता है और संचार की सुविधा प्रदान कर सकता है। आप सुविधा के आधार पर किसी विशेष SME को प्रोजेक्ट आधार पर लीड के रूप में असाइन कर सकते हैं और सुविधा प्रदान करने में सहायता कर सकते हैं।


1

देव टीम गुमनाम रूप से मतदान क्यों नहीं करती है? मैं अधिमान्य मतदान का उपयोग करूंगा।


1
  1. आप अपनी टीम का नेतृत्व करने के लिए अपनी टीम के बीच किसी का चयन कर सकते हैं।
  2. आपका बॉस इस पद को लेने के लिए किसी अन्य अनुभवी व्यक्ति को रख सकता है

पुनश्च मुझे नहीं लगता कि घूर्णन एक अच्छा विचार है, व्यक्ति को संचार में कौशल होना चाहिए, और टीम के प्रबंधन में एक अच्छा अनुभव होना चाहिए।


1

जैसा कि आपका प्रश्न बताता है, पूरी टीम निर्णय लेने के लिए जिम्मेदार है, मेरा सुझाव है कि आप इसे उसी तरह रख सकते हैं। हालाँकि, टीम से बाहर के अधिकारियों को सूचित करने और रिपोर्ट करने के लिए, आप टीम में से टीम को-ऑर्डिनेटर चुन सकते हैं । उसकी / उसकी जिम्मेदारियों में सब कुछ गैर तकनीकी शामिल होगा। सभी तकनीकी पहलुओं के लिए, टीम को उसी तरह बैठना और चर्चा करना चाहिए जैसे आप अभी करते हैं। आप जो भी निर्णय लेंगे, वह को-ऑर्डिनेटर के माध्यम से बाहरी दुनिया को सूचित किया जाएगा । इस स्थिति को समय आधारित फैशन पर आसानी से घुमाया जा सकता है।

अन्य दृष्टिकोण में एक ही कंपनी में अनुभव> समान परियोजना> अनुभव के स्तर के आधार पर एक लीड डेवलपर हो सकता है। और यदि आवश्यकता हो, तो स्थिति को चरणबद्ध आधार पर घुमाया जा सकता है। आदर्श रूप से, प्रत्येक विकास चरण के पास आवश्यकताओं और डिलिवरेबल्स का अपना सेट होता है, जिसे मिनी प्रोजेक्ट के रूप में योजनाबद्ध किया जा सकता है। प्रत्येक चरण के लिए एक अलग लीड होने से रोटेशन के लगभग सभी नकारात्मक प्रभाव कम होंगे।


1

रोटेटिंग लीड डेवलपर होने के बजाय, एक घूमने वाला प्रोजेक्ट लीडर रखें, कोई ऐसा व्यक्ति जिसके पास एक्स प्रोजेक्ट को पूरा करने के लिए सबसे अधिक ज्ञान और समझ हो।

लीड डेवलपर आमतौर पर एक पदोन्नति है, और अर्जित किया जाना चाहिए।

लेकिन नेतृत्व कौशल को प्रशिक्षित करने और विकसित करने में मदद करने के लिए, अलग-अलग परियोजनाओं के प्रभारी हैं, और फिर यह स्पष्ट माप लें कि उन्होंने कितना अच्छा किया या नहीं किया।


0

उसी तरह एक टीम लीडर होना चाहिए जिस तरह से पर्याप्त बड़े जहाज पर एक कप्तान हो।

यदि प्रबंधक उस भूमिका को नहीं भर सकता है या नहीं भर सकता है, तो उसे भरने के लिए डेवलपर्स में से एक को नियुक्त किया जाना चाहिए।


0

मुझे लगता है कि आपको पहले सामूहिक रूप से महसूस करना चाहिए कि विकास टीम के अंदर सभी तकनीकी निर्णय लेने की शक्ति कितनी भाग्यशाली है। कितनी टीमों को एक micromanaging पदानुक्रम के बोझ से पीड़ित हैं जो उन पर अपनी तकनीकी सनक लगाते हैं, अक्सर असंगत विकल्प, अनुकूलता बुरे सपने और डेवलपर हताशा के परिणामस्वरूप होते हैं ...

देव लीड के लाभों में आप उल्लेख करते हैं, उनमें से कुछ (संगठित तकनीकी मार्गदर्शन ...) पहले से ही होने चाहिए अगर तकनीकी कौशल के मामले में वास्तव में स्वाभाविक रूप से उत्कृष्ट व्यक्ति थे। यदि यह मामला है, तो मैं यह नहीं देख सकता कि आधिकारिक तौर पर उस व्यक्ति को एक प्रमुख डेवलपर कैसे बनाया जा सकता है जो अब आपको प्राप्त होने वाले परिणाम से बेहतर परिणाम देगा। यदि आपकी टीम में ऐसा कोई टीम सदस्य मौजूद नहीं है, तो मैं यह नहीं देख सकता कि किसी व्यक्ति को आधिकारिक रूप से तकनीकी अधिकार देने से चर्चा और सामूहिक निर्णय से बेहतर परिणाम कैसे होंगे।

मैं एक संगठनात्मक नेता को स्थापित करने में बहुत अधिक मूल्य देखता हूं - डेनिश के रूप में एक समन्वयक। प्रबंधक नहीं, बॉस नहीं, लेकिन कोई है जो सामूहिक निर्णय लेने की प्रक्रिया को व्यवस्थित करेगा और टीम के प्रवक्ता के रूप में कार्य करेगा, जो बाहर का इंटरफ़ेस होगा। यदि आप इस तरह से जाते हैं, तो उपरोक्त मुद्दों से बचने के लिए घूर्णन एक अच्छा विचार हो सकता है - वेतन मतभेद, ईर्ष्या ...


0

कभी-कभी, एक नेता होने के बजाय कुछ और की तुलना में एक भारी जिम्मेदारी है। कोई व्यक्ति चुनावों की जिम्मेदारी लेने के लिए है, कि जब कोई और इसे करना चाहता है तो समाज कैसे काम करता है।

तथ्य यह है कि एक टीम जो नेता को घुमाना चाहती है, इसका मतलब यह हो सकता है कि हर कोई महसूस करता है कि वे जो कुछ करते हैं उसकी जिम्मेदारी ले सकते हैं, और वे किसी का पक्ष नहीं लेना चाहते हैं, और यह एक अच्छी बात लगती है: कोई कठिन भावनाएं नहीं हैं, और हर कोई चाहता है कि टीम को सफलता मिले।

उन मामलों में, जब लेने के लिए कठिन निर्णय होते हैं, तो बस उन निर्णयों के लिए एक वोट करें, और जब आपको अन्य लोगों से बात करने के लिए एक प्रतिनिधि की आवश्यकता होती है, तो बस किसी ऐसे व्यक्ति का चुनाव करें जिसमें सबसे अच्छा संचार कौशल हो।


-1

सबसे पहले, मुझे लगता है कि आपको भूमिकाओं को अलग करने की आवश्यकता है। कोई कारण नहीं है कि टीम और कंपनी के बाकी हिस्सों के बीच संपर्क के रूप में कार्य करने वाले व्यक्ति को अंतिम तकनीकी निर्णय लेने वाले व्यक्ति को भी जरूरी होना चाहिए।

बिंदु-के-संपर्क के रूप में कार्य करना किसी भी प्राधिकरण को प्रदान नहीं करना चाहिए, इसलिए उस नियत समय पर जिम्मेदारी को घुमाना आवश्यक नहीं होना चाहिए। मैं कहता हूं कि टीम बैठ जाएगी, हर कोई कहता है कि वे काम करने में कितना मन लगाएंगे (कुछ लोगों को यह पसंद आ सकता है, दूसरे इसे करने के लिए दृढ़ता से विरोध कर सकते हैं), फिर भूमिका को भरने के लिए किसी को वोट दें। यह समझ लें कि जब भी वे इसे करने के लिए बीमार होंगे, वे इसे किसी और को सौंप सकते हैं।

तकनीकी नेतृत्व की ओर। यदि सभी के पास समान कौशल सेट है और मोटे तौर पर समान स्तर का अनुभव है, तो निश्चित रूप से, हर किसी को लीड होने पर अपना हाथ आजमाएं। महत्वपूर्ण बात यह है कि मध्य-परियोजना को बिल्कुल नहीं बदलना चाहिए। एक नई परियोजना के शुरू होने तक प्रतीक्षा करें, और फिर उस क्षेत्र में या जिस पर सबसे अधिक अनुभव है, या तो सीसा चुनें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.