Estimating the time it takes to build a piece of software is quite a difficult task. As many of us have seen over the years, most estimates can wildly differ from the actual time it takes to complete a project. There are lots of reasons for this, but I was surprised to find this post explaining some of the problems in a very interesting way.
I realize that many software projects are very different in scale and scope, but I hadn't ever considered the spectrum to be quite as wide as explained in the post. Just as in other industries, there are times that your software project needs to create its own technologies and techniques in order to be successful. While software might not be as complex as curing a disease, it might not be that far off at times.
However it's not just that the body of knowledge about software development techniques is so vast, it's also the problem that each of us might have a very limited amount of knowledge about building specific types of projects. What might seem simple and easy to some developers feels complex to others. A simple example I'll give you is with version control. I know version control isn't the same as building software, but it's a tool that many developers use.
I think version control is fairly trivial to implement and use. It can be a pain to use with T-SQL code and scripts without some tooling, but it's easy to learn how to use a version control system (VCS). However as I've spent two years talking about version control at various events to lots of people, and I still meet lots of people and organizations that see a VCS as an impediment to getting work done. Hint, it's not.
I think we share so much knowledge in the SQL Server community, but it still seems that we don't seem to be educating people as well as I'd like, and as quickly as I'd hoped. Our Stairway Series were designed to try and organize information, but I'm sure there are other, better ways to do so. I'm open to suggestions, and other efforts to help raise the level of knowledge for SQL Server professionals. I'd like to find ways to help people learn more, write higher quality code, at a faster pace.