দলে কোড কাউবয়


15

এমন কোনও দলের সদস্যের সাথে আপনি কীভাবে व्यवहार করবেন যিনি আপনার থেকে সিনিয়র এবং সর্বদা অন্যান্য লোকের প্রকল্পগুলিতে ঝাঁপিয়ে পড়ে এবং রাত্রে বা সাপ্তাহিক ছুটির দিনে তাদের সম্পূর্ণ করেন? জরুরী অবস্থা রয়েছে কিনা সে 80 ঘন্টা সপ্তাহে কাজ করছে বলে মনে হচ্ছে এবং আপনার টুড তালিকার কোন অংশটি তিনি পরবর্তী সময়ে আঘাত করতে চলেছেন তা অনুমান করা কিছুটা কঠিন। কখনও কখনও আপনার কাজের দিনগুলি নষ্ট হয় কারণ সোমবার সকালে আপনি এই প্রকল্পটি শেষ করতে একটি চেকইন পেয়েছেন যা আপনি আগের সপ্তাহের বেশিরভাগ সময় ব্যয় করেছেন।

গুণমান সম্পর্কে জিজ্ঞাসা করা লোকদের কাছে: সাধারণত এটি বেশ ভাল তবে: অন্যান্য দলের সদস্যদের দ্বারা পরিচালিত কোড 'মালিকানাধীন' সহ কোডের অনেকগুলি রিফ্যাক্টরিং রয়েছে, স্পষ্টত ফলাফলের সাথে পরীক্ষার কভারেজের জন্য w / o বিবেচনা করে।


51
আপনি কীভাবে আমাকে তার বিশদটি দেবেন এবং আমি আমার সংস্থাকে তাকে পোচ করার জন্য কী করতে পারি তা আমি দেখতে পাব।
কেভিন ডি

7
@ এমকে0১, এর মতো কিছু হ'ল "আপনারা যা যা অবদান রেখেছেন তা আমরা পছন্দ করি তবে আমরা সেই উপায়গুলি নিয়ে আলোচনা করতে চাই যা আমরা স্পষ্টভাবে কাজটি ভাগ করে নিতে পারি। যদি আমরা দলের কোডগুলির সাথে আপনার কোডিংটি উত্তোলন করতে পারি, আমরা আমরা এখনকার চেয়ে আরও দ্রুত এই কাজটি করতে পারি। " একটি বড় চাবিটি হ'ল: তাকে এমন মনে করুন যেন তিনিই সেই ধারণাটি নিয়ে এসেছিলেন।
রিওয়ালক

7
যতক্ষণ না তারা জ্বলে উঠে ততক্ষণ আরাম করুন এবং অপেক্ষা করুন।
স্টিভেন এভার্স

9
দেখে মনে হচ্ছে আপনি সোমবার সকালে আরও বেশি সময় পরিকল্পনা করতে পারেন।
জেফো

3
আপনি আমাদের যা বলেন নি তা হ'ল তার কোডের মান। তিনি কি অন্য ব্যক্তির সমান, বৃহত্তর বা কম মানের সমাধান সহকারে প্রিম্পিং করছেন?
ডেভিড থর্নলি

উত্তর:


17

এটি সম্ভবত আংশিকভাবে স্বচ্ছতার সমস্যা; তিনি সম্ভবত আপনার সময় নষ্ট করার চেষ্টা করছেন না। লোকেরা যে কাজগুলিকে আরও সুস্পষ্টভাবে কাজ করছে সেগুলি তৈরি করার বিষয়ে আমি ম্যানেজমেন্টের সাথে কথা বলব, যাতে তিনি আরও সহজেই বুঝতে পারেন যে কেউ ইতিমধ্যে সেই কাজটিতে সময় বিনিয়োগ করেছে এবং তার কাজগুলির দিকে তার প্রচেষ্টা ফোকাস করে কী কাজগুলি দাবিদার নয় তা দেখতে পাবে।

