Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Effective Programming

Effective Programming

More Than Writing Code
توسط Jeff Atwood 2012 283 صفحات
3.91
929 امتیازها
گوش دادن
Try Full Access for 7 Days
Unlock listening & more!
Continue

نکات کلیدی

1. کیفیت کد مهم‌تر از کمیت آن است

"بهترین کد، کدی است که اصلاً وجود ندارد."

کمتر، بیشتر است. نوشتن کد کمتر اغلب منجر به نرم‌افزار بهتری می‌شود. خطوط کد کمتر به معنای باگ‌های کمتر، نگهداری آسان‌تر و عملکرد بهبود یافته است. بر حل مشکلات به‌صورت کارآمد تمرکز کنید و از تولید کد اضافی خودداری کنید.

کیفیت بر کمیت اولویت دارد. نوشتن کد تمیز، خوانا و قابل نگهداری را در اولویت قرار دهید. از نام‌گذاری صحیح، پیروی از استانداردهای کدنویسی و استفاده از الگوهای طراحی بهره ببرید. به‌طور منظم کد موجود را بازسازی و بهینه‌سازی کنید و از افزودن پیچیدگی‌های غیرضروری بپرهیزید.

سادگی را بپذیرید. به دنبال راه‌حل‌های زیبا باشید که با حداقل کد وظایف را انجام دهند. این رویکرد در درازمدت به نرم‌افزار قوی‌تر و مقیاس‌پذیرتر منجر می‌شود.

2. تجربه کاربری باید اولویت اصلی در توسعه نرم‌افزار باشد

"برای کاربر نهایی، رابط کاربری همان برنامه است."

قابلیت استفاده را در اولویت قرار دهید. نرم‌افزار را با در نظر گرفتن کاربر نهایی طراحی کنید. رابط‌های کاربری شهودی ایجاد کنید که نیاز به یادگیری کمی داشته باشند. تست کاربری انجام دهید و بازخورد جمع‌آوری کنید تا تجربه کاربری را به‌طور مداوم بهبود بخشید.

بر عملکرد تمرکز کنید. اطمینان حاصل کنید که برنامه شما پاسخگو و کارآمد است. کاربران به سرعت و قابلیت اطمینان ارزش می‌دهند، بنابراین زمان بارگذاری را بهینه کنید، تأخیر را کاهش دهید و مصرف منابع را به حداقل برسانید.

دسترسی اهمیت دارد. با در نظر گرفتن کاربران با توانایی‌ها و نیازهای مختلف، برای شمولیت طراحی کنید. ویژگی‌هایی مانند ناوبری با صفحه‌کلید، سازگاری با صفحه‌خوان و بهینه‌سازی کنتراست رنگ را پیاده‌سازی کنید.

3. امنیت یک جنبه اساسی از برنامه‌نویسی خوب است

"همیشه در مورد امنیت بدترین حالت را فرض کنید."

امنیت از طراحی. ملاحظات امنیتی را از ابتدای فرآیند توسعه یکپارچه کنید. شیوه‌های کدنویسی امن را پیاده‌سازی کنید، از رمزنگاری استفاده کنید و اصل کمترین امتیاز را دنبال کنید.

ممیزی‌ها و تست‌های منظم. ممیزی‌های امنیتی و تست‌های نفوذ را به‌طور مکرر انجام دهید تا آسیب‌پذیری‌ها را شناسایی کنید. از آخرین تهدیدات امنیتی و وصله‌ها مطلع باشید.

  • پیاده‌سازی احراز هویت و مجوز مناسب
  • اعتبارسنجی و پاک‌سازی ورودی‌های کاربر
  • استفاده از پروتکل‌های ارتباطی امن
  • به‌روزرسانی وابستگی‌ها و کتابخانه‌ها

حفاظت از داده‌ها. داده‌های کاربر را از طریق رمزنگاری مناسب، ذخیره‌سازی امن و رعایت مقررات حریم خصوصی مانند GDPR محافظت کنید.

4. شیوه‌های استخدام مؤثر برای ساخت تیم‌های توسعه قوی حیاتی است

