پايتون

اينجا قراره ياد بگيريم چطور برنامه نويسي رو شروع كنيم

به عنوان يك برنامه نويس بايد كدام مهارت هاي نرم (soft skill) خود را افزايش دهيم؟

در نگاه اول عموم مردم تصور مي كنند برنامه نويسي تنها يك مهارت سخت فني (technical skill) است. به همين دليل است كه اكثر توسعه دهندگان و برنامه نويسان تازه كار، اهميت مهارت هاي نرم  (soft skill) را دست كم ميگيرند و تنها به مهارت هاي سخت فني توجه ميكنند. اما ناديده گرفتن اين مهارت ها مي تواند موجب بروز مشكلات زيادي مانند كمبود ارتباط موثر بين اعضاي تيم و در نهايت كاهش عملكرد مثبت آنان شود.
در اين پست در ابتدا بيان مي كنيم چرا مهارت هاي نرم، حياتي محسوب مي شوند و بعد از آن مهارت هاي ضروري تر براي يك مهندس نرم افزار را بررسي مي كنيم.

 

مهارت هاي نرم در برنامه نويسي

 

تفاوت مهارت هاي نرم و سخت چيست؟

زماني كه فرد برنامه نويس براي يك موقعيت شغلي رزومه ميفرستد، كارفرما براي تصميم گيري در مورد استخدام او به هر دو مهارت سخت و نرم توجه مي كند.

  • مهارت هاي نرم بيشتر جنبه ذهني دارد و به سختي قابل اندازه گيري است. اين مهارت ها شامل انعطاف پذيري، مديريت فكري و تيمي، ارتباط موثر، مديريت زمان و... است.
  • مهارت هاي سخت بيشتر جنبه فني دارد و معمولا درصد بيشتري از رزومه برنامه نويس را شامل مي شود مثل مهارت برنامه نويسي، تايپ سريع، كار با سيستم و...

 

چرا مهارت هاي نرم مهم هستند؟

دلايل مختلفي وجود دارد كه نشان مي دهد مهارت هاي نرم اهميت كمتري نسبت به مهارت هاي سخت ندارند و بايد به همان اندازه مورد توجه قرار گيرند. در واقع داشتن مهارت هاي نرم يعني داشتن ارتباط مثبت و موثر با ساير توسعه دهندگان و اعضاي تيم

  • مهارت هاي نرم به توسعه دهندگان و برنامه نويسان كمك مي كند يك شبكه ارتباطي بسيار عالي با متخصصان صنعت برقرار كنند و بتوانند از اين طريق پروژه ها و فرصت هاي شغلي جديد به دست بياورند يا در زمينه كاري خود راهنمايي كسب كنند.
  • مهارت هاي نرم در واقع به معناي كار تيمي است. براي شما به عنوان يك برنامه نويس شايد بسيار راحت تر باشد كه فقط روي وظايف خود تمركز كنيد و مشكلات برنامه نويسي خود را برطرف كنيد. اما توسعه نرم افزار چيزي فراتر از اين ميطلبد. توسعه نرم افزار در حقيقت يك كار تيمي است و همه اعضاي تيم براي رسيدن به هدف و ساخت محصول موردنظر، بايد با يكديگر در ارتباط باشند.
  • و در آخر يكي از مهم ترين دلايلي كه مهارت هاي نرم اهميت پيدا مي كند، نگه داشتن اعضاي تيم در كنار يكديگر براي همكاري هاي بلندمدت است.

مهارت نرم در برنامه نويسي

 

10 مهارت نرم بسيارمهم كه هر توسعه دهنده بايد داشته باشد

 

