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/5Art of Clean Code: How to Write Codes for Human Rating: 3 out of 5 stars3/5Programming Problems: A Primer for The Technical Interview Rating: 4 out of 5 stars4/5The Black Book of the Programmer Rating: 0 out of 5 stars0 ratingsThe Easiest Way to Learn Design Patterns Rating: 0 out of 5 stars0 ratingsProgrammer's Motivation for Beginners: Real Learning Stories & Tips Rating: 5 out of 5 stars5/5Skills of a Successful Software Engineer Rating: 0 out of 5 stars0 ratingsProgramming Problems: Advanced Algorithms Rating: 4 out of 5 stars4/5Building Server-side and Microservices with Go: Building Modern Backends and Microservices Using Go, Docker and Kubernetes 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/5CODING INTERVIEW: Simple and Effective Methods to Cracking the Coding Interview 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 ratingsDomain Driven Design : How to Easily Implement Domain Driven Design - A Quick & Simple Guide Rating: 2 out of 5 stars2/5Learning Go Programming: Build ScalableNext-Gen Web Application using Golang (English Edition) Rating: 0 out of 5 stars0 ratingsSoftware Engineering & Object Oriented Modeling Rating: 0 out of 5 stars0 ratingsProgramming Essentials Rating: 5 out of 5 stars5/5Agile Testing: An Overview Rating: 4 out of 5 stars4/5Algorithm Challenges: The Dojo Collection 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/5Software Testing: A Guide to Testing Mobile Apps, Websites, and Games Rating: 4 out of 5 stars4/5Software Development Fundamentals Rating: 0 out of 5 stars0 ratingsDevOps Interview Questions and Answers Rating: 0 out of 5 stars0 ratingsThe IT Manager’s Guide to Continuous Delivery: Delivering Software in Days Rating: 0 out of 5 stars0 ratingsDevOps and Site Reliability Engineering Handbook: Non-Programmer’s Guide Rating: 4 out of 5 stars4/5Learning Python Design Patterns - Second Edition Rating: 0 out of 5 stars0 ratingsThe Coder Habits: The #39# Habits of the Professional Programmer Rating: 5 out of 5 stars5/5Software Patterns Made Easy Rating: 0 out of 5 stars0 ratings10x Software Engineer Rating: 0 out of 5 stars0 ratings
Software Development & Engineering For You
Level Up! The Guide to Great Video Game Design 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 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/5Wordpress 2023 A Beginners Guide : Design Your Own Website With WordPress 2023 Rating: 0 out of 5 stars0 ratingsModern C++ for Absolute Beginners: A Friendly Introduction to C++ Programming Language and C++11 to C++20 Standards Rating: 0 out of 5 stars0 ratingsPython For Dummies Rating: 4 out of 5 stars4/5How to Write Effective Emails at Work Rating: 4 out of 5 stars4/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5Beginning Programming For Dummies Rating: 4 out of 5 stars4/53D Printing Designs: Fun and Functional Projects Rating: 0 out of 5 stars0 ratingsAdobe Illustrator CC For Dummies Rating: 5 out of 5 stars5/5Photoshop For Beginners: Learn Adobe Photoshop cs5 Basics With Tutorials Rating: 0 out of 5 stars0 ratingsLearning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction Rating: 5 out of 5 stars5/5Lua Game Development Cookbook 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/5Beginning C++ Programming Rating: 3 out of 5 stars3/5Tiny Python Projects: Learn coding and testing with puzzles and games Rating: 5 out of 5 stars5/5Blender 3D Printing Essentials Rating: 0 out of 5 stars0 ratings27 PROGRAM MANAGEMENT INTERVIEW TECHNIQUES - To Ace That Dream Job Offer ! Rating: 5 out of 5 stars5/5OneNote: The Ultimate Guide on How to Use Microsoft OneNote for Getting Things Done Rating: 1 out of 5 stars1/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5Ry's Git Tutorial Rating: 0 out of 5 stars0 ratingsHow Do I Do That In InDesign? Rating: 5 out of 5 stars5/5iPhone Application Development For Dummies Rating: 4 out of 5 stars4/5Coding All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsTest-Driven iOS Development with Swift Rating: 5 out of 5 stars5/5Android App Development For Dummies Rating: 0 out of 5 stars0 ratingsiOS App Development For Dummies Rating: 0 out of 5 stars0 ratingsFlow: A Handbook for Change-Makers, Mavericks, Innovators and Leaders Rating: 0 out of 5 stars0 ratings
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