"برای نگرش استخدام کنید، برای مهارت آموزش دهید."

فراتر از مهارت‌های فنی نگاه کنید. توانایی‌های حل مسئله، مهارت‌های ارتباطی و تناسب فرهنگی نامزدها را ارزیابی کنید. مهارت‌های فنی قابل آموزش هستند، اما نگرش و اخلاق کاری تغییرپذیر نیستند.

تیم‌های متنوع بهتر عمل می‌کنند. در شیوه‌های استخدام خود به تنوع بپردازید. پیشینه‌ها و دیدگاه‌های مختلف به راه‌حل‌های نوآورانه‌تر و حل مسئله بهتر منجر می‌شود.

فرهنگ یادگیری مداوم. محیطی را ایجاد کنید که رشد و یادگیری را تشویق کند. به دنبال نامزدهایی باشید که به به‌روز ماندن با فناوری‌های جدید و بهترین شیوه‌ها علاقه‌مند هستند.

5. کار از راه دور می‌تواند با رویکرد صحیح بسیار پربار باشد

"بهترین استعدادها در یک کد پستی واحد یافت نمی‌شوند."

ارتباط غیرهمزمان را بپذیرید. از ابزارها و شیوه‌هایی استفاده کنید که به اعضای تیم اجازه می‌دهند به‌طور مؤثر در مناطق زمانی و برنامه‌های مختلف همکاری کنند.

اعتماد و خودمختاری را بسازید. اعضای تیم از راه دور را با تمرکز بر نتایج به‌جای مدیریت جزئی زمانشان توانمند کنید. انتظارات و مهلت‌های مشخصی تعیین کنید، اما انعطاف‌پذیری در نحوه انجام کار را فراهم کنید.

ارتباط و فرهنگ را تقویت کنید. فرصت‌هایی برای ساخت تیم مجازی و تعاملات غیررسمی ایجاد کنید. تماس‌های ویدیویی منظم، استراحت‌های قهوه مجازی و رویدادهای تیمی آنلاین می‌توانند به حفظ فرهنگ قوی تیم کمک کنند.

6. مشارکت جامعه برای موفقیت پروژه‌های نرم‌افزاری ضروری است

"کاربران شما بهترین منبع نوآوری شما هستند."

کانال‌های ارتباطی باز. پلتفرم‌هایی برای کاربران ایجاد کنید تا بازخورد ارائه دهند، مشکلات را گزارش کنند و بهبودها را پیشنهاد دهند. این می‌تواند شامل انجمن‌ها، ردیاب‌های مشکلات یا کانال‌های رسانه‌های اجتماعی باشد.

به بازخورد پاسخ دهید. به‌طور فعال با نظرات و نگرانی‌های کاربران درگیر شوید. نشان دهید که به ورودی آن‌ها ارزش می‌دهید با اجرای پیشنهادات و رسیدگی به مسائل به‌موقع.

احساس مالکیت را تقویت کنید. کاربران را تشویق کنید تا از طریق مستندسازی، گزارش باگ یا حتی مشارکت در کد به پروژه کمک کنند. این باعث ایجاد یک پایگاه کاربری متعهدتر و وفادارتر می‌شود.

7. یادگیری و تطبیق مداوم کلید ماندن در تکنولوژی است

"تنها ثابت در فناوری تغییر است."

یادگیری مادام‌العمر را بپذیرید. به‌طور منظم زمانی را برای یادگیری فناوری‌های جدید، زبان‌های برنامه‌نویسی و روش‌شناسی‌ها اختصاص دهید. با روندهای صنعت و بهترین شیوه‌ها به‌روز بمانید.

آزمایش و نوآوری. زمانی را برای پروژه‌های شخصی و آزمایش اختصاص دهید. این به شما اجازه می‌دهد ایده‌ها و فناوری‌های جدید را بدون محدودیت‌های پروژه‌های کاری کشف کنید.

اشتراک‌گذاری دانش. در جوامع فناوری شرکت کنید، پست‌های وبلاگ بنویسید یا ارائه دهید. آموزش دیگران درک خودتان را تقویت می‌کند و شما را مسئول به‌روز ماندن نگه می‌دارد.

