কীভাবে একটি দলে কাজ করা (কোনও ওও প্রকল্পে) কাজ করে? [বন্ধ]


15

আমি জাভাতে প্রোগ্রামিং করছি, খুব ওও স্টাইলে, নিজের দ্বারা। অন্যান্য প্রোগ্রামারদের সাথে কাজ করার সুযোগ কখনই পাইনি (আমি পেশাদার নই, কমপক্ষে এখনও)।

কৌতূহলের বাইরে আমি জিজ্ঞাসা করতে চেয়েছিলাম: একটি প্রকল্পের কাজ নিয়ে একটি দলের সাথে কীভাবে কাজ করা হয়, বিশেষত ওও প্রকল্পে কাজ করার সময়?

বিভাজনের কাজগুলি কীভাবে কাজ করে? আপনি কীভাবে এমন কিছু বিকাশ করবেন যা সফলভাবে অন্য কোনও প্রোগ্রামার বিকাশযুক্ত কিছু নিয়ে কাজ করবে? প্রোগ্রামাররা কীভাবে এবং কখন যোগাযোগ করে?

ধন্যবাদ


উত্তর:


29

আশা করি আমি আপনাকে একটু সাহায্য করতে পারি, বা কমপক্ষে আপনাকে সঠিক দিকে নির্দেশ করব!

যদিও অস্বীকৃতি হিসাবে কিছুটা হলেও, এটি একটি বিশাল বিষয় - এবং যা আমি সত্যই মনে করি তার গভীর উপলব্ধি পেতে " নিক্ষেপ করা " লাগে । এটি বলেছিল, আমি দুটি বড় সমস্যার দ্রুত পদক্ষেপ নেব:

  1. কোড এবং উত্স নিয়ন্ত্রণ
  2. যোগাযোগ এবং কিছু টিপস।

বিশেষত ওওপি প্রকল্পগুলি সম্পর্কিত - আমি সত্যই ওওপি-র নির্দিষ্ট অনেকগুলি সমস্যা দেখতে পাচ্ছি না যা অন্য কোথাও উপস্থিত নেই।

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

ওওপি সরবরাহ করতে পারে এমন বিমূর্ততা একটি দলে দুর্দান্ত।

উৎস নিয়ন্ত্রণ

প্রকল্পটি সংরক্ষণ করার জন্য একটি কেন্দ্রীয় জায়গা থাকা দরকার এবং এটি এমন এক যা একাধিক বিকাশকারীকে যে কোনও সময়ে কোডবেস অ্যাক্সেস করতে দেয়। এখানেই গিট (বা এসভিএন) এর মতো সিস্টেমগুলি খেলতে আসে।

আমি কেবল গিট সম্পর্কে বিশেষভাবে কথা বলতে পারি, যেহেতু আমি কখনই এসভিএন ব্যবহার করি নি - তবে আমি সংগ্রহ করি সেগুলি একই রকম তবে ভিন্ন পরিভাষার সাথে।

গিট ব্যবহার করে আমি প্রদত্ত প্রকল্পের জন্য সমস্ত উত্স কোড সহ একটি সংগ্রহস্থল তৈরি করতে পারি এবং তারপরে আমার দলটিকে সংগ্রহশালায় অ্যাক্সেস করার অনুমতি দেয়। তারপরে তৈরি প্রতিটি বৈশিষ্ট্য বা বাগ ফিক্সের জন্য পৃথক বিকাশকারীরা তাদের নিজস্ব "শাখা" তৈরি করতে পারে যার অর্থ সমান্তরাল ট্র্যাকগুলিতে বিকাশ ঘটতে পারে।

কোনও বৈশিষ্ট্য বা ফিক্স সম্পূর্ণ হয়ে গেলে এটি আবার মূল প্রকল্পের কোডবেসে " একত্রিত " হতে পারে । যেকোন " দ্বন্দ্ব " তখন গিট দ্বারা সনাক্ত করা যায় এবং উত্স স্তরে দায়বদ্ধ বিকাশকারী দ্বারা সমাধান করা যেতে পারে।

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

আপনি যদি এটি আগে ব্যবহার না করে থাকেন তবে আমি গিটহাবটিতে সাইন আপ করার এবং সেভাবে অনুভব করার পরামর্শ দিচ্ছি! (বিকল্পভাবে, বিটবুকিট একটি অনুরূপ বিকল্প, তবে এটি আপনাকে নিখরচায় ব্যক্তিগত সংগ্রহস্থল রাখতে দেয়))

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

