ক্লায়েন্টকে খারাপ কোড প্রদর্শন করুন?


129

একজন ক্লায়েন্ট আমাকে তাদের ওয়েবসাইটটির নতুন ডিজাইন করতে বলেছে, একটি এএসপি.এনইটি ওয়েবফোর্স অ্যাপ্লিকেশন যা অন্য পরামর্শক দ্বারা তৈরি করা হয়েছিল। এটি তুলনামূলক সরল কাজের মতো মনে হয়েছিল, তবে কোডটি দেখার পরে এটি স্পষ্ট হয়েছে যে ঘটনাটি নয়।

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

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

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

হালনাগাদ

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


97
একটি এসকিউএল ইঞ্জেকশন আক্রমণ প্রদর্শন?
অস্টিন হেনলি

30
This application was not written well. At all.তারা প্রায় কখনও হয় না। :)
হাইলেম

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

3
যদি এটা বড় নয় - এটি পুনর্লিখন, যদি বড় - এটি গ্রহণ করা না
Ren

4
ক্লায়েন্ট আবার ডিজাইন করে বলে এবং তারা HTML / CSS মনে করে। আমি "মডুলারালটির অভাব" শব্দটি ব্যবহার করব এবং "যুক্তি নকশা" বনাম "উপস্থাপনার উপর জোর দেব"। ভবন নির্মাণের রূপকগুলি দরকারী are To make a change in the look of the living room, I had to go into the air-conditioning system.একটি ভাল মডুলার ডিজাইনে, এগুলি ঘটে না।
ফুহরম্যানেটর

উত্তর:


144

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

আমি এই পরিবর্তনটি একটি ফাইলে একটি শব্দ হিসাবে প্রত্যাশা করেছি। এটির পরিবর্তনের সর্বাধিক সম্ভাবনাময় জায়গাটি এখানে উপস্থিত বলে মনে হয়েছিল, তবে আমি যখন এটি পরিবর্তন করেছি তখন এটি কেবল এক জায়গায় কাজ করেছিল এবং এটি এই 7 টি অন্যান্য স্থান ভেঙেছে। আমি যখন একটি স্থির করেছিলাম, এটি আরও দুটি জায়গা ভেঙে ডমিনো প্রভাব সৃষ্টি করেছে, তাই আমার মনে হয়েছে যে পরিবর্তনটি 10 ​​মিনিটের মধ্যে শেষ হওয়া উচিত ছিল তা 2 ঘন্টা সময় নিয়ে শেষ হয়েছিল। এটি কেবল একটি উদাহরণ। সেখানে আরও অনেক অপ্রত্যাশিত 2 ঘন্টা কাজ রয়েছে।


10
এতগুলি বাগের প্রতিবেদনের বিষয়বস্তু দেওয়া, "এটি __ আরও বেশি জায়গাগুলি ভেঙেছে" ডমিনো প্রভাবটি বর্ণনা করার পক্ষে সেরা উপায় বলে মনে হচ্ছে ...
ইজকাটা

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

87

কোড কাঠামো, স্টাইল, কারিগরি debtণ এমন একটি জিনিস যা - ক্লায়েন্ট আপনাকে বিশ্বাস না করা পর্যন্ত - আপনার সাথে বাঁচতে হবে -

সুরক্ষা দুর্বলতা অন্য বিষয়।

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

পূর্ববর্তী ক্লায়েন্টের সাথে আনুগত্যের উপহার কার্ড সিস্টেমের সাথে এটি করতে পেরে আমি খুব আনন্দিত হয়েছি যখন আমি "আমার" কার্ডে 5000 ডলার রেখেছি এবং তাকে তার কার্ডটি চেক করে নিই।


38
এসকিউএল ইঞ্জেকশন আক্রমণটি কীভাবে খারাপ হতে পারে তা +1 ডেমো। এটি তাদের সামনে করুন সম্ভব হলে ভিডিও তাদের প্রতিক্রিয়া রেকর্ড করে।
ফিলিপ

