কখন আমাদের কাজ থামানো এবং সরঞ্জাম তৈরি করা উচিত?


25

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

তবে এটি আসলে একটি বাণিজ্য-বন্ধ কারণ সরঞ্জাম তৈরিতে সময় এবং শক্তি প্রয়োজন energy এটি তাত্ক্ষণিকভাবে উত্পাদনশীলতা বৃদ্ধিতে দেয় না। সুতরাং, কাজ বন্ধ করার এবং আপনার ভবিষ্যতের ব্যথা কমাতে কিছু সরঞ্জাম তৈরি করার সময় এসেছে কিনা তা আপনি কীভাবে বিচার করবেন?


30
অবএক্সকেসিডি - এটি কি মূল্যবান

1
কোনও সরঞ্জামের দিকে রিফ্যাক্টর হতে পারে এবং কাজ
চালিয়ে যান


1
এই এক্সকেসিডি এটির একটি জিনিস ব্যতীত খুব বেশি নখ দেয়: সরঞ্জাম দ্বারা সংরক্ষণ করা সময়টি কেবল আপনার নিজস্ব কিনা, বা এটি আপনার সংস্থা জুড়ে বা তার বাইরেও কোনও বৃহত ব্যবহারকারীর বেস দ্বারা গুণিত হবে।
কাজ

উত্তর:


27

এর মধ্যে একটি সত্য হলে আমি "সরঞ্জামগুলি তৈরি করি":

  1. কাজটি আমাকে বিরক্ত করছে
  2. কার্যটিতে মানুষের ত্রুটির ঝুঁকি খুব বেশি

২ য় বিকল্পের জন্য "ঝুঁকি" বিশাল হতে হবে না - একটি ছোট সরঞ্জাম তৈরির জন্য ব্যয়টি সাধারণত খুব কম হয়, তাই আপনি যদি সমস্ত কিছু সঞ্চয় করেন তবে সপ্তাহে একবার যদি 10 মিনিটের বিল্ড চালানোর ঝুঁকি থাকে তবে এটি সাধারণত খুব দ্রুত শোধ করুন।

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

এর অর্থ হ'ল আপনি প্রতিবার কেবলমাত্র সবচেয়ে বড় ব্যথা স্থির করেছেন, এবং এমন সমস্যাগুলির স্থিরতা তৈরি করছেন না যা আপনাকে সত্যিই আঘাত করবে না।


2
ত্রুটিগুলি এড়ানোর জন্য +1 কারণ এটি কার্যকর সময় সঞ্চয়ের সময় সাশ্রয়ী সময় ব্যয় করা সাধারণ সময়ের চেয়ে বেশি।
বি

1
আমি যুক্ত করব "যখন আপনি নিজেকে একই কাজটি খুব ঘন ঘন পুনরাবৃত্তি করতে দেখেন"। আমি, আশ্চর্যজনকভাবে যথেষ্ট, নিজেকে প্রায়শই প্রায়শই এলোমেলো অক্ষর তৈরি করার প্রয়োজন মনে করি। কোডটি ব্লিপ করার পরিবর্তে এটি করার পরিবর্তে আমি এটি করার জন্য একটি বোতাম দিয়ে একটি সাধারণ ফর্ম তৈরি করেছি
বাসার

9

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

  • সরঞ্জামটির একাধিক উদ্দেশ্য রয়েছে। একজন ভাল দাবা খেলোয়াড় প্রতিটি পদক্ষেপের সাহায্যে দুটি জিনিস অর্জন করেছিলেন: একটি প্রতিপক্ষকে অবরুদ্ধ করুন এবং বিশপকে মুক্ত করুন। একজন শিক্ষানবিসকে সম্ভবত এটি করতে দুটি পালা দরকার। তেমনি, আমি বিবেচনা করছি যে সরঞ্জামটি কেবল একটি কাজ করবে বা ছোট অতিরিক্ত প্রচেষ্টা নিয়ে দু'টি করে, উদাহরণস্বরূপ কিছু কাঁচা ডেটা ফাইল ঠিক করতে এবং কৃত্রিম পরীক্ষার ডেটা তৈরি করতে সহায়তা করে।
  • ভবিষ্যতের উপযোগিতা। এটি এই সপ্তাহের কাজের জন্য আমার সময় সাশ্রয় করতে পারে, তবে পরের সপ্তাহে নতুন বা প্রকল্পে আমার বা কারও সময় বাঁচানোর সম্ভাবনা রয়েছে?
  • একটি নতুন ভাষা, গ্রন্থাগার, ডিজাইনের কৌশল বা যাই হোক না কেন শেখার জন্য এটি ভাল সময় এবং আমার এটি করার সময় হয়। সরঞ্জামটি শিক্ষার জন্য ইতিমধ্যে প্রদত্ত সময়কে ব্যবহার করে কিছু কিছু করার জন্য একটি উপকারী পার্শ্ব প্রতিক্রিয়া।
  • যখন আমাদের কাজ করতে জিনিস পেতে গুরুতর সমস্যা হয়। প্যারাসুট ব্যতীত স্কাইডাইভিংয়ের মতো, আপনার প্যারাসুট তৈরি বা কেনার জন্য সত্যই সময় নেওয়া উচিত। আপনি যদি কোনও অর্থবহ পরীক্ষামূলক ফলাফল পেতে না পারেন, বা নতুন ওয়েব অ্যাপ্লিকেশনটি কিছুতেই কাজ করবে না, আপনি যা দেখতে পাচ্ছেন না, উপাদানগুলি চালনা করতে পারবেন না, বা তার অংশটি প্রতিস্থাপন করতে পারবেন এমন ব্যবস্থা নেওয়ার জন্য আপনাকে কেবল থামাতে হবে এবং একটি সরঞ্জাম তৈরি করতে হবে বা কিনতে হবে পদ্ধতি. কাজটি যখন কোনও সরঞ্জামের প্রয়োজনে পুরোপুরি স্তব্ধ হয়ে যায়, তখন আমি ভবিষ্যতের ব্যবহার বা একাধিক ব্যবহারের বিষয়ে চিন্তা করি না। প্রয়োজনের যথেষ্ট পরিমাণ ওজন।