যোগাযোগমন্ত্রী

সমস্ত প্রযুক্তিগত প্রতিবন্ধকতাগুলি অতিক্রম করার পরে, আপনি সত্যিকার অর্থেই মূল সমস্যাটিতে আসবেন যা বেশিরভাগ প্রকল্পকে (প্রযুক্তিগত বা না) জর্জরিত করে - এবং এটিই যোগাযোগ।

কে কী করছে, কখন তারা এটি করছে এবং এর প্রভাব কী তা নিয়ে পুরো দলকে সচেতন হওয়া দরকার।

দায়িত্ব স্পষ্টভাবে সংজ্ঞায়িত করা প্রয়োজন

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

এটি বন্ধ হয়ে যায় বা কমপক্ষে, প্রতিরোধকারীদের একই সমস্যা নিয়ে দুর্ঘটনাক্রমে কাজ করতে সহায়তা করে।

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

সাধারণভাবে, এই সমস্যাগুলি দ্বারা স্থির করা যেতে পারে ...

নিয়মিত সভা

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

আমি এক্স এ কাজ করছি,

ওয়াই অর্জন / ঠিক করতে,

যার মধ্যে জেড পরিবর্তন করা / সংশোধন করা জড়িত।

দলের অন্যান্য সদস্যরা তাৎক্ষণিকভাবে এটি গ্রহণ করতে পারেন যে " ফার্গাস অন্য দিন লগ হওয়া সেই বাগটি ঠিক করতে কাজ করছেন, তবে তার অর্থ তিনি যে কোনও কোডে আমার নজর দেওয়া দরকার সে বিষয়ে কাজ করছেন - আমি কোনও পরিবর্তন করার আগে আমি তার সাথে চেক করব। "।

স্থাপত্য সভা

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

আমি ব্যক্তিগতভাবে এটি পছন্দ করতাম, আমি প্রকল্পে নতুন হিসাবে আমি খুব বেশি অবদান রাখি না - তবে আলোচনা শুনতে সক্ষম হয়ে আমাকে অনেক অন্তর্দৃষ্টি দিয়েছিল ; খুব শীঘ্রই আমি প্রকল্পের পাশাপাশি স্বতন্ত্র চিন্তার স্টাইলগুলি বুঝতে পারি।

যোগাযোগ হ'ল একটি বিষয় যা কোনও দলকে নামিয়ে আনতে পারে । প্রযুক্তিগত বা না, লোকেরা যদি বড় ছবি সম্পর্কে সচেতন না হয় তবে তাদের ব্যর্থ হওয়ার আরও বেশি সম্ভাবনা রয়েছে।

অন্যান্য ব্যাপার

দলে কাজ করার সময় প্রত্যেকের একই কনফিগারেশন বা স্টাইল রয়েছে তা নিশ্চিত হওয়া ভাল। মানে কি?

কনফিগারেশন

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

ওয়েব প্রকল্পে এটি হতে পারে যে সমস্ত বিকাশকারীকে একটি নির্দিষ্ট স্ট্যাকের প্রয়োজন হয়; নির্দিষ্ট অ্যাপাচি বা পিএইচপি সংস্করণ সহ।

এই জাতীয় কারণগুলির কথা চিন্তা করে দলটিকে আমার মনে কিছুটা দ্রুত "জেল" দেওয়ার অনুমতি দেয়।

শৈলী

ট্যাব বনাম ফাঁকা স্থান? ক্যামেলকেস বা spacing_with_underscores? আপনি যখন একা কাজ করছেন, আপনি যখন একটি বড় টিমের সাথে কাজ করছেন তখন আপনি সত্যিই একটি সাধারণ শৈলীর দিকে চালিয়ে যেতে চাইলে এই প্রশ্নগুলির যত কমই হতে পারে।

আপনি শুধু জানা উচিত - আসলে, আপনি কি সত্যিই বলতে যারা কোডের একটি নির্দিষ্ট অধ্যায় লিখেছিলেন সক্ষম হবে না এটি জন্যে

এ কারণেই অনেক ওপেন সোর্স প্রকল্পগুলি সোর্স কোড ফর্ম্যাট গাইডলাইন / স্টাইলগাইডগুলি প্রকাশ্যে প্রকাশ করে - এর মধ্যে কী রয়েছে তার একটি ধারণার জন্য, তাদের নিজস্ব ওপেন সোর্স প্রকল্পগুলির জন্য গুগল স্টাইলগুইডগুলি একবার দেখুন ।

কার্য এবং ইউনিট পরীক্ষা

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

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