توانايي برقراري ارتباط

  • خوب گوش دهيد. مهارت خوب گوش دادن و خوب شنيدن يكي از مهم ترين مهارت هاي برقراري ارتباط است. تمرين كنيد قبل از آن كه نظرات خود را در مورد فرايند توسعه محصول يا مشكلات پيش آمده مطرح كنيد، ابتدا نظر ديگر افراد تيم را به خوبي بشنويد و تلاش كنيد بعد از آن بهترين راه حل را پيدا كنيد.
  • حرف ديگران را قطع نكنيد. تمرين كنيد حتي اگر در زمينه اي اطلاعات كاملي داريد، حرف درست يا نادرست ساير افراد را حين صحبت كردن قطع نكنيد.
  • شفاف و واضح صحبت كنيد. زماني كه بحث يا اختلاف نظر در مورد روند انجام كار پيش مي آيد، شما بايد بتوانيد به آرامي و به صورت شفاف ايده هاي خود را براي پايان دادن به آن مسئله بيان كنيد.
  •  

توانايي حل مسئله

در طول يك پروژه يا قبول كردن يك مسئوليت، بسيار طبيعي است كه مشكلات پيش بيني نشده اي اتفاق بيفتد. مهارت حل مسئله به شما كمك ميكند مشكلات كار را بدون متوقف كردن كل پروژه، مديريت كنيد.

 

مشاركت فعال در گروه

توانايي مشاركت فعال در گروه يك مهارت است كه هريك از اعضاي تيم به طور فعال در پايان دادن وظايف، مديريت پروژه و رسيدن به هدف همكاري مي كنند.  همكاري درست افراد احتمال ايجاد محصول بهتر، با ايده هاي خلاقانه تر و جديدتر را بسيار بالا مي برد.

 

مسئوليت پذيري

مسئوليت پذيري يك مهارت مهم است كه توسعه دهندگان و برنامه نويسان را قادر مي سازد مسئوليت اشتباهات خود را بپذيرند و بر اساس آن ها تصميم بهتري اتخاذ كنند. گرچه بسيار سخت است كه قبول كنيد انتخاب يا عدم توجه شما به يك مسئله موجب اشتباه شده است ولي بايد تمرين كنيد اولا مسئوليت ان ها را بپذيريد و سپس از تكرار آن ها جلوگيري كنيد.

 

سازگار بودن با محيط و ساير افراد

انطباق دادن خود با شرايط جديد يك مهارت نرم است كه هر برنامه نويس يا مدير پروژه بايد بتواند تغييراتي كه در محيط و حيطه توسعه محصول ايجاد مي شود را مديريت كند و خود را با آن وفق بدهد. شما به عنوان يك توسعه دهنده بايد همواره امادگي لازم براي پيشرفت تكنولوژي چه از لحاظ سخت افزاري و چه از لحاظ نرم افزاري را داشته باشيد.

 

مهارت هاي نرم در برنامه نويسي

 

مهارت هاي زباني و كلامي

مهارت هاي كلامي شامل روش صحبت كردن و نوشتن مطالب است. خيلي مهم است كه شما بتوانيد به صورت شفاف و راحت با مشتريان محصول خود صحبت كنيد. همچنين ممكن است شما مشترياني داشته باشيد كه زبان طبيعي شما را متوجه نشوند بنابراين بايد زبان جديدي ياد گيريد و بتوانيد با انان ارتباط برقرار كنيد.

 

اعتماد سازي

جلب اعتماد ديگران مهارتي است كه افراد حرفه اي و متخصص را قادر مي كند تصميمات مستقلي در مورد پروژه هاي خود بگيرند و براي پايان دادن به وظايف خود به بهترين نحو تلاش كنند. در ابتداي كار شايد سخت به نظر برسد كه بتوانيد اعتماد ساير افراد به ويژه مديران خود را جلب كنيد ولي به مرور زمان كه پروژه هاي بيشتري را با موفقيت به پايان برسانيد اين اعتمادسازي به طور خودكار اتفاق مي افتد.

 

مديريت زمان

