About this ebook
What makes a piece of software good? What does it mean to perform well? How to effectively debug and fix it? What are some characteristics of a good programmer? These are some of the fundamental questions that the book will try to uncover through a collection of short articles.
The articles in the book were written over a five year period between 2009 and 2014. This is the period of time that I worked at Adobe as a software engineer, mobile phone development became mainstream, Adobe Flash gave its way to native and HTML, developers started dealing with JavaScript as a serious development language, among other things.
I wanted to share my technical experiences and opinions in a non-technical, lightweight, and hopefully enjoyable way. I hope aspiring and current software developers and architects will enjoy this book as much as I enjoyed writing it.
Related to Diary of a Software Craftsman
Related ebooks
Thinking Beyond Coding Rating: 5 out of 5 stars5/5The Coder Habits: The #39# Habits of the Professional Programmer Rating: 5 out of 5 stars5/5Art of Clean Code: How to Write Codes for Human Rating: 3 out of 5 stars3/5Code Your Way Up Rating: 5 out of 5 stars5/5CODING INTERVIEW: Simple and Effective Methods to Cracking the Coding Interview Rating: 0 out of 5 stars0 ratingsProgrammer's Motivation for Beginners: Real Learning Stories & Tips Rating: 5 out of 5 stars5/5The Black Book of the Programmer Rating: 0 out of 5 stars0 ratingsProfitable Programming: Unlocking Success in the Digital Age Rating: 0 out of 5 stars0 ratingsLearn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Software Developer Rating: 0 out of 5 stars0 ratingsHerding Cats and Coders: Software Development for Non-Techies Rating: 5 out of 5 stars5/5How to Become a Software Engineer – A Beginners Guide Rating: 0 out of 5 stars0 ratingsTest-Driven Java Development Rating: 0 out of 5 stars0 ratingsJavaScript Domain-Driven Design Rating: 3 out of 5 stars3/5Programming Interviews Exposed: Coding Your Way Through the Interview Rating: 0 out of 5 stars0 ratingsSoftware Development Ideology Rating: 0 out of 5 stars0 ratingsAvoiding Software Project Pitfalls: Seven Simple Ground Rules That Could Save Your Career Rating: 4 out of 5 stars4/5Patterns, Principles, and Practices of Domain-Driven Design Rating: 0 out of 5 stars0 ratingsProgramming Problems: A Primer for The Technical Interview Rating: 4 out of 5 stars4/5Software Patterns Made Easy Rating: 0 out of 5 stars0 ratingsCase Studies in Design Patterns Rating: 5 out of 5 stars5/5Fundamentals of Software Engineering: Designed to provide an insight into the software engineering concepts Rating: 0 out of 5 stars0 ratingsRy's Git Tutorial Rating: 0 out of 5 stars0 ratingsDesign of a Programmer Rating: 4 out of 5 stars4/5Programming Problems: Advanced Algorithms Rating: 4 out of 5 stars4/5BluePrint for Software Engineering Rating: 0 out of 5 stars0 ratingsThe Easiest Way to Learn Design Patterns Rating: 0 out of 5 stars0 ratings
Software Development & Engineering For You
Hand Lettering on the iPad with Procreate: Ideas and Lessons for Modern and Vintage Lettering Rating: 4 out of 5 stars4/5The Hard Thing About Hard Things: Building a Business When There Are No Easy Answers Rating: 4 out of 5 stars4/5Python For Dummies Rating: 4 out of 5 stars4/5Level Up! The Guide to Great Video Game Design Rating: 4 out of 5 stars4/5Beginning Programming For Dummies Rating: 4 out of 5 stars4/5The Photographer's Guide to Luminar 4 Rating: 5 out of 5 stars5/5Photoshop For Beginners: Learn Adobe Photoshop cs5 Basics With Tutorials Rating: 0 out of 5 stars0 ratingsCoding All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsLearn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5How to Write Effective Emails at Work Rating: 4 out of 5 stars4/5SQL For Dummies Rating: 0 out of 5 stars0 ratingsProgramming Problems: A Primer for The Technical Interview Rating: 4 out of 5 stars4/5System Design Interview: 300 Questions And Answers: Prepare And Pass Rating: 0 out of 5 stars0 ratingsAdobe Illustrator CC For Dummies Rating: 5 out of 5 stars5/5Wordpress 2023 A Beginners Guide : Design Your Own Website With WordPress 2023 Rating: 0 out of 5 stars0 ratingsRy's Git Tutorial Rating: 0 out of 5 stars0 ratingsPython Handbook For Beginners. A Hands-On Crash Course For Kids, Newbies and Everybody Else Rating: 0 out of 5 stars0 ratings3D Printing For Dummies Rating: 4 out of 5 stars4/5BICSI RCDD Registered Communications Distribution Designer Exam Prep And Dumps RCDD-001 Exam Guidebook Updated Questions Rating: 0 out of 5 stars0 ratingsOneNote: The Ultimate Guide on How to Use Microsoft OneNote for Getting Things Done Rating: 1 out of 5 stars1/5Hacking for Beginners: Mastery Guide to Learn and Practice the Basics of Computer and Cyber Security Rating: 0 out of 5 stars0 ratingsLessons Learned in Software Testing: A Context-Driven Approach Rating: 4 out of 5 stars4/5How to Build and Design a Website using WordPress : A Step-by-Step Guide with Screenshots Rating: 0 out of 5 stars0 ratingsThe Photoshop Toolbox: Essential Techniques for Mastering Layer Masks, Brushes, and Blend Modes Rating: 4 out of 5 stars4/5How Do I Do That In InDesign? Rating: 5 out of 5 stars5/5DevOps Handbook: What is DevOps, Why You Need it and How to Transform Your Business with DevOps Practices Rating: 4 out of 5 stars4/5
Reviews for Diary of a Software Craftsman
3 ratings2 reviews
- Rating: 5 out of 5 stars5/5
Jan 29, 2019
A quick read, with a lot of points I could relate to and also new insights I am going to implement in my own work. - Rating: 5 out of 5 stars5/5
Jul 5, 2018
It is interesting to see the programming world trough the glasses of another software craftsman.
Book preview
Diary of a Software Craftsman - Mete Atamel
Diary of a Software Craftsman
Copyright 2014 Mete Atamel
Published by Mete Atamel at Smashwords
Smashwords Edition License Notes
This ebook is licensed for your personal enjoyment only. This ebook may not be re-sold or given away to other people. If you would like to share this book with another person, please purchase an additional copy for each recipient. If you’re reading this book and did not purchase it, or it was not purchased for your enjoyment only, then please return to Smashwords.com or your favorite retailer and purchase your own copy. Thank you for respecting the hard work of this author.
Table of Contents
Prologue
Chapter 1: Thoughts on Performance
Chapter 2: Thoughts on Code Style
Chapter 3: Refactoring is a joy when tests are solid
Chapter 4: Performance Optimization Lessons
Chapter 5: Software Lessons Learned in 2010
Chapter 6: Tweets, Pokes, and Likes: Is this all the social web has to offer?
Chapter 7: Is JavaScript ready for serious development? - Part I
Chapter 8: Is JavaScript ready for serious development? - Part II
Chapter 9: Is JavaScript ready for serious development? - Part III
Chapter 10: Is JavaScript ready for serious development? – Part IV
Chapter 11: Is JavaScript ready for serious development? – Conclusion
Chapter 12: Programming == Tree-Traversal?
Chapter 13: Software Lessons Learned in 2011
Chapter 14: Maintaining Legacy Systems
Chapter 15: Why Adobe Flash?
Chapter 16: Generalist vs. Specialist Programmer
Chapter 17: Specialization, an excuse for laziness and indifference?
Chapter 18: Evolution and Software Development
About Mete Atamel
Connect with Mete Atamel
Prologue
As a seasoned software developer, I spent a lot time and energy designing and implementing complex software. Each project was unique in its own ways and thought me something but after all this time, I can't help to find myself still wondering about the process of software development. It sometimes feels like an artistic endeavor that cannot be fully understood or formalized and yet, my programmer self tries hard to figure it all out.
In some ways, software development feels very rigid. You usually have to use a certain operating system, certain technology stack, certain programing language and most projects have a very limited problem space. One gets the feeling that it should be pretty straightforward to design good software in such a constrained environment. That couldn’t be further from the truth.
What makes a piece of software good? What does it mean to perform well? How to properly test a piece of software? How to effectively debug and fix it? What are some characteristics of a good programmer? These are some fundamental questions that software developers haven't fully figured out yet. While I don't claim to have all the answers, I hope by sharing my notes, I'll make some software developers aware of these questions and seek their own answers.
This book is a random collection of articles written over a five year period between 2009 and 2014. This is the time period where I worked at Adobe as a software engineer, mobile phone development became mainstream, Adobe Flash gave its way to native and HTML, developers started dealing with JavaScript as a serious development language, among other things.
I wanted to share my technical experiences and opinions in a non-technical, lightweight, and hopefully enjoyable way. I hope aspiring and current software developers and architects will enjoy this book as much as I enjoyed writing it.
Chapter 1: Thoughts on Performance
Performance can make or break a piece of software, this is clear. Nobody puts up with an unresponsive client user interface or a slow back-end server in today's age of software abundance and choice. Despite this, performance is often overlooked until late in the software release cycle and it barely gets the proper attention it deserves. This might not be a big problem in one release cycle, but after a few release cycles, you can end up with a slow-moving giant that nobody knows how to fix instead of a lean fast machine that you used to have.
At this point, you either accept what you