পৃথক হিসাবে আমি গ্রান্টজেএসকে আমার এফটিপি সার্ভারে স্থাপন করার আগে আমার সাইটটি তৈরি করার জন্য ব্যবহার করি - একটি গ্রান্ট কমান্ড হ'ল আমার সিএসএস / স্যাসকে সংকলন এবং মিনিফাইয়েড করা , আমার সম্পদগুলি সংকুচিত করা এবং তারপরে আমার ফাইলগুলি আপলোড করা দরকার।

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

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

নথিপত্র

আমি যে সেরা প্রকল্পগুলি দেখেছি তার বিকাশকারীদের লক্ষ্য করে ডকুমেন্টেশন ছিল (এবং প্রায়শই বেশিরভাগ অতিরিক্ত))। এই জাতীয় নথি যেমন বিষয়গুলি ব্যাখ্যা করতে পারে:

1. উন্নয়নের পরিবেশ:

"আমরা বর্তমানে একটি এলএএমপি স্ট্যাক চালিয়ে এমন একটি সার্ভারে স্থাপন করছি , কারণ এই জাতীয় বিকাশকারীদের বর্ণিত সংস্করণগুলি লক্ষ্য করা উচিত .."

2. কাজের প্রবাহ

"সমস্ত বৈশিষ্ট্য একটি 'বৈশিষ্ট্য / *' শাখায় বিকাশ করা হবে এবং মুক্তির জন্য প্রস্তুত হিসাবে বিবেচিত হওয়ার আগে 'পরীক্ষার' শাখায় মার্জ করা হবে" "

৩. দলে দায়িত্ব:

"ডাটাবেস ইস্যুগুলির জন্য, স্টিভের সাথে কথা বলুন। প্ল্যাটফর্ম ইস্যুগুলির জন্য, ডেভিডের সাথে কথা বলুন।"

4. ভবিষ্যতের জন্য একটি " পাইপলাইন "

"নতুন কোড বিকাশ করার সময় মনে রাখবেন যে ২০১৪ সালের জুন পর্যন্ত আমরা এক্স -লেগ্যাসি কোডটি বাস্তবায়িত করতে চাইলে এটি হওয়ার আগে পর্যালোচনা করা প্রয়োজন হতে পারে।"

উদাহরণ

এটি কীভাবে কাজ করে তার অনুভূতি পেতে কোনও ওপেন সোর্স প্রকল্পের কাজের প্রবাহটি দেখার মতো হতে পারে - তা তাদের নিজস্ব কর্মপ্রবাহ (প্রায়শই ভারী ডকুমেন্টেড) বা প্রতিষ্ঠিত গিটহাবের উদাহরণগুলির মধ্যে একটি হতে পারে whether

সতর্কতার একটি চূড়ান্ত শব্দ

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


1
বাহ, দ্রুত উত্তরের জন্য এত কিছু for আমার সন্দেহ হয় সেই টাইপগুলির মধ্যেও কিছু থেকে মুক্তি পাওয়ার জন্য অন্য কোনও সম্পাদনার প্রয়োজন হতে পারে ...
লন্ডনে

একটি ভাল মৌমাছির জন্য খুব বিস্তৃত বলে আমি মনে করি এমন প্রশ্নের উত্তরের উত্তর।
ডক ব্রাউন

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

1
ধন্যবাদ @ ডকব্রাউন! @ প্রোগ - এটি একটি খুব আকর্ষণীয় প্রশ্ন, এবং একটিও নয় আমি পুরোপুরি নিশ্চিত যে আমি উত্তর দিতে পারি! যদিও অভিজ্ঞতা থেকে কথা বললে, শুরুতে এই ধরণের পরিস্থিতি বিদ্যমান হওয়া বা কোনও বৈশিষ্ট্য বাস্তবায়িত হওয়ার সময় এটি সম্পূর্ণ সাধারণ মনে হয়। একজন বিকাশকারী তাদের নতুন বৈশিষ্ট্যটির মালিকানা নিতে পারে (এবং এইভাবে, কোনও নতুন বস্তু প্রয়োগ করা হয়) - তবে, যখন এটি কোডবেসে আবার মার্জ হয়ে যায় এবং রক্ষণাবেক্ষণ শুরু হয় তখন খুব বেশি যে কেউ একটি নির্দিষ্ট বাগ অর্পিত হয়, সেই বাগটি যেখানেই সেখানেই শিকার করে hunting আসলে জীবন!
ফার্গাস লন্ডনে

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