আমি এই সম্পর্কে সরাসরি তার মুখোমুখি হবে না। আমি আপনার ম্যানেজারের সাথে কথা বলব, যাতে কিছু প্রক্রিয়া স্থাপন করা যায়। সমস্যাটি সম্ভবত তাঁর সাথে সবচেয়ে বেশি দৃশ্যমান হওয়ার পরেও আমি বাজি ধরছি এমন আরও সতীর্থ রয়েছেন যারা একই কাজ করছেন (দুর্ঘটনাক্রমে অন্য কেউ ইতিমধ্যে কাজ করছেন এমন প্রকল্পগুলি শুরু করছেন) স্বল্প মাত্রায়। আমি মনে করি আপনার পরিচালক এই নতুন প্রক্রিয়াটি পরিচালনা করার পক্ষে সর্বোত্তম অবস্থানে আছেন, যদিও আপনার সম্ভবত এটি থেকে কাজ করার জন্য তাকে কিছু ধারণা দেওয়া উচিত। যদি আপনার ম্যানেজারের সাথে কাজ করা যদি কাজ না করে, তবে আপনার সরাসরি তার সাথে কথা বলা চালানো উচিত - তবে আমি ম্যানেজারের সাথে শুরু করব।

আমাদের টিম একটি সাদা বোর্ডে করা দরকার এমন সমস্ত কাজের সাথে স্টিকি নোট রেখে এই সমস্যাটি মোকাবেলা করেছে। প্রত্যেক দলের সদস্যের নামটিতে একটি লেবেল ছিল এবং তারা যে স্টিকি নোটটি তারা "প্রগতিতে" কলামে কাজ করছে এবং তাদের নামের সাথে এটি লেবেল করবে। অন্য কোনও ব্যক্তি যদি এই কাজের সাথে সহায়তা করতে চান, তবে তারা কাজটি দাবি করেছেন এমন ব্যক্তির সাথে এটি আলোচনা ও আলোচনা করার আশা করা হয়েছিল। একটি অনুরূপ সিস্টেম আপনার সমস্যাগুলিতে অনেক সহায়তা করতে পারে।


17

ধরে নিচ্ছি যে তিনি সত্যই দক্ষ এবং "সমস্ত ব্যবসায়ের জ্যাক" ...

তার স্টাইল আলিঙ্গন। তাকে ভাঙা । এবং - তাকে বিচ্ছিন্ন করুন।

এছাড়াও ...

আপনি যে দায়িত্ব অর্পণ করেন সেগুলি নিয়ে সুস্পষ্ট হন।
আপনার দলটি তার কাছ থেকে শিখেছে তা নিশ্চিত হন (উদাহরণস্বরূপ, জুড়ি প্রোগ্রামিং দুর্দান্ত কাজ করে)।
"অল ইন-ইন" যাবেন না - তাকে পরীক্ষা করুন এবং পরিস্থিতি আরও খারাপ হলে ব্যাকআপ পরিকল্পনা রয়েছে তা নিশ্চিত হন।

সবচেয়ে খারাপ জিনিস আপনি করতে পারেন তার প্রেরণা স্ক্রু।


আমি এটি আমার নিজের অভিজ্ঞতা থেকে বলছি। আমি আমার মতো দক্ষ হতে পারি না, তবে আমি অবশ্যই ইউআই থেকে দৃ U়তা অবধি সমস্ত পথে যেতে পারি এবং আমি অবশ্যই কাউবয় কোডিংয়ের অনুশীলন করছি (যা অবশ্যই দ্বিধার তরোয়াল)।

আমি একা বেশ আশাবাদী প্রকল্পে ছুঁড়েছি (আমি বিষয়গুলিকে আরও মজাদার করে দিয়েছি - এগুলি পুনরায় লেখার প্রস্তাব দিয়েছি এবং এটির উপর একটি গ্রহণযোগ্যতা পেয়েছি), জিনিসগুলি ভাল চলছে এবং আমি এটি পছন্দ করি। ভুলের জন্য দোষারোপ করার কেউ নেই কেবল আমার myself আমি যখন স্বতঃস্ফূর্তভাবে কিছুটা রিফ্যাক্টর করার সিদ্ধান্ত নিই তখন কারও রব করার কেউ নেই ।

প্রকৃতপক্ষে - এই স্বাধীনতা হ'ল জিনিসটির মতো কেন আমি এখনও এখানে কাজ করছি।


9

