اگر قصد داريد
1-
Structure and Interpretation of Computer Programs by Harold Abelson, Gerald Jay Sussman, with Julie Sussman
هميشه يکي از راهکارهاي اصلي در شروع برنامه نويسي اين است که از اصول و مقدمات آن شروع به يادگيري کنيد. اگر به تازگي قصد شروع کدنويسي داريد يا ميخواهيد پايه خود را در اين مفاهيم قوي تر کنيد، اين کتاب يکي از بهترين انتخاب هاي موجود است.
ويژگي هاي اين کتاب:
اين کتاب توسط جمعي از متخصصان مهندسي برق و کامپيوتر در دانشگاه MIT نوشته شده است.اين کتاب به صورت بسيار فشرده و استادانه، مفاهيم اصلي ترين سيستم هاي
2-
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
اين کتاب يک راهنماي فوق العاده براي درک کد نويسي و کاربردهاي آن است. جالب است بدانيد بسياري از کدنويسان از لحاظ فني ميدانند چطور کدنويسي را انجام دهند اما نمي توانند آن را توضيح دهند. اين کتاب با بيان مثال هاي متنوع و توضيح رازهاي پردازش هاي دروني کامپيوتر، اين کار را ساده مي کند.
3-
Code Complete: A Practical Handbook of Software Construction by Steve McConnell
اين کتاب يکي از محبوب ترين راهنما هاي کاربردي برنامه نويسي است که اصول و قواعد اوليه را به خوبي براي کدنويسان و تمام کساني که نياز به يادگيري مفاهيم مختلف دارند، توضيح ميدهد.
کد نويسي، رفع خطا (debugging) ، طراحي (design) ، تست نرم افزار (testing) و ساخت پروژه از جمله مفاهيمي است که به طور عميق در اين کتاب مورد بررسي قرار گرفته است. اين کتاب فارغ از سطح دانش و تجربه هر فرد، به تمامي کدنويسان توصيه مي شود.
4-
Think Like a Programmer: An Introduction to Creative Problem Solving by V. Anton Spraul
اين کتاب به شما کمک ميکند خلاقانه و بدون مرز فکر کنيد و ايده هاي متنوع و جذاب خود را در برنامه نويسي و کدنويسي پروژه هاي گوناگون به کار ببريد. محتواي اصلي اين کتاب به هيچ زبان برنامه نويسي وابسته نيست و هدف آن بيشتر حل مسائل با تفکر خلاقانه است.
5-
The Clean Coder: A Code of Conduct for Professional Programmers by Robert C. Martin
يکي ديگر از منابع بسيار عالي براي متخصصاني که قصد دارند
6-
Eloquent JavaScript by Marijn Haverbeke
زبان جاوا اسکريپت (javascript) يکي از پراستفاده ترين زبان هاي برنامه نويسي است که بهتر است تمام کدنويسان در مورد آن و نحوه استفاده از آن اطلاعات مفيدي داشته باشند. اين کتاب يک منبع بسيار عالي براي آموزش ساخت انواع اپليکشن هاست. مهارت هايي که در اين کتاب ياد خواهيد گرفت، رزومه کاري شما را بسيار قوي تر مي کند و به شما در يافتن فرصت هاي شغلي بهتر کمک شاياني مي کند.
منبع:
در نگاه اول عموم مردم تصور مي کنند
در اين پست در ابتدا بيان مي کنيم چرا مهارت هاي نرم، حياتي محسوب مي شوند و بعد از آن مهارت هاي ضروري تر براي يک مهندس نرم افزار را بررسي مي کنيم.
تفاوت مهارت هاي نرم و سخت چيست؟
زماني که فرد برنامه نويس براي يک موقعيت شغلي رزومه ميفرستد، کارفرما براي تصميم گيري در مورد استخدام او به هر دو مهارت سخت و نرم توجه مي کند.
چرا مهارت هاي نرم مهم هستند؟
دلايل مختلفي وجود دارد که نشان مي دهد
10 مهارت نرم بسيارمهم که هر توسعه دهنده بايد داشته باشد
توانايي برقراري ارتباط
توانايي حل مسئله
در طول يک پروژه يا قبول کردن يک مسئوليت، بسيار طبيعي است که مشکلات پيش بيني نشده اي اتفاق بيفتد. مهارت حل مسئله به شما کمک ميکند مشکلات کار را بدون متوقف کردن کل پروژه، مديريت کنيد.
مشارکت فعال در گروه
توانايي مشارکت فعال در گروه يک مهارت است که هريک از اعضاي تيم به طور فعال در پايان دادن وظايف، مديريت پروژه و رسيدن به هدف همکاري مي کنند. همکاري درست افراد احتمال ايجاد محصول بهتر، با ايده هاي خلاقانه تر و جديدتر را بسيار بالا مي برد.
مسئوليت پذيري
مسئوليت پذيري يک مهارت مهم است که توسعه دهندگان و برنامه نويسان را قادر مي سازد مسئوليت اشتباهات خود را بپذيرند و بر اساس آن ها تصميم بهتري اتخاذ کنند. گرچه بسيار سخت است که قبول کنيد انتخاب يا عدم توجه شما به يک مسئله موجب اشتباه شده است ولي بايد تمرين کنيد اولا مسئوليت ان ها را بپذيريد و سپس از تکرار آن ها جلوگيري کنيد.
سازگار بودن با محيط و ساير افراد
انطباق دادن خود با شرايط جديد يک مهارت نرم است که هر برنامه نويس يا مدير پروژه بايد بتواند تغييراتي که در محيط و حيطه توسعه محصول ايجاد مي شود را مديريت کند و خود را با آن وفق بدهد. شما به عنوان يک توسعه دهنده بايد همواره امادگي لازم براي پيشرفت تکنولوژي چه از لحاظ سخت افزاري و چه از لحاظ نرم افزاري را داشته باشيد.
مهارت هاي زباني و کلامي
مهارت هاي کلامي شامل روش صحبت کردن و نوشتن مطالب است. خيلي مهم است که شما بتوانيد به صورت شفاف و راحت با مشتريان محصول خود صحبت کنيد. همچنين ممکن است شما مشترياني داشته باشيد که زبان طبيعي شما را متوجه نشوند بنابراين بايد زبان جديدي ياد گيريد و بتوانيد با انان ارتباط برقرار کنيد.
اعتماد سازي
جلب اعتماد ديگران مهارتي است که افراد حرفه اي و متخصص را قادر مي کند تصميمات مستقلي در مورد پروژه هاي خود بگيرند و براي پايان دادن به وظايف خود به بهترين نحو تلاش کنند. در ابتداي کار شايد سخت به نظر برسد که بتوانيد اعتماد ساير افراد به ويژه مديران خود را جلب کنيد ولي به مرور زمان که پروژه هاي بيشتري را با موفقيت به پايان برسانيد اين اعتمادسازي به طور خودکار اتفاق مي افتد.
مديريت زمان
مديريت زمان يک مهارت نرم است که متناسب با نقشي که در فرايند توسعه نرم افزار داريد، تغيير مي کند. به عنوان مثال اگر شما مديريت پروژه را برعهده داشته باشيد، بايد وظايف و اعضاي تيم را در مدت زمان مشخص مديريت کنيد. يا اگر شما تنها يک توسعه دهنده هستيد بايد بتوانيد زمان خود را براي طراحي، ساخت و افزايش کيفيت نرم افزار مديريت کنيد. در اين صورت شما ياد ميگيريد کارها و وظايف خود را اولويت بندي کنيد و هرکدام را در بازه زماني مرتبط انجام دهيد.
توانايي يادگيري به صورت خودآموز
اکثر شرکت هاي نرم افزاري به دنبال افرادي هستند که بتوانند زبان ها و تکنولوژي هاي جديد را به طور خودآموز ياد بگيرند و در مواقع لازم راه حل هاي مناسب ارائه دهند. پس اگر شما تا به حال اين کار را شروع نکرده ايد، بهتر است خودتان موضوعات جذاب روز را پيدا کنيد و با استفاده از منابع و ويدئوهاي آموزشي آن ها را ياد بگيريد.
يکي از سايت هايي که همواره در زمينه تکنولوژي و آموزش نرم افزار پيشرو بوده، سايت
توانايي صبور بودن در مواقع بحراني
فرايند توسعه نرم افزار فرايندي طولاني است . به پايان رساندن پروژه ها، تست و به کارگيري آن ها و اعمال تغييرات لازم در هنگام پشتيباني، همه و همه فرايندهاي زمان بري است که صبر ميطلبد. در اين گونه مواقع بايد به خودتان زمان کافي را بدهيد تا بدون استرس اشتباهات و خطاهاي پيش آمده را برطرف کنيد.
اين روزها علم داده يا data science طرفدارهاي بسيار زيادي پيدا کرده و به سرعت در حال گسترش است. اما سوالي که براي بسياري از برنامه نويسان مطرح مي شود اين است که کدام
علم داده يا data science چيست؟
اگر در محيط وب جستجويي در مورد علم داده داشته باشيد حتما با دنيايي از مقالات طولاني و پيچيده مواجه مي شويد اما ما فقط يک جمله براي تعريف آن بيان مي کنيم. علم داده هنر جمع آوري، اندازه گيري، ارزيابي، مرتب سازي و آناليز مجموعه داده (data set) است. اين مجموعه داده مي تواند بسيار کوچک مثلا در حد شناسايي افراد بازديدکننده از سايت شما در يک بازه زماني خاص باشد يا داده هاي بسيار زيادي را شامل شود مثل بررسي وضعيت هزاران سنسور هوشمند در سراسر يک منطقه.
خب تا اينجا درمورد علم داده صحبت کرديم. در ادامه اين مطلب قصد داريم زبان هاي پايتون و R را از جنبه هاي مختلفي باهم مقايسه کنيم.
جمع آوري داده (data collection)
اولين تفاوت مهم زبان هاي پايتون و R در حوزه جمع آوري داده است. براي مثال زبان پايتون از انواع فرمت هاي گوناگون از csv گرفته تا json و حتي جداول sql پشتيباني مي کند. در حوزه توسعه وب هم پايتون اين اجازه را مي دهد که داده ها را از دنياي وب جمع آوري کنيد و در جداولي که خودتان ساختارش را مشخص کرده ايد، قرار دهيد. در مقابل زبان R براي وارد کردن داده هايي با فرمت excel ، csv و txt بهينه سازي شده است.
اکتشاف داده (exploring data)
مدل سازي داده (data modeling)
در زبان پايتون کتابخانه هاي قدرتمند و استانداردي مانند NumPy براي آناليز مدل سازي عددي يا SciPy براي محاسبات علمي وجود دارد. اما اگر برنامه نويسان بخواهند همين مدل سازي هاي علمي را در زبان R انجام دهند، بايد از پکيج هاي خارج از اين زبان استفاده کنند. البته ممکن است راه حل هايي در درون خود زبان R هم وجود داشته باشد ولي قطعا پيچيدگي هايي را به برنامه اضافه مي کند که در زبان پايتون وجود نداشته است.
تصويرسازي داده (data visualization)
تنها حوزه اي که زبان R نسبت به زبان پايتون برتري دارد، حيطه مصورسازي داده است. پايتون ابزارهايي مانند matplotlib دارد که مي توانند داده ها را به خوبي نمايش دهد. اما زبان R اساسا براي نمايش نتايج آناليزهاي آماري ساخته شده است و ماژول هاي گرافيکي آن امکان رسم نمودارها و چارت هاي مختلف را فراهم مي کند.
با اين تفاسير کدام زبان براي افراد مبتدي بهتر است؟
زبان پايتون و R هرکدام مزيت هاي متفاوتي در حوزه علم داده دارند اما سوال اصلي اينجاست که کدام يک براي افراد مبتدي و کارهاي اوليه مناسب تر است؟ با توجه به مواردي که گفته شد به نظر ميرسد زبان پايتون انتخاب اصلي براي اين دسته از افراد باشد. درست است که افراد تازه کار مي توانند از زبان R براي اجراي آناليزهاي ساده و پايه اي در مدت زمان کوتاهي استفاده کنند، اما براي اين که اين زبان و کتابخانه هاي آن را به درستي به کار ببرند، بايد ساعت ها براي يادگيري تلاش کنند. در مقابل
مرورگر کروم يکي از محبوب ترين و پر استفاده ترين مرورگرهايي است که امروزه استفاده مي شود. اين مرورگر تعداد بسيار زيادي افزونه دارد که به طراحان و توسعه دهندگان وب کمک ميکند کارهاي خود را در کمترين زمان ممکن انجام دهند و از اين طريق کارايي خود را بالا ببرند.
در اين پست 9 اکستنشن کروم که زندگي را براي توسعه دهندگان وب آسان مي کند، معرفي مي کنيم. اين افزونه ها همگي تست شده اند و از لحاظ کارايي و رابط گرافيکي جزء بهترين ها هستند.
افزونه
افزونه
اگر در حال طراحي يک صفحه واکنش گرا (responsive) هستيد، افزونه
توانايي مشاهده کدهاي CSS هر المان دلخواه در هر سايتي که مدنظر داريد، از قابليت هاي
اين افزونه به شما اجازه مي دهد به راحتي تمام صفحات وبي را که مدنظر داريد، بر اساس ويژگي هاي از پيش تعيين شده مثل seo يا web performance تست کنيد. شما مي توانيد با استفاده از افزونه
افزونه
افزونه توليد متن آزمايشي
افزونه
يکي از ابزارهاي بسيار مفيد براي برنامه نويسان و توسعه دهندگان، افزونه
درباره این سایت