40
ফিলিপ: ... অ্যাপ্লিকেশনটির জন্য ডেমোটি বিচ্ছিন্ন বিকাশের পরিবেশে থাকা উচিত। তাদের উত্পাদন ডেটাবেস মুছে ফেলা পয়েন্ট প্রমাণ করবে, কিন্তু আপনার চুক্তি হারাতে পারে (এবং একটি মামলা অর্জন)।
হতাশ

19
@ ফ্রাস্ট্রেটেড উইথফোর্ডস ডিজাইনার যদি তাদের এমনকি কোনও পরিবেশ পরিবেশ উপলব্ধ থাকে ...
র‌্যাচেট ফ্রিক

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

76

এটি ক্লায়েন্টের কাছে কীভাবে জানানো এবং যোগাযোগ করা যায় সে সম্পর্কে কিছু দুর্দান্ত পরামর্শ। আশা করি তারা আপনার প্রতিদান দেবে।

এখানে প্রধান লাল পতাকা!

ক্লায়েন্ট যদি আপনাকে (এইচটিএমএল এবং সিএসএস) এর সাথে সম্মত হন তবে অন্য কোনও পরিবর্তন না করার জন্য যদি আমি এই প্রকল্পে পাস করে থাকি এবং আমার বিড প্রত্যাহার করি।

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

আপনি অর্জন করতে দাঁড়িয়ে থেকে আপনি আরও অনেক বেশি হারাতে পারেন।


14
বিস্তৃত ছবি দেখার জন্য +1। আপনি যদি এটিতে কাজ করেন এবং বলছেন যে আপনি সম্পন্ন হয়ে গেছেন তবে আপনি বাগ এবং সুরক্ষা সমস্যার জন্য কিছু দায়বদ্ধ হতে পারেন, এমনকি যদি আপনি কেবল সেগুলি উত্তরাধিকার সূত্রে প্রাপ্ত হন। যদি কেউ আমার ব্রেকগুলি চালিত করে এবং কোনও যান্ত্রিক আমার বাইকটি মেরামত করে এবং সমস্যাটি সরিয়ে দেয় তবে আমি তাদের মামলা করার বিষয়টিও বিবেচনা করতে পারি ...
sleske

2
+1 এটি একটি পাঠ পরামর্শদাতা শিখতে অনেক বেশি সময় নেয় (এবং সত্যই যে শক্ত অর্থনীতির সময় এটি অনুসরণ করা একটি কঠিন ধারণা)। আপনার বিশেষজ্ঞের মান হ'ল আপনি যে কাজের কাজ করেন ততই এটি একটি কাজ যা আপনি অস্বীকার করেন না।
টিম ওব্রায়েন

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

30

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

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

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

আমরা শুরু করছি. বিকাশকারী সম্পর্কে মন্দ কথা বলা হয় না; তিনি কেবল "সর্বাধিক প্রোগ্রামার" যার অর্থ তিনি বেশ ভাল সংস্থায় রয়েছেন। এবং এখন আপনি প্রমাণ করেছেন যে আপনি "বেশিরভাগ প্রোগ্রামার" নন যা আপনাকে কিছুটা বেশি বিশ্বাসযোগ্যতা দেয় এবং সম্ভবত তাদের আরও বেশি অর্থ প্রদানের কারণ।

একটি নতুন ব্যবস্থা নিয়ে আলোচনা করুন
একবার ক্লায়েন্ট বুঝতে পারে যে তার অ্যাপ্লিকেশনটি জনসাধারণের দ্বারা আপত্তিজনক ব্যবহারের জন্য উন্মুক্ত, তিনি চাইছেন যে এটি ঠিক করা হোক। আপনি সম্ভবত সেই ব্যক্তি যাকে তিনি এটি ঠিক করতে বলছেন। আপনি সেই কাজটি পেতে বা নাও পেতে পারেন, তাই তাদের সাথে কথা বলার আগে সাবধানতার সাথে চিন্তা করুন।

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

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


8
ঘৃণ্য না হওয়ার জন্য +1। কেবল
সত্যগুলি

4
"আপনার পূর্বসূরীর প্রতি শ্রদ্ধাশীল হন" এর জন্য +1
মিসানফোর্ড