আমার ধারণা আরও খারাপ সমস্যা আছে। যদিও, আপনার (বা আপনার দলের অন্যরা) যে কাজটি করা উচিত তা গুরুত্বপূর্ণ এবং এটি তার কাজের ফলাফলগুলি কার্যকরভাবে দলে একজন ব্যক্তির অবদানকে সরিয়ে দেয় বলে মনে হয়।

আমার অনুমান যে তিনি দলে যে প্রভাব ফেলছেন তা টের পান না; বরং, তিনি যে অবদানগুলি দিচ্ছেন তা সম্ভবত তাকে দলের কাছে মূল্যবান বোধ করে।

সমাধান (আইএমএইচও): সরাসরি তার মুখোমুখি। অবশ্যই, তিনি যে অবদান এবং ত্যাগ স্বীকার করেছেন তার কূটনীতিক এবং কৃতজ্ঞ হোন (৮০ ঘন্টা একটি অদ্ভুত কাজের সপ্তাহ, এবং সম্ভবত তার ব্যক্তিগত জীবনে চমত্কার উত্সাহী ত্যাগ ছাড়া ঘটতে পারে নি)।

তবে তার সহকর্মীদের - জুনিয়র বা অন্যথায় দূরে না রাখার মতো আচরণ করা তার দায়িত্ব। এবং দলের প্রত্যেকেই অনুভবের অধিকারী যে তারা চেষ্টা করছে অর্থবহ - সর্বোপরি, কেউ যদি তাদের উপস্থিতি অর্থহীন হয় তবে কেন প্রতিদিন কাজ করতে যেতে চাইবে?


আপনি জানেন যে এসও / এসই এর ওপির প্রোফাইলটি দেখার পরে আমি মুদ্রার অন্য দিকে তাকাতে নেতৃত্ব দিচ্ছি f যদি এটি সিনিয়র ইচ্ছাকৃতভাবে বা অনিচ্ছাকৃতভাবে এটি করত Tim তবে টিমের উল্লেখযোগ্য কারণে এটি অবশ্যই খারাপ। এছাড়াও জুনিয়রদের বাড়তে / বিকাশ না করার মূল বিন্দুটির কারণে। জুনিয়ররা আপনাকে প্রতিস্থাপনের জন্য যথেষ্ট ভাল হয়ে উঠলে আপনার উপস্থিতি ছাড়াই শোটি চালানো যেতে পারে। সুতরাং +1
আদিত্য পি পি

9

তাকে আরও বেশি কাজ দেওয়ার কথা বিবেচনা করুন , তাই তাকে আপনার খোঁজ করতে হবে না!


6

দলের সম্ভাব্য সদস্যরা খুব ধীরে ধীরে এগিয়ে চলেছে বলেই নাকি বস তাকে জিজ্ঞাসা করেছেন বলেই কি সে "লাফিয়ে লাফিয়ে শেষ" হতে পারে?

বাইপাস করা কতটা বিরক্তিকর, এবং আরও প্রসারণযোগ্য (অগত্যা আরও ভাল নয়) কোডার দ্বারা এটি কেবল কতটা "দেখানো" হচ্ছে?


4

তিনি কি জানেন যে অন্যান্য লোকেরা এই বিরক্তিকর মনে করে? আমি কৌশলে তার সাথে এনে আনার পরামর্শ দেব, আপনি নিজের প্রকল্পগুলি শেষ করতে পছন্দ করবেন। যদি এটি কাজ না করে বা আপনি আপনার প্রবীণ ব্যক্তির সাথে এটি আনতে অস্বস্তি বোধ করছেন তবে এটি পরিচালনার ক্ষেত্রে। আপনি যদি প্রকল্পগুলি সম্পন্ন করছেন না কারণ তিনি হচ্ছেন, ম্যানেজার পরিস্থিতিটি না জানলে আপনি মনে হচ্ছেন যে আপনি বিলম্ব করছেন।

এছাড়াও, অন্যরা যেমন বলেছে, সে কীভাবে নিজের উন্নতির জন্য কাজ করে তা দেখুন। তিনি কীভাবে আপনার সমস্যার সমাধান করেছেন তা দেখতে তার চেকিনগুলি দেখুন - সম্ভবত এটি একটি চালাক ফিক্স যা আপনি নিজেকে ভেবে দেখেননি। মনে রাখবেন যে প্রবীণ বিকাশকারীরা কোডবেস আপনার চেয়ে অনেক বেশি ঘনিষ্ঠভাবে জানেন। যে বিষয়গুলিকে তুচ্ছ মনে হচ্ছে এটি আসলে নতুন বিকাশকারীদের আবিষ্কার করা কঠিন হতে পারে।