8. تصمیم‌گیری مبتنی بر داده به نتایج بهتر نرم‌افزاری منجر می‌شود

"دو بار اندازه‌گیری کنید، یک بار برش دهید."

تحلیل‌ها را پیاده‌سازی کنید. ابزارهای تحلیلی را در نرم‌افزار خود ادغام کنید تا داده‌های رفتار کاربر، معیارهای عملکرد و اطلاعات مرتبط دیگر را جمع‌آوری کنید.

آزمایش A/B. از آزمایش‌های کنترل‌شده برای مقایسه ویژگی‌ها یا طراحی‌های مختلف استفاده کنید. تصمیم‌گیری‌ها را بر اساس داده‌های عینی به‌جای نظرات ذهنی انجام دهید.

بهبود مستمر. به‌طور منظم داده‌ها را تجزیه و تحلیل کنید تا زمینه‌های بهبود را شناسایی کنید. از این اطلاعات برای اولویت‌بندی توسعه ویژگی‌ها و بهینه‌سازی عملکرد موجود استفاده کنید.

9. سادگی و وضوح باید در کد و طراحی اولویت داشته باشند

"کمال زمانی به دست می‌آید که دیگر چیزی برای افزودن نیست، بلکه زمانی که چیزی برای حذف باقی نمانده است."

کد خودمستند بنویسید. از نام‌های متغیر، نام‌های تابع و نظرات واضح و توصیفی استفاده کنید. برای کدی تلاش کنید که بدون مستندسازی گسترده به‌راحتی قابل درک باشد.

اصل KISS را دنبال کنید. ساده نگه‌دارید، احمقانه. از راه‌حل‌های بیش‌ازحد پیچیده زمانی که جایگزین‌های ساده‌تری وجود دارد، اجتناب کنید. این منجر به کدی قابل نگهداری‌تر و کمتر مستعد خطا می‌شود.

طراحی مدولار. سیستم‌های پیچیده را به اجزای کوچک‌تر و قابل استفاده مجدد تقسیم کنید. این خوانایی، قابلیت تست و سهولت نگهداری را بهبود می‌بخشد.

10. ملاحظات اخلاقی در توسعه نرم‌افزار بسیار مهم هستند

"با قدرت زیاد، مسئولیت بزرگ می‌آید."

تأثیر را در نظر بگیرید. پیامدهای بالقوه نرم‌افزار خود را بر کاربران، جامعه و محیط‌زیست ارزیابی کنید. تلاش کنید تا فناوری‌ای ایجاد کنید که به نفع بشریت باشد.

حریم خصوصی کاربر را محافظت کنید. اقدامات قوی حفاظت از داده‌ها را پیاده‌سازی کنید و در مورد جمع‌آوری و استفاده از داده‌ها شفاف باشید. به کاربران کنترل اطلاعات شخصی‌شان را بدهید.

از الگوهای تاریک اجتناب کنید. رابط‌های کاربری طراحی کنید که به انتخاب‌های کاربر احترام بگذارند و آن‌ها را دستکاری یا فریب ندهند. رفاه کاربر را بر منافع کوتاه‌مدت کسب‌وکار اولویت دهید.

آخرین به‌روزرسانی::

FAQ

What is "Effective Programming: More Than Writing Code" by Jeff Atwood about?

  • Focus on the human side: The book explores the human aspects of software development, emphasizing that programming is more than just writing code—it's about communication, teamwork, and problem-solving.
  • Collection of essays: It compiles Jeff Atwood’s best essays from his blog Coding Horror, covering topics like productivity, hiring, workspaces, user experience, and community building.
  • Practical advice: Atwood provides actionable advice for programmers at all levels, from career development to technical best practices and team dynamics.
  • Real-world examples: The book draws on Atwood’s experiences building Stack Overflow and Stack Exchange, offering insights into what makes programmers and programming teams effective.