19

আমি এটি একটি মন্তব্য হিসাবে শুরু করেছি, কারণ প্রথমদিকে আমি ভেবেছিলাম এটি একপাশে, তবে সম্ভবত এটি সত্যিই তা নয়।

আপনার মনে হয় এমন সমস্ত কিছুই আমি নতুন করে ডিজাইন করতে হবে এবং কেন (যদি তারা পরিবর্তন না করে তবে কী হবে ) এবং ইস্যুটি ঠিক করার বিষয়ে একটি প্রাক্কলন পুরোপুরি ডকুমেন্ট করব । আপনি যে কোনও সুরক্ষা ঝুঁকি হিসাবে বুঝতে পেরেছেন তার সাথে আমি বিশেষভাবে সাবধানী হব।

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

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

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

বলা হচ্ছে, ক্লায়েন্ট একবার ঝুঁকি নিরসন করে, গ্রিন করে এবং যদি তারা কোনওভাবে কাজটি করতে বলে, বা দূরে চলে যায় তবে তা সহ্য করবে।


আসুন আশা করি তারা আসলে উত্স নিয়ন্ত্রণ ব্যবহার করছে।
বার্নার্ড

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

5
নীতিগতভাবে ভাল ধারণা - তবে মনে রাখবেন যে এটি অনেক কাজ হতে পারে । এটি সম্ভবত বড় চাকরির ক্ষেত্রে কেবল ব্যবহারিক, অন্যথায় আপনি এমন কোনও কাজের জন্য ডকুমেন্টিংয়ের 50 ঘন্টা সময় ব্যয় করবেন যেখানে আপনি কেবল 20 বিল দিতে পারবেন।
স্লেসকে

@ স্লেসকে: সম্মতি জানানো হয়েছে যে এটি অনেক কাজ হবে তবে আশা করা যায় যে সবচেয়ে খারাপ সম্ভাব্য ঘটনাটি ঘটে এবং যদি কোনও সুরক্ষা লঙ্ঘন হয় তবে you খুব কমপক্ষে, আপনার এমন কিছু দরকার যা বলে যে আপনি সুরক্ষা ঝুঁকি দেখেন এবং সেই প্রাক-বিদ্যমান ঝুঁকির জন্য আপনি দায়বদ্ধ হতে চান না।
ওঙ্কো দ্য সনে

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

14

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

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

শেষ পর্যন্ত আপনি জানাতে চান যে আপনি যে অ্যাপ্লিকেশনটিতে কাজ করতে বলা হচ্ছে তার সাফল্যের বিষয়ে আপনি যত্নশীল।


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

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

বা 'কাস্টম' বেলেলিং সল্ট এক্সিলার কেবলটি নোট করুন যা আপনি হাতে চালিত ত্বরণের জন্য কনসোলটিতে বেঁধে রাখতে পারেন .. সস্তাে 'ওয়্যার বাই ফ্লাই' প্রযুক্তিটি। রেড গ্রিন শোতে তারা যা কিছু করেছে তা প্রয়োগ হতে পারে। তাদের 'কার্যকরী' কী আছে, তবে এটি সুন্দর নয় এবং কার্সারি পরিদর্শনের পরে মনে হয় এটি ভঙ্গুর এবং কোনও পরিবর্তনের ঝুঁকি বাড়িয়ে তোলে।
জাস্টিনসি

1
আমি যদি এতে অতিরিক্ত ভোট যুক্ত করতে পারি তবে আমি খাঁটি হয়ে যাব 'ক্লায়েন্ট মনে রাখবেন তাদের আবেদন বজায় রাখতে সাহায্যের জন্য আপনার কাছে যাচ্ছেন।'
ড্যানিয়েল হোলিনরেকে

7

