Fundamental Software Skills – Timeless Lessons from a Senior Developer
New for May 2019 – I’m in the process of writing a book that covers the fundamentals of software development, how to write quality code, and the context you need to be a solid developer. The table of contents is firmed up and a few chapters are almost ready. I could use your help! If you take my survey I’ll give you a 50% discount when the book is finished.
About the book:
Get the context needed to be a successful software developer based on my 20 years of experience: tools, quality coding, data handling, APIs, frameworks and more.
For me the first few years of being a software developer had many moments of confusion, frustration, and self doubt. It takes a few years to really figure out how things work in software (although the learning never stops). Many software training programs focus too much on the specifics of a given language or framework. They toss you into the weeds and expect you to figure out the big picture on your own.
My goal with this book is to give everyone the same sense of being a well rounded software developer that I enjoy, without having to learn it the hard way like I did.
The book starts off with an overview of computer hardware and a discussion of Mac vs Linux vs Windows. It includes an exercise on how to build your own machine from off the shelf components. The best developers understand the basics of what is going on inside their machine and know how to fix it when something breaks.
The book then moves to the fundamentals of using a text editor / IDE, being comfortable on the command line, and using source control. Again, the best developers deftly navigate these areas while struggling developers a) don’t know how to use their tools efficiently, and b) end up being totally dependent on some GUI tool or abstraction that gets them in trouble later.
The next chapter is an overview of how the internet is built. Seems odd for a programming book, but most software runs directly on the internet or at least touches it in some way. Good developers know the basics of networking, DNS, servers, and what is going on under the hood when accessing external resources. The ability to troubleshoot network related problems has proved invaluable for me when it comes time to prove to sysadmins something is wrong on their end.
At last the book goes heavy into coding. First there is a chapter on the basics, and various themes you’ll see. Then there is a chapter on quality coding – the centerpiece of the book. The concepts I discuss on quality coding will make or break your career as a software developer.
After coding comes data storage and data in flight (APIs), which encompasses about half of what I do as a software developer – moving and storing data.
Then I discuss user interface and front end concepts. I’m not a design expert but again I provide the context you’ll need. From there the book goes into popular frameworks and the ideas behind them. Frameworks drive much of web development, both frontend and backend, but they all do the same sort of thing.
Next is a chapter that will give you some guidance on one of the most aggravating aspects of building software: string encoding, internationalization, and date handling. This one trips up many developers so I have to cover it.
The last section goes into common workflows in software development, software licenses / intellectual property, and career considerations. Commercial software is business driven. Most jobs in software involve working for a business. Therefore if you are working on software you are likely dealing with business issues. Again the best developers are the ones who know how to navigate this area.
Why me and why this book?
The idea for this book has been on my mind for years. Throughout my career I’ve been told by blog readers, managers, and peers that I’m a good communicator, especially when it comes to breaking down complex technical subjects. I’ve mentored over a dozen developers in my career. I’ve done it while working for others and in my own company with my own money on the line. At this point in life I know what junior developers get hung up on, where many “experienced” developers are weak, and the major themes to get under wraps.
Each chapter contains screenshots, key terminology, code samples (where applicable) and my honest appraisal of what you need to know.
The digital version is a “living book” (“book as a service”) in the sense that I regularly release updates. This seems fitting since software evolves so rapidly. A purchase grants lifetime access to the updates in digital form.
A dead tree (paper) version will be made available if there is demand for it.
Table of Contents:
- Introduction – Why Software Is Awesome
- Understanding Your Hardware
- Getting Good With Your Editor / IDE = RESPECT
- The Command Line is Yours
- Use Source Control or Perish
- How The Internet Works and Networking / Infrastructure
- Coding Fundamentals
- Quality Coding – Bullet Proof Your Code in the Real World
- Data Storage – Data At Rest
- APIs – Data In Flight
- UI / Data Presentation – Front End Development
- Common Framework Concepts
- Strings, Dates And Bytes
- Common Day To Day Workflows
- Software Licenses, Intellectual Property and Such
- Career Considerations
- Recommended Books And Tools – What I Really Use, No Affiliates Allowed!
- Glossary of Terms