Why should I read "Effective Programming: More Than Writing Code" by Jeff Atwood?

  • Learn from experience: Atwood distills years of hands-on experience into practical lessons, making it valuable for both new and seasoned programmers.
  • Broader perspective: The book goes beyond code, addressing essential skills like communication, teamwork, and understanding user needs.
  • Improve your career: It offers guidance on career growth, hiring, and building a professional reputation in the software industry.
  • Engaging and relatable: Atwood’s writing is accessible, humorous, and filled with real-life anecdotes that make complex topics easy to understand.

What are the key takeaways from "Effective Programming: More Than Writing Code"?

  • Communication is critical: Great programmers are distinguished by their ability to communicate ideas clearly, not just by technical skill.
  • Code is a small part: Writing code is only a fraction of what makes a programmer effective; understanding users, teams, and business goals is equally important.
  • Continuous improvement: Sharpening your skills, learning from others, and embracing feedback are essential for long-term success.
  • Execution over ideas: Success comes from executing well with a strong team, not just having great ideas.

What are the most memorable quotes from "Effective Programming: More Than Writing Code" and what do they mean?

  • “The best code is no code at all.” – Atwood emphasizes the importance of minimalism and avoiding unnecessary complexity in software.
  • “It’s always your fault.” – Programmers should take ownership of their code and problems, rather than blaming tools or others.
  • “If you love writing code — really, truly love to write code — you’ll love it enough to write as little of it as possible.” – Advocates for writing concise, maintainable code.
  • “No matter what they tell you, it’s always a people problem.” – Reminds readers that most software issues are rooted in team dynamics and communication, not technology.

How does Jeff Atwood define the role of a programmer in "Effective Programming: More Than Writing Code"?

  • Problem solver first: Programmers are primarily problem solvers, not just code writers; their job is to deliver solutions for users.
  • Communicator and collaborator: Effective programmers must communicate ideas clearly and work well within teams.
  • Lifelong learner: The best programmers are always learning, adapting, and improving their craft.
  • Responsible professional: Programmers should take responsibility for their code, its impact, and the user experience.

What are the "Eight Levels of Programmers" described in "Effective Programming: More Than Writing Code"?

  • Dead Programmer: Legendary figures whose work outlives them (e.g., Dijkstra, Knuth).
  • Successful Programmer: Programmers who create businesses or industries around their code (e.g., Gates, Carmack).
  • Famous Programmer: Well-known in programming circles but may not be financially successful.
  • Working Programmer: Skilled, respected, and consistently employed.
  • Average Programmer: Competent but self-aware of their limitations.
  • Amateur Programmer: Enthusiastic learners or hobbyists showing promise.
  • Unknown Programmer: Competent but unremarkable, often in large organizations.
  • Bad Programmer: Lacks skill, causing more harm than good.

What practical advice does "Effective Programming: More Than Writing Code" offer for writing better code?

  • Strive for minimalism: Write as little code as possible; every line is a liability.
  • Self-documenting code: Make code clear and understandable without relying on comments.
  • Take responsibility: Assume bugs are your fault and investigate thoroughly before blaming external factors.
  • Read the source: When in doubt, consult the actual source code for libraries and frameworks you use.

How does Jeff Atwood recommend programmers improve their communication skills in "Effective Programming: More Than Writing Code"?

  • Write regularly: Blogging, answering questions, or documenting code helps clarify your thoughts and improve writing.
  • Participate in Q&A: Engaging in communities like Stack Overflow hones your ability to explain and teach.
  • Seek feedback: Use peer review and public forums to get constructive criticism and learn from others.
  • Practice empathy: Always consider your audience, whether it’s users, teammates, or other developers.

What does "Effective Programming: More Than Writing Code" say about building and working in effective teams?

  • Cultivate great teams: Execution and teamwork matter more than individual brilliance or ideas.
  • Hire for fit: Prioritize cultural fit and passion over years of experience or specific technical skills.
  • Address people problems: Most project failures are due to team and process issues, not technical ones.
  • Encourage collaboration: Use practices like code reviews and pair programming to share knowledge and improve quality.

What are Jeff Atwood’s recommendations for hiring programmers, as outlined in "Effective Programming: More Than Writing Code"?

  • Screen for basics: Use simple coding tests to ensure candidates can actually program.
  • Review portfolios: Look for evidence of past work, open source contributions, or community involvement.
  • Focus on fit: Assess cultural and team fit, not just technical skills.
  • Use audition projects: Give real-world tasks to see how candidates perform before hiring.