আমি ক্লায়েন্টের সাথে সম্পর্কিত হতে পারে এমন উপমাগুলি ব্যবহার করতে চাই। আমি জয়ের পক্ষে যে পরিমাণ কাজ সামনে রেখেছি তা নির্ভর করে ক্লায়েন্ট যে পরিমাণ অর্থ ব্যয় করতে চেয়েছিল তার উপর নির্ভর করবে (১০০ ডলার $ ২০,০০০ এর চেয়ে আলাদা)। লক্ষ্য করুন আমি বলেছি "অভিপ্রায়"। জড়িত মূল্য সম্পর্কে আপনার ব্যক্তিগত অনুমানের অর্থ খুব বেশি নয় তবে যদি আপনি যা জিজ্ঞাসা করছেন তা পান না।

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

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

অবশেষে আমি বলব, "এখন আপনি আমাকে যা করতে বলছেন তা হ'ল এটি ..." এবং প্রথম বাক্সের অভ্যন্তরে একটি সাধারণ আকার আঁকুন সম্ভবত একটি ছোট অর্ধেক বৃত্তটি লাইনটিকে স্পর্শ করবে এবং তারপরে "তবে এটি করতে আমি বলব" ডি এটি করতে হবে ... "এবং একটি টর্নেডো দেখতে লাইনের চারপাশে এক ধরণের সর্পিল আকৃতি আঁকুন এবং চালিয়ে যান ..." এই সমস্ত কিছু পেতে ..... "এবং অন্য বাক্সের স্প্যাগেটির দিকে নির্দেশ করুন।

আমি ভাবব যে এটি প্রায় 2 মিনিটের সময়টিতে পয়েন্টটি বাড়ির দিকে চালিত করবে। যদি তারা আপনাকে যাইহোক এটি করতে জোর করে, তবে অন্যরা উপরে বর্ণিত হিসাবে এটি নথি করুন।


6

এই কোডটি কতটা খারাপ তা আমি কীভাবে আমার ক্লায়েন্টকে ব্যাখ্যা করতে পারি?

সম্ভবত আপনি কোনও বাড়ির নদীর গভীরতানির্ণয়ের মতো উপমা ব্যবহার করতে পারেন যা সময়ের সাথে সাথে সংশোধন এবং পুনর্নির্মাণের পরে এতটাই চঞ্চল এবং মিলিত হয়ে যায় যে কোনও জিনিস ঠিক করার সময়, প্রভাবিত করে এবং সম্ভবত অন্য কোনও কিছুকে ভেঙে দেয় যা ঠিক করার দরকার পরে এবং আপনার জানার উপায় নেই there's এটি ঘটবে এমন সমস্ত জায়গাগুলি।

এটি পূর্ববর্তী পরামর্শদাতার বিরুদ্ধে আমার কথা, সুতরাং আমি কীভাবে একটি অ-প্রযুক্তিগত ক্লায়েন্ট বুঝতে পারে এমন সহজ, সুনির্দিষ্ট উদাহরণ দিতে পারি?

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

এটি একটি কঠিন এবং খুব সাধারণ সমস্যা। এর সাথে শুভকামনা রইল।


6

সৎ থাকুন এবং সরাসরি থাকুন।

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


3

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

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

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


"তাদের ওয়েবসাইটটি কোনও যান্ত্রিক প্রিন্টিং প্রেসের মতো একটি শারীরিক মেশিনের কল্পনা করুন" - এবং এটি মুদ্রণের অর্থ! তবে, এটি ভেঙে গেছে, এটি যতটা পয়সা
ছাপছে

2

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

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

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

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


0

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

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

আমি শুধু বলছি'


0

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