7
পছন্দসইভাবে প্রোগ্রামিংয়ে ৮০ ঘন্টা কাজ করা যে কেউ সামাজিক দক্ষতায় কিছুটা সংক্ষিপ্ত হতে পারে।
ডেভিড থর্নলি

4

এমন কোনও দলের সদস্যের সাথে আপনি কীভাবে व्यवहार করবেন যিনি আপনার থেকে সিনিয়র এবং সর্বদা অন্যান্য লোকের প্রকল্পগুলিতে ঝাঁপিয়ে পড়ে এবং রাত্রে বা সাপ্তাহিক ছুটির দিনে তাদের সম্পূর্ণ করেন?

জলদি কাজ করো?

জরুরী অবস্থা রয়েছে কিনা সে 80 ঘন্টা সপ্তাহে কাজ করছে বলে মনে হচ্ছে এবং আপনার টুড তালিকার কোন অংশটি তিনি পরবর্তী সময়ে আঘাত করতে চলেছেন তা অনুমান করা কিছুটা কঠিন।

সংজ্ঞা অনুসারে, যদি এটি আপনার টোড তালিকায় থাকে - এটি করা হয়নি। যদি সে এটি সম্পূর্ণ করে, আপনার টুড তালিকাটি এটিকে অতিক্রম করুন।

কখনও কখনও আপনার কাজের দিনগুলি নষ্ট হয় কারণ সোমবার সকালে আপনি এই প্রকল্পটি শেষ করতে একটি চেকইন পেয়েছেন যা আপনি আগের সপ্তাহের বেশিরভাগ সময় ব্যয় করেছেন।

এটিকে সাধারণত টিম ওয়ার্ক বলা হয় - তিনি যে দিকনির্দেশনাটি পছন্দ করেছেন তা যদি না পছন্দ করেন তবে সমস্যা কি?

গুণমান সম্পর্কে জিজ্ঞাসা করা লোকদের কাছে: সাধারণত এটি বেশ ভাল তবে: অন্যান্য দলের সদস্যদের দ্বারা পরিচালিত কোড 'মালিকানাধীন' সহ কোডের অনেকগুলি রিফ্যাক্টরিং রয়েছে, স্পষ্টত ফলাফলের সাথে পরীক্ষার কভারেজের জন্য w / o বিবেচনা করে।

"মালিকানাধীন" এবং কোড একসাথে যায় না। যদি আপনার চালিয়ে যেতে সমস্যা হয় তবে তাকে এটি আপনার কাছে ব্যাখ্যা করতে বলুন। তাকে আপনার পরামর্শদাতা হিসাবে জিজ্ঞাসা করুন, যেমনটি মনে হয় তিনি বেশ উত্পাদনশীল। সম্পর্কটি উত্সাহিত করুন এবং একসাথে কাজ করুন।

পরীক্ষার কভারেজ হিসাবে, যদি এটি আপনার org এর একটি মান - তবে এটি আপনার নেতৃত্ব / পরিচালককে সামনে আনুন। দ্রুত, তবে স্বল্প, কাজ কারও কাজে আসেনি। যদিও, তিনি যদি আপনার চেয়ে 10x বেশি উত্পাদনশীল হন - আপনি তার পরে পরিষ্কার করার ভুট্টা কাজটি শেষ করতে পারেন। যদি এটি হয় তবে তার সাথে সম্পর্কের ক্ষেত্রে আরও বেশি বিনিয়োগ করুন।


তিনি আদর্শ দলের সদস্যের মতো মনে হচ্ছে ... তিনি কী কাজ করেছেন / শেষ করেছেন তা তিনি পরিষ্কার করে দিচ্ছেন, তিনি দলের প্রত্যেক সদস্যকে সহায়তা করছেন ইত্যাদি।
আগস্ট 21

