আমি 1972 সালে লেখা একটি ভাড়া পদ্ধতিতে চালিত একটি গাড়ী ভাড়া সংস্থার জন্য ভাড়া এজেন্ট / পরিচালক হিসাবে কাজ করি I আমি সিদ্ধান্ত নিয়েছিলাম যে সম্ভবত এটি আপডেটের সময় এসেছে। কিছুটা পটভূমির জন্য, আমাদের প্রতিদিনের এই প্রোগ্রামটি থেকে আমাদের যে পাগলামির মুখোমুখি হতে হচ্ছে তার একটি সংক্ষিপ্ত উদাহরণ এখানে:
একজন ভাড়া এজেন্টকে অবশ্যই মনে রাখতে হবে যে এক স্ক্রিনে মুদ্রণটি ACT ক্ষেত্রের "এমএক্সসি" ব্যবহার করে (সমস্ত কিছুই সংক্ষিপ্ত কোডের উপর ভিত্তি করে), যা বিস্মিত হয়ে "একটি চুক্তির উপর ম্যাক্সিমিয়াম ডিসপ্লে" বোঝায়, অন্যদিকে এটিতে পিআর প্রয়োজন (প্রিন্টের জন্য) অ্যাকশন ক্ষেত্র, তবে বেশ কয়েকটি স্ক্রিন পিটি (প্রিন্টের জন্য) ক্ষেত্রে একটি ওয়াই ব্যবহার করে, অন্য স্ক্রিনটি পিআরটি (পিআরএনটি জন্য) ক্ষেত্রে ওয়াই ব্যবহার করে, অন্য একটি স্ক্রিনের জন্য প্রবেশদ্বার ব্যবহারকারীর প্রয়োজন (তবে পাশের প্রবেশটি নয়) অক্ষরগুলি, যেহেতু এটি একটি নতুন লাইনের চরিত্র, এটি অবশ্যই নম্বর প্যাডে প্রবেশ করাতে হবে) এবং তারপরে F8, একটি আলাদা তবে সম্পর্কিত পর্দার জন্য কেবল F8 দরকার হয়, কিছু পর্দার জন্য PRT লেবেলযুক্ত একটি ফিল্ড থাকে, যা PRINT এর জন্য হওয়া উচিত তবে ক্ষেত্রটি আসলে কিছু নয় এবং মুদ্রণ বেশ কয়েকটি প্রম্পট দিয়ে যাওয়ার পরে স্বয়ংক্রিয়ভাবে সম্পন্ন হয় এবং আরও স্ক্রিনগুলিতে PRINT Y / N লেবেলযুক্ত একটি ফিল্ড থাকে,যা অপারেশনের জন্য ওয়াইয়ের কাছে অত্যন্ত ডিফল্ট, যেখানে অন্য কোনও স্থান ইতিমধ্যে কাগজপত্র সরবরাহ করছে এবং অপারেশনগুলিতে N এর কাছে যাতে অন্য ব্যবসায়ীর কাগজপত্রের প্রয়োজন হবে।
আমি স্থির করেছিলাম যে আমি এর থেকে আরও ভাল কাজ করতে পারি, তাই আমি সংস্থাটির সেই ব্যক্তির সাথে যোগাযোগ করতে বেরিয়েছি যা এই আপডেট করার সিদ্ধান্ত নেবে। অবশেষে আমি এই প্রোগ্রামের দায়িত্বে থাকা আইটির ভিপি-র কাছে যাচ্ছি। আমি তার থেকে কিছুটা তথ্য পেয়েছি এবং শিখলাম যে আমার গাড়ি ভাড়া সংস্থার ভাড়া সংক্রান্ত প্রোগ্রামটি আইবিএম মেইনফ্রেমে এসেম্বলারের মধ্যে কিছুটা সিওবিওএল মিশ্রিত রয়েছে He তিনি বলেছেন যে এখনই কোনও অবস্থান খোলা নেই, তবে আমার উচিত যাইহোক তাকে আমার জীবনবৃত্তান্ত ইমেল করুন (যদি কিছু খোলা থাকে)।
এটি আমাকে আমার প্রশ্নের দিকে নিয়ে যায়।
প্রথমটি প্রযুক্তিগত। ভবিষ্যতে রক্ষণাবেক্ষণের উন্নতি করার ধারণা নিয়ে, আমার ধারণা এটি সমাবেশ ভাষার চেয়ে উচ্চ-স্তরের ভাষায় পুনরায় লিখতে হবে। আমার অভিজ্ঞতার ক্ষেত্রটি সি ++ এ রয়েছে, সুতরাং এটি আমার পক্ষে সুস্পষ্ট পছন্দ। প্রোগ্রামটি আপডেট করার সহজ সংস্থার খুব প্রয়োজন, কারণ আমি সম্প্রতি একটি নিবন্ধ পড়েছিলাম যেখানে আমি যার সাথে কথা বলেছিলাম তার উদ্ধৃতি দিয়ে বলা হয়েছে যে টিম কঠোর পরিশ্রম করেছে এবং তারা ঘোষণা করে গর্বিত যে এই প্রোগ্রামটির এখন 5 এর সমর্থন রয়েছে -ডিজিট অবস্থানের কোডগুলি (4 এর পরিবর্তে) এবং 8 ডিজিটের গাড়ি নম্বর (7 এর পরিবর্তে)। হালনাগাদ সম্পর্কিত আমার দর্শন, এমনকি এই পরিস্থিতিতে এই জোয়ারের সাথে সামঞ্জস্যপূর্ণ: সংক্ষেপে http://www.joelonsoftware.com/articles/fog0000000069.html পুনরায় লেখাগুলি আগে যা ছিল তা ছড়িয়ে দেওয়ার পরিবর্তে বর্ধনশীল হওয়া উচিত এবং নতুন করে শুরু।
আইবিএম অ্যাসেমব্লিকে সি ++ এর সাথে সংহত করার জন্য কি সহজ উপায় আছে এবং যদি তাই হয় তবে কীভাবে এটি করা উচিত? আমি asm কীওয়ার্ড সম্পর্কে অস্পষ্টভাবে অবহিত, তবে এটি ব্যবহার করা বা অন্য কিছু করা ভাল কিনা তা আমি জানি না। এই ধরনের পরিকল্পনা কি পরামর্শ দেওয়া? আমি লিনাক্সে আমার বেশিরভাগ কাজ জি ++ এবং জিএনইউ মেক ব্যবহার করে করি, সুতরাং এর সাথে নির্দিষ্ট উত্তরগুলি স্বাগত জানানো হয়, তবে অবশ্যই প্রয়োজন হয় না (যেহেতু তাদের কোন ধরণের বিল্ড সিস্টেম নেই সে সম্পর্কে আমার কোনও ধারণা নেই তবে আমি প্রায় সন্দেহ করি না)।
দ্বিতীয় প্রশ্নটি আরও রাজনৈতিক। এই সংস্থাকে কীভাবে তাদের স্যুইচ তৈরি করা দরকার তা বোঝাতে আমি কীভাবে যেতে পারি? তাত্ত্বিক ব্যয় সাশ্রয় বিশাল (আমার অনুমানের উপর ভিত্তি করে, সংস্থাটি প্রতি বছর অতিরিক্ত মিলিয়ন বা তাই ডলার নষ্ট করছে, প্রোগ্রামের সাথে কীভাবে ইন্টারঅ্যাক্ট করতে হয় তা শিখতে প্রশিক্ষণ ব্যয় বাড়িয়ে দিয়েছিল), তবে আমার প্রস্তাবিত পরিবর্তনগুলি সম্ভবত সবগুলিই রাখবে বর্তমান প্রোগ্রামারদের কাজের বাইরে, তাদের আইন করা উচিত, তাই পরিবর্তনের জন্য দুর্দান্ত কাঠামোগত প্রতিরোধের উপস্থিতি রয়েছে।
সম্পাদনা: আমার কাছে ব্যাখ্যা করা উচিত যে সংস্থাটি ইতিমধ্যে যা করেছে তা কেন আমার কাছে সর্বোত্তম সমাধান বলে মনে হচ্ছে solution আমি এখনও অন্যান্য পরামর্শের জন্য উন্মুক্ত, কারণ এটি কোনও প্রোগ্রামের দৈত্য। আমি এর আগে কখনও প্রোগ্রামিংয়ের কাজ করিনি, সুতরাং দয়া করে আমি যে কোনও ভুল বিশ্লেষণ দিতে পারি সে সম্পর্কে আমাকে সংশোধন করুন।
প্রথমে অফ-শেল্ফ সমাধান রয়েছে।
এই ধরণের বিষয় সম্পর্কে কয়েকজন মধ্য-স্তরের পরিচালকদের সাথে আমার আলোচনা থেকে, নতুন সিস্টেমে স্যুইচ করা নিয়ে অন্যতম প্রধান উদ্বেগ হ'ল বিপুল সংখ্যক অনুগত কর্মচারী যারা এই সংস্থার সাথে কয়েক দশক ধরে রয়েছেন এবং এখন পর্যন্ত সিস্টেমটিতে স্বাচ্ছন্দ্যবোধ করছেন are । আমাদের যা আছে তা সংশোধন করার ক্ষমতা যদি আমার থাকে তবে আমি বর্তমান ইন্টারফেসটি এক ধরণের 'সামঞ্জস্যতা মোডে' বজায় রাখতে পারতাম। ব্যবহারকারীদের ইতিমধ্যে বর্তমান সিস্টেমটি ব্যবহার করতে লগইন করতে হবে, সুতরাং যখন ব্যবহারকারীরা প্রথমবারের জন্য লগ ইন করে (আমি এই পরিবর্তনটি করার পরে), সেখানে তাদের ব্যবহার করার বিকল্প দেওয়া হয় তখন আমি একটি সেটিংস সক্রিয় করার ক্ষমতা যুক্ত করতে পারি where 'ক্লাসিক' ইন্টারফেস বা 'নতুন' ইন্টারফেস। কোনও উপায় নেই যে আমি একটি অফ-শেল্ফ সমাধান সন্ধান করব যা এটির অনুমতি দেয়,
আমার সংস্থারও আমরা ব্যবহার করা সফ্টওয়্যারটির মালিকানা রয়েছে; আমরা এটি লাইসেন্স না। এর অর্থ হ'ল আমি বর্তমানে যে পরিচালনার সাথে কথা বলছি তা হ'ল একই ব্যক্তি যারা আসলে আমাকে পরিবর্তন করতে অনুমোদিত করতে পারেন। তৃতীয় পক্ষের সমাধান সহ, আমাদের ব্যবহার্য পণ্যটি বিকাশকারী সংস্থার যে কোনও অধিকারের প্রয়োজন হবে তা সুরক্ষিত করার পাশাপাশি আমাকে আমার সংস্থার কাছ থেকে অনুমোদন নিতে হবে, যা অতিরিক্ত বাধা যুক্ত করে। এটির জন্য "তাদের" পণ্যটি ছেড়ে দেওয়া এবং অন্য কিছু পণ্য গ্রহণ করার জন্যও এই সংস্থাকে দৃinc় বিশ্বাস করা দরকার, যা আমাদের কাছে যা আছে তা আপডেট করার চেষ্টা করার চেয়ে বড় বাধা বলে মনে হয়, তবে আমি এই বিষয়টিতে খুব ভুল হতে পারি।
শেষ অবধি, ভবিষ্যতের দিকে তাকাতে, আমি কেবল ব্যবহারকারী ইন্টারফেসটি উন্নত করতে এবং কয়েকটি বাগ ঠিক করতে চাই না। আমি এই 'জরুরী' বিষয়গুলি আপডেট করার পরে, আমি প্রযুক্তি সম্পর্কিত প্রযুক্তিগতভাবে চালিত মৌলিক উপায়টি আপডেট করার আশা করছিলাম। এই ধরণের বিষয়ে 1-2 বছর অতিবাহিত করার পরে, আমার পরিকল্পনা ছিল পরিচালনায় ফিরে যেতে এবং আরও নাটকীয় পরিবর্তনের প্রস্তাব দেওয়া। প্রযুক্তিগতভাবে মৌলিকভাবে উন্নত হতে পারে এমন অনেকগুলি উপায় রয়েছে যা তারা এখনই ব্যবহার করছে না। উদাহরণস্বরূপ, প্রতিটি অঞ্চল একইভাবে কাজ করে। স্থানীয় প্রধান বিমানবন্দরটি গাড়ি বিতরণের কেন্দ্রীয় কেন্দ্র। এগুলি প্রাথমিকভাবে প্রয়োজনীয় ভিত্তিতে প্রেরণ করা হয়। যাইহোক, বিমানবন্দরটি সমস্ত ক্রিয়াকলাপের হোম বেস হিসাবে ব্যবহৃত হয়। আমাদের কাছ থেকে এমন একটি গাড়ি নেওয়ার জন্য তারা আমাদের গাড়ীতে দু'জন লোককে আমার গাড়িতে পাঠাবে, যা আমাদের দরকার নেই, তারপরে তারা যে গাড়ীতে এসেছিল সেগুলি নিয়ে বিমানবন্দরে ফিরে আসুন, এবং তারা যা ফিরিয়ে নিচ্ছে (আমরা বিমানবন্দর থেকে 32 মাইল দূরে)। তারপরে তারা দুটি গাড়ি থেকে আমাদের থেকে 5 মাইল দূরে অবস্থানে আসবে যার মধ্যে একটিকে নামিয়ে দেওয়ার জন্য, তারপরে তাদের অন্য গাড়িতে বিমানবন্দরে ফিরে আসবে। আমরা এটি পুনরায় যে গাড়িটি প্রেরণ করেছি তার কাছে একই ধরণের গাড়িটি আমাদের কাছাকাছি দরকার হলেও তারা এটি করে। আমি এখন প্রায় দুই বছর এই সংস্থার সাথে রয়েছি, এবং আমি কেবলমাত্র গাড়ির সংকটজনিত চরম সংকটজনিত পরিস্থিতিতে এগুলি থেকে বিচ্যুত হয়েছে বলে মনে হয়েছে (সুতরাং প্রায় তিনবার)। আমি প্রতিটি অঞ্চলে কর্মরত 4 জন ব্যক্তিকে একটি স্বয়ংক্রিয় শিডিউলিং সিস্টেমের সাথে প্রতিস্থাপন করব যা কোন গাড়ি কোথায় যাবে তা নির্ধারণ করে এবং সেই পথটি খুঁজে বার করবে যেখানে সর্বনিম্ন পরিমাণ + মাইল + ড্রাইভারের সমস্ত গাড়ি পৌঁছে দেওয়ার জন্য প্রয়োজন যেখানে তাদের দরকার ছিল উচ্চ স্তরের সংশোধনগুলির উদাহরণ আমি কিছু দিন যোগ করার আশা করি।
যাইহোক, আমি এই সমস্ত প্রস্তাব দেওয়ার জন্য স্বাচ্ছন্দ্য বোধ করার আগে, আমি মনে করি এটি ইন্টারফেস আপডেট করার মতো ছোট ছোট কাজগুলি করে সংস্থায় এবং কোড বেসে একটি টোহোল্ড পেতে সহায়ক হবে। আউটসোর্সিং বা অন্যথায় মত সমাধানগুলি এই সম্ভাবনাটি সরিয়ে ফেলবে।
if (m_newInterface)
স্প্যাগেটি কোডটি সমস্ত কোড বেসে প্রদর্শিত হতে শুরু করে। ডিকপলিং এবং রিফ্যাক্টরিং যথেষ্ট সময় নিয়েছিল যে এটি করা হয়ে গেলে বেশিরভাগ ব্যবহারকারী ইতিমধ্যে নতুন ইন্টারফেসে চলে এসেছেন (একাধিক বছর ভাবেন)।