আমি কীভাবে কোড লিখতে সক্ষম হতে একজন ভাল বিকাশকারী হয়ে যেতে পারি?


10

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

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

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


2
অভিজ্ঞতা একজন ভাল শিক্ষক।
বার্নার্ড

বৃহত্তর আরও জটিল সফ্টওয়্যার কি কেবল আরও সহজ সরল ফরওয়ার্ড সফ্টওয়্যারগুলির সংগ্রহ নয়?
রিগ

5
"কারণ শিল্প সম্পর্কে সর্বাধিক গুরুত্বপূর্ণ বিষয় হল কাজ করা every প্রতিদিন বসে বসে চেষ্টা করা ছাড়া আর কিছুই গুরুত্বপূর্ণ নয়" " - স্টিভেন
প্রেসফিল্ড

একইভাবে আপনি কার্নেগি হলে
মাইকেল ব্রাউন 15

1
কার্নেগি হলের সাথে যাওয়ার মতোই উপায় - অনুশীলন!
মার্টিন বেকেট 16

উত্তর:


11

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

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

কয়েক বছর ধরে আমি অন্যের কাছ থেকে এবং বিভিন্ন প্রকল্পে কাজ করার মাধ্যমে শিখেছি যেমন:

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

যে কিছু সাহায্য করে আশা করি।


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

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

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

আমি খুব ভিজ্যুয়াল ব্যক্তি তাই ছবি সবসময় আমাকে জিনিসগুলি বুঝতে এবং কাজ করতে সহায়তা করে :-)
ডেকো

5

হয় - তাত্ত্বিক গঠন ব্যতীত - ভাল, আমার মতে, কোনো পেশায় যেমন, একটি ভাল পেশাদারী সব কি কি লাগে হতে অভিজ্ঞতা

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

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

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

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

যাইহোক, আমি মনে করি অভিজ্ঞতা অর্জনের কোনও শর্টকাট নেই, এবং এটি অবশ্যই শৃঙ্খলা এবং ধৈর্য সহকারে অনুসরণ করা উচিত ।


এটি একটি ভাল উপমা। অন্যান্য লোকের কোড পড়া আমার শৈলীতে সহায়তা করেছে , তবে আপনি ঠিক বলেছেন, এটি আমাকে কোনও বাস্তব অভিজ্ঞতা দেয় না। অন্য কেউ OSS রুটে যাওয়ার পরামর্শ দিয়েছেন। আমি মনে করি আমি এটি খতিয়ে দেখব।

4

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

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

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


2

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


1

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

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

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

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

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

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


0

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

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

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


0

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

প্রাথমিকভাবে, আপনার কিছুটা ঝাঁকুনি দিয়ে বৈজ্ঞানিক পদ্ধতি অনুসরণ করা উচিত।

  1. আপনার একটি সমস্যা রয়েছে (এটি সংজ্ঞায়িত করতে সহায়তা করার জন্য সরঞ্জাম এবং কৌশলগুলি ব্যবহার করুন)
  2. আপনি একটি সমাধান অনুমান করা (নিদর্শন এবং অভিজ্ঞতা সহায়তা)
  3. পরীক্ষা অনুমান (আপনার এখানে কোডও নাও থাকতে পারে)
  4. অনুমানটি ধরে না হওয়া পর্যন্ত 2 এবং 3 পদক্ষেপ পুনরাবৃত্তি করুন। আপনার এখন একটি তত্ত্ব আছে (সমস্যা সমাধানের জন্য কার্যকারী প্রোগ্রাম)
  5. গর্ত (পরীক্ষার কেস!) সন্ধানে স্ট্রেস থিওরিতে একটি পরীক্ষা তৈরি করুন
  6. যদি পরীক্ষার মামলাগুলি ধরে থাকে তবে আপনার সমাধান রয়েছে! অন্যথায়, ধুয়ে ফেলুন এবং পুনরাবৃত্তি করুন

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

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

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