3
"সরঞ্জামটির একাধিক উদ্দেশ্য রয়েছে" যদি না এগুলি দুটি একই উপায়ে বাস্তবে একই উদ্দেশ্যে প্রয়োগ না করা হয় তবে আমার অভিজ্ঞতাতে কেবল দুটি সরঞ্জাম তৈরি করা ভাল।
এজেম্যানসফিল্ড

5

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

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

তারপরে, স্ক্রিপ্টটি পুরো-বিকাশের সরঞ্জামে বিকশিত হতে পারে বা নাও হতে পারে তবে আমি সাধারণত খুব নির্দিষ্ট একটি স্ক্রিপ্ট দিয়ে প্রচুর জিনিসগুলিতে হার্ড-কোডড দিয়ে শুরু করি।

আমি একটি আবেগ দিয়ে গ্রান্ট কাজ ঘৃণা করি, তবে আমি দৃ strongly়ভাবে বিশ্বাস করি যে এটি খারাপ বা ভুল ডিজাইনের লক্ষণ। প্রোগ্রামারের ক্ষেত্রে অলস হওয়া একটি গুরুত্বপূর্ণ গুণ, এবং পুনরাবৃত্তিমূলক কাজ এড়াতে আপনি অনেক ধরণের হয়ে যাওয়ার পক্ষে এটি আরও ভাল।

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

এবং তারপরে এটি খুব দেরিতে করার ঝুঁকি রয়েছে: তিনটি ব্র্যান্ডের নতুন ডেটা অবজেক্ট ক্লাসগুলি আকারে তৈরি করা এবং তাদের জন্য ওয়েব ফর্ম তৈরি করে এমন একটি স্ক্রিপ্ট লিখতে সহজ, এবং একবার আপনি এটি সম্পন্ন করার পরে আরও 27 টি ক্লাস যুক্ত করা সহজ easy আপনার স্ক্রিপ্ট নিয়েও কাজ করুন। তবে আপনি যখন এমন একটি বিন্দুতে পৌঁছেছেন যেখানে 30 টি ডেটা অবজেক্ট ক্লাস রয়েছে, যেখানে প্রতিটি হাতে হাতে লিখিত ওয়েব ফর্ম রয়েছে এবং তাদের মধ্যে কোনও অবিচ্ছিন্নতা ছাড়াই (ওরফে "জৈবিক বৃদ্ধি") এই স্ক্রিপ্টটি লেখা অসম্ভবের কাছাকাছি। এই ফর্মগুলির সাথে 30 টি শ্রেণি বজায় রাখা পুনরাবৃত্ত কোডিং এবং আধা-ম্যানুয়াল অনুসন্ধান-প্রতিস্থাপনের একটি দুঃস্বপ্ন, সাধারণ দিকগুলি পরিবর্তন করা যত বেশি সময় লাগে ততক্ষণ সময় লাগে তবে সমস্যাটি সমাধান করার জন্য একটি স্ক্রিপ্ট লিখে, প্রকল্পটি শুরু হওয়ার পরে যা দুপুরের খাবারের বিরতি নন-ব্রেইনার হত, এখন বাগ-ফিক্সিং, ব্যবহারকারীদের শিক্ষিত করা এবং সম্ভবত ত্যাগ ও প্রত্যাবর্তন নিয়ে গঠিত এক মাসব্যাপী ভয়ঙ্কর সম্ভাবনা সহ এক ভয়াবহ দুই সপ্তাহের প্রকল্প is পুরানো কোডবেস হাস্যকরভাবে, 30-শ্রেণির মেসটি লেখার জন্য পরিষ্কার সমাধানের চেয়ে বেশি সময় নিয়েছে, কারণ আপনি সেই সময়টি সুবিধামত স্ক্রিপ্টটি চালিয়ে যেতে পারতেন। আমার অভিজ্ঞতায়, পুনরাবৃত্তিমূলক কাজটি খুব দেরিতে দূরে সরিয়ে নেওয়া দীর্ঘস্থায়ী বড় সফ্টওয়্যার প্রকল্পগুলির অন্যতম প্রধান সমস্যা। কারণ আপনি সমস্ত সময় সুবিধাজনক স্ক্রিপ্টটি চালিয়ে যেতে পারতেন। আমার অভিজ্ঞতায়, পুনরাবৃত্তিমূলক কাজটি খুব দেরিতে দূরে সরিয়ে নেওয়া দীর্ঘস্থায়ী বড় সফ্টওয়্যার প্রকল্পগুলির অন্যতম প্রধান সমস্যা। কারণ আপনি সমস্ত সময় সুবিধাজনক স্ক্রিপ্টটি চালিয়ে যেতে পারতেন। আমার অভিজ্ঞতায়, পুনরাবৃত্তিমূলক কাজটি খুব দেরিতে দূরে সরিয়ে নেওয়া দীর্ঘস্থায়ী বড় সফ্টওয়্যার প্রকল্পগুলির অন্যতম প্রধান সমস্যা।