3
  • তার কাছ থেকে শিখুন এবং আপনার কাজের গতি উন্নত করার চেষ্টা করুন।
  • আপনার কাজটি পিছিয়ে থাকার সম্ভাবনা থাকতে পারে।
  • তিনি সিনিয়র হওয়ায় পরিচালনার প্রত্যাশার কারণেই পর্দার আড়ালে বা আপনার জ্ঞানের উপরে আরও কিছু হতে পারে be
  • আপনি ভাবতে পারেন তার কাছে আরও ভাল কিছু করার দরকার নেই, প্রায়শই এটির সম্ভাবনা কম।
  • আপনি জরুরি সম্পর্কে সচেতন নাও হতে পারেন।
  • এটি পরিচালনা বা সিনিয়র দ্বারা আপনার পারফরম্যান্সের ইঙ্গিত হতে পারে।

যেভাবেই এর সর্বোত্তম উপায়ে আপনি প্রথমে নিজেকে মূল্যায়ন করা শুরু করেন her তার সাথে "ডিল" করার আপনার প্রচেষ্টা ম্যানেজমেন্টের সাথে ভাল কাজ করতে পারে না।


3

সমস্যাগুলি সমাধান করা এবং নায়ক হওয়া থেকে তিনি স্পষ্টতই তার সন্তুষ্টি পেয়েছেন - যা ভাল, তবে আপনার (তার দলের নেতৃত্ব ভাল হওয়া দরকার, তবে আপনি মাঝামাঝি সময়ে) সেই উপায়টির উপায় খুঁজে বের করতে পারেন।

মূল বিষয়গুলি আমার দিকে ঝাঁপিয়ে পড়ে:

  • অন্যের চেয়ে দ্রুত কাজ করার প্রতিভা তার আছে (আপনি তার কোডটি খারাপ হওয়ার বিষয়ে কিছুই বোঝেননি)

সুতরাং এটি ব্যবহার করুন। আপনার পরবর্তী প্রকল্পে, কিছু কাজ করার জন্য তাকে সামনে উপস্থিত করুন। এইভাবে আপনি জানেন যে তিনি কী করার পরিকল্পনা করছেন। যদি তার সন্তুষ্টি সমস্যার সমাধান থেকে আসে তবে তিনি সম্ভবত এটিই খুশি হবেন যদি আপনি তাকে এটি প্রস্তাব করেন যেমন তিনি ব্যাকগ্রাউন্ডে এটি করেন।

সম্ভবত আরও উন্নততর হয়ে যান, এটি আনুষ্ঠানিক করুন, যেহেতু একটি দল অতিরিক্ত কাজ করতে চায় এমন প্রত্যেকের পক্ষে কাজ শেষ করে দেয় - এইভাবে চুরির উপাদানটি চলে যায় এবং প্রত্যেকে জয়ী হয়।


1
আপনি যদি ডিমারকো বইগুলি পড়েন তবে আপনি দেখতে পাবেন যে ভাল এবং খুব ভাল-বিকাশকারীরা উত্পাদন করতে পারে তার পরিমাণের মধ্যে প্রায় 10: 1 অনুপাত থাকে। আপনি যে সর্বশেষ কাজটি করতে চান তা হ'ল আউটলারের পঙ্গু হওয়া যিনি অন্যের চেয়ে বেশি কাজ করেন, আপনাকে সেই শক্তিটি ব্যবহার করতে হবে এবং যেখানে এটি সবচেয়ে ভাল করবে সেখানে পরিচালনা করতে হবে।
দ্রুত_নু

2

জুটি-প্রোগ্রামিং করছে দলটি শুরু করুন।

প্রথমে, জুটি-প্রোগ্রামিং ক্লান্তিকর, বিশেষত অন্তর্মুখী দেবদের জন্য যারা সমস্ত উইকএন্ড তাদের নিজস্বভাবে কাজ করতে পছন্দ করেন। তার সাপ্তাহিক ছুটিগুলি যেমন শিথিল হওয়া উচিত, শিথিল করার জন্য মূল্যবান হয়ে উঠবে।

দ্বিতীয়ত, তিনি জ্ঞানের উপর দিয়ে যাবেন (যতক্ষণ না আরও নবাগত বিকাশকারীরা গাড়ি চালাচ্ছেন) এবং এভাবে তার দারুণ চমকপ্রদ দক্ষতা দলের বাকি অংশে ছড়িয়ে দিচ্ছেন।

