Diary of a Software Craftsman
By Mete Atamel
5/5
()
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/5Programming Problems: A Primer for The Technical Interview Rating: 4 out of 5 stars4/5Programmer's Motivation for Beginners: Real Learning Stories & Tips Rating: 5 out of 5 stars5/5Programming Problems: Advanced Algorithms Rating: 4 out of 5 stars4/5Art of Clean Code: How to Write Codes for Human Rating: 3 out of 5 stars3/5The Easiest Way to Learn Design Patterns Rating: 0 out of 5 stars0 ratingsCODING INTERVIEW: Simple and Effective Methods to Cracking the Coding Interview Rating: 0 out of 5 stars0 ratingsThe Black Book of the Programmer Rating: 0 out of 5 stars0 ratingsBuilding Server-side and Microservices with Go: Building Modern Backends and Microservices Using Go, Docker and Kubernetes Rating: 0 out of 5 stars0 ratingsHands-On System Design: Learn System Design, Scaling Applications, Software Development Design Patterns with Real Use-Cases Rating: 0 out of 5 stars0 ratingsSkills of a Successful Software Engineer Rating: 0 out of 5 stars0 ratingsLearning Go Programming: Build ScalableNext-Gen Web Application using Golang (English Edition) Rating: 0 out of 5 stars0 ratingsAlgorithm Challenges: The Dojo Collection Rating: 0 out of 5 stars0 ratingsDevOps Handbook: What is DevOps, Why You Need it and How to Transform Your Business with DevOps Practices Rating: 4 out of 5 stars4/5Domain Driven Design : How to Easily Implement Domain Driven Design - A Quick & Simple Guide Rating: 2 out of 5 stars2/5Software Engineering & Object Oriented Modeling Rating: 0 out of 5 stars0 ratingsJava for Beginners: A Crash Course to Learn Java Programming in 1 Week Rating: 5 out of 5 stars5/5How to Become a Software Engineer – A Beginners Guide Rating: 0 out of 5 stars0 ratingsSoftware Development Fundamentals Rating: 0 out of 5 stars0 ratingsThe Coder Habits: The #39# Habits of the Professional Programmer Rating: 5 out of 5 stars5/510x Software Engineer Rating: 0 out of 5 stars0 ratingsFundamentals of Software Engineering: Designed to provide an insight into the software engineering concepts Rating: 0 out of 5 stars0 ratingsSoftware Patterns Made Easy Rating: 0 out of 5 stars0 ratingsCase Studies in Design Patterns Rating: 5 out of 5 stars5/5Good Code, Bad Code: Think like a software engineer Rating: 5 out of 5 stars5/5The Programmer's Brain: What every programmer needs to know about cognition Rating: 5 out of 5 stars5/5How To Build Microservices: Top 10 Hacks To Modeling, Integrating & Deploying Microservices Rating: 0 out of 5 stars0 ratings
Software Development & Engineering For You
Python For Dummies Rating: 4 out of 5 stars4/5Level Up! The Guide to Great Video Game Design Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5Hand Lettering on the iPad with Procreate: Ideas and Lessons for Modern and Vintage Lettering Rating: 4 out of 5 stars4/5How to Write Effective Emails at Work Rating: 4 out of 5 stars4/5Modern C++ for Absolute Beginners: A Friendly Introduction to C++ Programming Language and C++11 to C++20 Standards Rating: 0 out of 5 stars0 ratingsLearning Python Rating: 5 out of 5 stars5/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5Android App Development For Dummies Rating: 0 out of 5 stars0 ratingsCoding All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsThe Essential Persona Lifecycle: Your Guide to Building and Using Personas Rating: 4 out of 5 stars4/5Beginning Programming For Dummies Rating: 4 out of 5 stars4/5How Do I Do That in Photoshop?: The Quickest Ways to Do the Things You Want to Do, Right Now! Rating: 4 out of 5 stars4/5Ry's Git Tutorial Rating: 0 out of 5 stars0 ratingsManaging Humans: Biting and Humorous Tales of a Software Engineering Manager Rating: 4 out of 5 stars4/5Learn Git in a Month of Lunches Rating: 0 out of 5 stars0 ratingsSQL For Dummies Rating: 0 out of 5 stars0 ratingsLua Game Development Cookbook Rating: 0 out of 5 stars0 ratingsTiny Python Projects: Learn coding and testing with puzzles and games Rating: 5 out of 5 stars5/5Agile Project Management: Scrum for Beginners Rating: 4 out of 5 stars4/5The Inmates Are Running the Asylum (Review and Analysis of Cooper's Book) Rating: 4 out of 5 stars4/5Git Essentials Rating: 4 out of 5 stars4/5How Do I Do That In InDesign? Rating: 5 out of 5 stars5/5iPhone Application Development For Dummies Rating: 4 out of 5 stars4/5Hacking for Beginners: Mastery Guide to Learn and Practice the Basics of Computer and Cyber Security Rating: 0 out of 5 stars0 ratingsDebugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems Rating: 4 out of 5 stars4/5OneNote: The Ultimate Guide on How to Use Microsoft OneNote for Getting Things Done Rating: 1 out of 5 stars1/5
Reviews for Diary of a Software Craftsman
3 ratings2 reviews
- Rating: 5 out of 5 stars5/5A 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/5It 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