4

আমি কেবল এটি মনে রেখেছিলাম:

xkcd - এটা কি সময়ের উপযুক্ত?

অবশ্যই এটির সাথে সমস্যাটি হ'ল বাস্তব জীবনের পরিস্থিতিতে আপনি টেবিলের ডান ঘরটি নির্বাচন করতে সহজেই সেই ডেটাগুলি পরিমাপ করতে পারবেন না। এবং এটি অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছিল, সেখানে অন্যান্য ভেরিয়েবল রয়েছে (ত্রুটির ঝুঁকি, কাজটি একবারে এটি করা খুব বিরক্তিকর, ...) আপনাকে সমীকরণটি যুক্ত করতে হবে।

সুতরাং আমার উত্তরটি হ'ল এটি সত্যই পরিস্থিতির উপর নির্ভর করে এবং আপনি সমস্ত পরিস্থিতির জন্য কোনও "সঠিক" উত্তর পাওয়ার আশা করতে পারেন না। আমাদের সমস্ত কিছুর জন্য রান্নাঘর থাকলে সমস্ত জীবন বিরক্তিকর হবে।


1
সুন্দর! :-) তবে সময় সাশ্রয় করা অন্যান্য কাজগুলিতেও হতে পারে - যেহেতু এই সরঞ্জামটি একাধিক উদ্দেশ্যে ব্যবহার করা যেতে পারে, বা সরঞ্জামটি লেখার সময় আপনি যে জ্ঞান পেয়েছিলেন সে কারণে।
হ্যান্স-পিটার স্টার

3

এটি আমার অভিজ্ঞতার একটি বড় সমস্যা। সরঞ্জাম বিল্ডিংটি সাধারণত একটি অনুপ্রাণিত বিকাশকারীকে ছেড়ে দেওয়া হয় যিনি সরঞ্জামটি তৈরির কাজটি থামিয়ে দেন। এটি প্রায়শই উন্নতিতে হস্তক্ষেপ করে এমনকি এটি যদি মান সরবরাহ করে। সরঞ্জাম বিল্ডিংটিকে "প্রক্রিয়া" বিকাশের একটি সংহত অংশ হিসাবে দেখা দরকার।

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

পুরো টিমকে পর্যায়ক্রমে থামতে হবে এবং দেখার জন্য যেখানে সরঞ্জাম তৈরির মাধ্যমে স্বয়ংক্রিয় করা যায় তার চেয়ে বেশি ম্যানুয়াল প্রচেষ্টা রয়েছে।


2

অন্য সমস্ত উত্তর ভাল, তবে ছোট সরঞ্জামগুলি তৈরি করতে সময় ব্যয় করা কেন গুরুত্বপূর্ণ (এবং আপনার .vimrc, .emacs ইত্যাদি কাস্টমাইজ করুন):

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

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

এর মধ্যে একটি পার্থক্য হ'ল আপনি যখন "ব্যাক বার্নারে" থাকা উচিত এমন কিছু নিয়ে ভাবতে থাকুন - কেবল একটি মুহুর্ত সময় নেওয়ার পরে তা আপনার মন থেকে সরে যাবে এবং আপনাকে আপনার সম্পূর্ণ শক্তি আবার মূল কাজে লাগিয়ে দেবে।


1

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

আমি এটি সমর্থন করতে 2 টি যুক্তি ব্যবহার করি।

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

মাঝেমধ্যে তারা বড় বড় সরঞ্জামগুলিতে পরিণত হয় এবং ইন্টারেক্টিভ ফাংশনগুলি অর্জন করে, তবে সেগুলি না থাকলে তারা এখনও রেকর্ড হিসাবে মান রাখে।

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