مديريت زمان يك مهارت نرم است كه متناسب با نقشي كه در فرايند توسعه نرم افزار داريد، تغيير مي كند. به عنوان مثال اگر شما مديريت پروژه را برعهده داشته باشيد، بايد وظايف و اعضاي تيم را در مدت زمان مشخص مديريت كنيد. يا اگر شما تنها يك توسعه دهنده هستيد بايد بتوانيد زمان خود را براي طراحي، ساخت و افزايش كيفيت نرم افزار مديريت كنيد. در اين صورت شما ياد ميگيريد كارها و وظايف خود را اولويت بندي كنيد و هركدام را در بازه زماني مرتبط انجام دهيد.

 

توانايي يادگيري به صورت خودآموز

اكثر شركت هاي نرم افزاري به دنبال افرادي هستند كه بتوانند زبان ها و تكنولوژي هاي جديد را به طور خودآموز ياد بگيرند و در مواقع لازم راه حل هاي مناسب ارائه دهند. پس اگر شما تا به حال اين كار را شروع نكرده ايد، بهتر است خودتان موضوعات جذاب روز را پيدا كنيد و با استفاده از منابع و ويدئوهاي آموزشي آن ها را ياد بگيريد.

يكي از سايت هايي كه همواره در زمينه تكنولوژي و آموزش نرم افزار پيشرو بوده، سايت الگوريتم اول است. شما مي توانيد با مراجعه به اين سايت، آموزش هاي برنامه نويسي را از بهترين اساتيد به صورت آفلاين و آنلاين ياد بگيريد و پس از گذراندن آزمون هاي دوره، مدرك معتبر دانشگاه شيراز دريافت كنيد. اين مدرك مي تواند به شما در افزايش سطح رزومه تان كمك شاياني كند.

 

توانايي صبور بودن در مواقع بحراني

فرايند توسعه نرم افزار فرايندي طولاني است . به پايان رساندن پروژه ها، تست و به كارگيري آن ها و اعمال تغييرات لازم در هنگام پشتيباني، همه و همه فرايندهاي زمان بري است كه صبر ميطلبد. در اين گونه مواقع بايد به خودتان زمان كافي را بدهيد تا بدون استرس اشتباهات و خطاهاي پيش آمده را برطرف كنيد.

پايتون بهتر است يا R ؟ كدام زبان برنامه نويسي براي ورود به دنياي علم داده مناسب تر است؟

اين روزها علم داده يا data science طرفدارهاي بسيار زيادي پيدا كرده و به سرعت در حال گسترش است. اما سوالي كه براي بسياري از برنامه نويسان مطرح مي شود اين است كه كدام زبان برنامه نويسي براي اين كار بهتر است؟ قبل از اينكه در مورد زبان هاي برنامه نويسي صحبت كنيم، بهتر است كمي بيشتر در مورد خود علم داده اطلاع پيدا كنيم.

 

علم داده يا data science چيست؟

اگر در محيط وب جستجويي در مورد علم داده داشته باشيد حتما با دنيايي از مقالات طولاني و پيچيده مواجه مي شويد اما ما فقط يك جمله براي تعريف آن بيان مي كنيم. علم داده هنر جمع آوري، اندازه گيري، ارزيابي، مرتب سازي و آناليز مجموعه داده (data set) است. اين مجموعه داده مي تواند بسيار كوچك مثلا در حد شناسايي افراد بازديدكننده از سايت شما در يك بازه زماني خاص باشد يا داده هاي بسيار زيادي را شامل شود مثل بررسي وضعيت هزاران سنسور هوشمند در سراسر يك منطقه.

علم داده سال هاي زيادي است كه پديد آمده ولي نوآوري در زبان هاي برنامه نويسي مانند پايتون و R باعث گسترش قابليت هاي آن در استفاده از نرم افزارهاي گوناگون شده و سرعت جمع آوري ، ارزيابي و آناليز داده ها را به طور چشمگيري افزايش داده است.

 

علم داده data science

 

خب تا اينجا درمورد علم داده صحبت كرديم. در ادامه اين مطلب قصد داريم زبان هاي پايتون و R را از جنبه هاي مختلفي باهم مقايسه كنيم.

 

جمع آوري داده (data collection)