তৃতীয়ত, তিনি বর্তমানে আপনার পক্ষে যে বিশাল ঝুঁকি নিয়ে চলেছেন তা হ্রাস করবেন, যাতে একাধিক দলের সদস্য সে কী জানেন।

চতুর্থত, তিনি - এবং দলের বাকি - কী নিয়ে কাজ করা হচ্ছে সে সম্পর্কে আরও ভাল ধারণা থাকবে। আপনি যদি এটি দল হিসাবে পুরো বৈশিষ্ট্যগুলি একত্রে সম্পন্ন করার সাথে একত্রিত করতে পারেন তবে সেখানে কাজ কম হবে, এবং চেক-ইন করার আগে কাজের সম্ভাবনা কম হবে।

পঞ্চম, তিনি একটি দলের অংশ হিসাবে খেলতে শিখবেন । এটি সম্পূর্ণরূপে সম্ভব যে তিনি তৈরি করা জনসংখ্যা এবং একই সাথে অন্যান্য দলের সদস্যদের কাজের সদৃশতার সাথে তার উত্পাদন ব্যয়ের চেয়ে বেশি ব্যয় করতে হবে। উত্পাদনশীলতা! = কার্যকারিতা।

ষষ্ঠ, কোডের গুণমান সাধারণত যখন ডেভস জুড়ি যায় তখন। একটি দুর্দান্ত পার্শ্ব প্রতিক্রিয়া।


1

তিনি কি জানেন যে লোকেরা কী কাজ করছে এবং তাদের অগ্রগতি করছে? পরিচালনা কি তাকে দিকনির্দেশনা দিতে পারে যাতে সে অন্য লোকের কাছ থেকে কাজ নকল করে না? পরিচালনায় আনার আগে আমি 1: 1 কথোপকথনের পরামর্শ দেওয়ার জন্য প্রলোভিত হব কারণ সম্ভবত তিনি কেবলমাত্র একটি ওয়ার্কাহলিক যা অন্যেরা কী করছেন না তা জানার দিকনির্দেশটি ব্যবহার করতে পারে যা তার পক্ষে বেশ কার্যকর হতে পারে না।

আপনার কাজের অপচয় হওয়ায় অন্যান্য দৃষ্টিকোণ থেকে এটি দেখুন। আপনি যা করেছেন তা থেকে আপনি কী শিখতে পারেন? আপনি কোন অংশগুলি করেন নি এবং তিনি কীভাবে সেগুলি করেছিলেন? অন্য কেউ কিছু করার কৃতিত্ব নিতে পারে বলে মনে করবেন না যে সমস্ত রক্ত, ঘাম এবং অশ্রু কোনও কিছুর জন্য নয়।


0

কাউবয়কে উত্সাহী মনে হচ্ছে। আমি ম্যানেজমেন্টের কাছে যাব যাতে তারা তাকে এক টন কাজ করতে দেয় এবং আপনাকে ছেলেরা আপনার নিজের জিনিসগুলি করতে দেয়। তবে, আপনি কাউবয় থেকে দুটি বা দুটি জিনিস শিখতে পারেন। আমি বলছি না যে 80 ঘন্টা কাজের সপ্তাহগুলি আদর্শ হওয়া উচিত (স্পষ্টত এটি একটি অতিরঞ্জিত), তবে একটি অতিরিক্ত কর্পোরেট পরিবেশে অতিরিক্ত সময় কর্মে ব্যয় করা স্বাভাবিক is


5
দীর্ঘ প্রোগ্রামিংয়ের সময় লাগানো সাধারণত দীর্ঘমেয়াদে প্রতিরোধী হয়।
ডেভিড থর্নলি

@ ডেভিড: আপনাকে অন্য শুক্রবার ছাড় দেওয়া হয় না তবে :)
ব্রায়ান

2
@ 0 এ0 ডি: এটি নমনীয়তা, "অতিরিক্ত সময় লাগবে না কাজে"
কারসন 63000

3
@ ওএওড: যে কোনও দোকানে লোকে নিয়মিত অসচ্ছল ওভারটাইম কাজ করে এমন একটি দোকান একটি ঘামের দোকান।
বিট-টুইডলার

@ বিট-টুইডলার: বেতনের কর্মচারীদের কথা কখনও শুনেনি?
ব্রায়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.