এটি বলেছিল, আমি আপনাকে একের পর এক সমস্যাগুলি সমাধান করার চেষ্টা করতে যাচ্ছি:

  • এসকিউএল ইনজেকশনস । ঠিক আছে, সুতরাং আমি অনুমান করি যে প্রোগ্রামারটি প্যারামিটারাইজড কোয়েরি এবং / অথবা সঞ্চিত পদ্ধতির পরিবর্তে স্ট্রিং কনটেনটেশন ব্যবহার করছিল। এটি বিশেষত ADO.NET এ ঠিক করা খুব সহজ ... আমি ব্যক্তিগতভাবে এটি ক্লায়েন্টের কাছে উল্লেখ করব তবে এটি থেকে খুব বেশি কিছু করা সম্ভব হবে না।
  • এইচটিএমএল ব্যবসায়ের যুক্তিতে উত্পন্ন হচ্ছে এবং এটি বাছাই করা দুঃস্বপ্ন হবে । ঠিক আছে, ডুড, আপনি যেখানে আমাকে আরও বিশদ দেন সেগুলির মধ্যে এটি একটি। আপনি যদি এমভিসি ব্যবহার না করেন, তবে এটি হওয়ার একটি প্রবণতা ... তবে এটি অবশ্যই খারাপ জিনিস নয় ... এটি এমন একটি বিষয় যেখানে বেশিরভাগ প্রোগ্রামাররা " গোটো খারাপ, কখনও এটি ব্যবহার করবেন না" বলেছিলেন তবে আপনি কী জানেন? আমি গোটো ব্যবহার করেছি যেখানে এটি বোধগম্য হয়েছিল! সুতরাং, আপনি কি নিশ্চিত যে তারা সহায়িকা শ্রেণিগুলি ব্যবহার করছেন না যা ব্যবসায়ের কোড ডিএলএল এর মতো একই স্থানটি ভাগ করে নেবে? আবার, এটি বিচ্ছিন্ন করা এতটা কঠিন নয়।
  • ব্যবসায়ের যুক্তি পুরো অ্যাপ্লিকেশন জুড়ে ছড়িয়ে পড়েছে, প্রচুর নকল, এবং শেষের কোড যা কিছুই করে না। । এবং? ক্লায়েন্ট কেবল আপনাকে এইচটিএমএল / সিএসএস পরিবর্তন করতে বলছে। আপনি কেন এই বিষয়গুলি সম্পর্কে আদৌ যত্ন করবেন?
  • এটি ধূমপান করা ব্যতিক্রম ছুঁড়ে রাখে, তাই সাইটটি সুচারুভাবে চলতে দেখা যায় । আবার, খুব অস্পষ্ট। যে কোনও অ্যাপ্লিকেশনগুলিতে ব্যতিক্রমগুলি স্বাভাবিক, সেজন্য আমরা আমাদের কোডটিতে চেষ্টা / ধরার ধারাগুলি রেখেছি। যদি না তারা ইউআই-তে বাধা দেয় এবং ব্যবহারকারীর অভিজ্ঞতা নষ্ট না করে (যেমন HTTP 500 এর অকারণে প্রদর্শন করা), আমি মনে করি না এটি এমন একটি বিষয় যা আপনার যত্ন নেওয়া উচিত, ..

সুতরাং সংক্ষেপে, আমি আপনাকে উচ্চ রাস্তা নেওয়ার পরামর্শ দেব would আপনি যদি মনে করেন এটি আপনার সময়ের জন্য উপযুক্ত নয় এবং আপনি আপনার ক্লায়েন্টের ব্যয়ে এটি পুনরায় লিখতে চান, তবে কাজ থেকে দূরে চলে যান। গুরুতরভাবে, শেষে, ক্লায়েন্টটি আপনার কমপক্ষে $$$ এর কম পরিমাণে পুরো জিনিসটি কাজ করার জন্য সময় দেয় $$$

ক্ষেত্রে অভিজ্ঞতার আমার অনেক বছর, আমি সবসময় বলে যে শ্রেষ্ঠ প্রোগ্রামারদের আমি জুড়ে এসেছ বেশী একটি সিস্টেম দ্বারা স্থিতিশীল করতে পারেন কে কোডের অন্তত পরিমাণ লেখা , না পুরো জিনিস rewriting

সম্পাদনা: আমি ইতিমধ্যে দেখতে পেয়েছি যে আমার উত্তরটি সর্বাধিক জনপ্রিয় নয় (আমি ইতিমধ্যে এটি প্রত্যাশা করেছি) তবে আমি আমার প্রতিক্রিয়া দ্বারা দাঁড়িয়ে আছি। আমি এটিকে কম স্নারকি তৈরি করার জন্য সম্পাদনা করেছি। ;-)


-1

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


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