How does "Effective Programming: More Than Writing Code" address user experience and designing with the user in mind?

  • Details matter: Small usability improvements can make the difference between delight and frustration.
  • UI is the application: Users judge software by its interface, not its internal code or architecture.
  • Prototype first: Design the user interface before writing code to ensure it meets user needs.
  • Test with real users: Conduct usability testing early and often to catch issues before release.

What are the most important productivity and workflow tips from "Effective Programming: More Than Writing Code"?

  • Avoid multitasking: Focus on one project at a time to minimize context switching and maximize productivity.
  • Sharpen the saw: Regularly invest in learning, reading, and improving your skills.
  • Optimize your workspace: Ensure you have the right tools, comfortable environment, and minimal distractions.
  • Ship early, iterate often: Release early versions to gather feedback and improve quickly, rather than waiting for perfection.

نقد و بررسی

3.91 از 5
میانگین از 929 امتیازات از Goodreads و Amazon.

کتاب برنامه‌نویسی مؤثر عمدتاً نظرات مثبتی دریافت کرده است و خوانندگان از مشاوره‌های عملی و سبک نوشتاری جذاب آن تمجید می‌کنند. بسیاری این کتاب را برای توسعه‌دهندگان تازه‌کار و با تجربه مفید می‌دانند. برخی از منتقدان به فرمت کتاب به عنوان مجموعه‌ای از پست‌های وبلاگی انتقاد کرده و به تکرار و لینک‌های شکسته اشاره می‌کنند. خوانندگان از بینش‌های اتوود در مورد دینامیک‌های تیمی، مدیریت پروژه و بهترین شیوه‌های توسعه نرم‌افزار قدردانی می‌کنند. لحن محاوره‌ای کتاب و مثال‌های واقعی با بسیاری از خوانندگان همخوانی دارد، هرچند برخی از وجود لینک‌های زیاد در وب به عنوان حواس‌پرتی یاد می‌کنند. به‌طور کلی، این کتاب به عنوان منبعی ارزشمند برای برنامه‌نویسانی که به دنبال بهبود مهارت‌های خود هستند، شناخته می‌شود.

Your rating:
4.41
21 امتیازها

درباره نویسنده

جف اتوود، توسعه‌دهنده نرم‌افزار، نویسنده و کارآفرین مشهور، به‌خاطر تأسیس Stack Overflow، پلتفرم محبوب پرسش و پاسخ برای برنامه‌نویسان، و ایجاد Discourse، پلتفرم بحث‌وگفتگوی متن‌باز، شناخته می‌شود. اتوود بیشتر به خاطر وبلاگش با عنوان "Coding Horror" معروف است که در آن به اشتراک‌گذاری دیدگاه‌هایی درباره برنامه‌نویسی، فناوری و توسعه نرم‌افزار می‌پردازد. سبک نوشتاری او با طنز، عملی بودن و تمرکز بر کاربردهای دنیای واقعی مشخص می‌شود. کارهای اتوود تأثیر قابل توجهی بر جامعه برنامه‌نویسی داشته و بهترین شیوه‌ها را ترویج داده و به اشتراک‌گذاری دانش میان توسعه‌دهندگان کمک کرده است. تخصص او شامل جنبه‌های مختلف توسعه نرم‌افزار، از تکنیک‌های کدنویسی تا مدیریت تیم و طراحی تجربه کاربری می‌باشد.

Listen
Now playing
Effective Programming
0:00
-0:00
Now playing
Effective Programming
0:00
-0:00
Voice
Speed
Dan
Andrew
Michelle
Lauren
1.0×
+
200 words per minute
Queue
Home
Library
Get App
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Recommendations: Personalized for you
Ratings: Rate books & see your ratings
100,000+ readers
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 4
📜 Unlimited History
Free users are limited to 4
📥 Unlimited Downloads
Free users are limited to 1
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Jun 13,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Start a 7-Day Free Trial
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Loading...