اولين تفاوت مهم زبان هاي پايتون و R در حوزه جمع آوري داده است. براي مثال زبان پايتون از انواع فرمت هاي گوناگون از csv گرفته تا json و حتي جداول sql پشتيباني مي كند. در حوزه توسعه وب هم پايتون اين اجازه را مي دهد كه داده ها را از دنياي وب جمع آوري كنيد و در جداولي كه خودتان ساختارش را مشخص كرده ايد، قرار دهيد. در مقابل زبان R براي وارد كردن داده هايي با فرمت excel ، csv و txt بهينه سازي شده است.

 

اكتشاف داده (exploring data)
پايتون يك كتابخانه بسيار قدرتمند براي تحليل و اكتشاف داده به نام Pandas دارد كه مي توانيد از آن براي عمليات گوناگوني مثل فيلتر كردن داده ها، مرتب سازي و نمايش داده ها به راحتي استفاده كنيد. در مقابل زبان R براي آناليزهاي آماري در ديتاست هاي بزرگ بهينه شده و شامل قابليت هاي متنوعي براي انجام عمليات اكتشاف داده است. با استفاده از زبان R شما مي توانيد توزيع احتمال هاي مختلفي براي داده هايتان در نظر بگيريد، تست هاي آماري زيادي به كار ببريد و عمليات هاي مختلف داده كاوي و يادگيري ماشين اجرا كنيد.

 

مدل سازي داده (data modeling)

در زبان پايتون كتابخانه هاي قدرتمند و استانداردي مانند NumPy براي آناليز مدل سازي عددي يا SciPy براي محاسبات علمي وجود دارد. اما اگر برنامه نويسان بخواهند همين مدل سازي هاي علمي را در زبان R انجام دهند، بايد از پكيج هاي خارج از اين زبان استفاده كنند. البته ممكن است راه حل هايي در درون خود زبان R هم وجود داشته باشد ولي قطعا پيچيدگي هايي را به برنامه اضافه مي كند كه در زبان پايتون وجود نداشته است.

 

تصويرسازي داده (data visualization)

تنها حوزه اي كه زبان R نسبت به زبان پايتون برتري دارد، حيطه مصورسازي داده است. پايتون ابزارهايي مانند matplotlib دارد كه مي توانند داده ها را به خوبي نمايش دهد. اما زبان R اساسا براي نمايش نتايج آناليزهاي آماري ساخته شده است و ماژول هاي گرافيكي آن امكان رسم نمودارها و چارت هاي مختلف را فراهم مي كند.

 

مقايسه زبان پايتون و زبان آر

 

با اين تفاسير كدام زبان براي افراد مبتدي بهتر است؟

زبان پايتون و R هركدام مزيت هاي متفاوتي در حوزه علم داده دارند اما سوال اصلي اينجاست كه كدام يك براي افراد مبتدي و كارهاي اوليه مناسب تر است؟ با توجه به مواردي كه گفته شد به نظر ميرسد زبان پايتون انتخاب اصلي براي اين دسته از افراد باشد. درست است كه افراد تازه كار مي توانند از زبان R براي اجراي آناليزهاي ساده و پايه اي در مدت زمان كوتاهي استفاده كنند، اما براي اين كه اين زبان و كتابخانه هاي آن را به درستي به كار ببرند، بايد ساعت ها براي يادگيري تلاش كنند. در مقابل زبان برنامه نويسي پايتون يك زبان بسيار ساده و قابل فهم است كه نه فقط براي علم داده بلكه براي بسياري از برنامه ها در حوزه هاي مختلف، كاربرد زيادي دارد. يكي از روش هاي يادگيري اين زبان برنامه نويسي، مشاهده ويدئوهاي آموزشي معتبر است. سايت الگوريتم اول اين امكان را فراهم كرده است كه افراد با هر سطحي از دانش، بتوانند دوره ي مقدماتي زبان برنامه نويسي پايتون را بگذرانند و پس از كسب نمره قبولي در آزمون ها و پروژه هاي اين دوره، مدرك معتبر دانشگاه شيراز را دريافت كنند.