The primary goal of Cocoacasts has always been to help developers become better at their craft. It can be challenging to put that into words. But there's one trait I feel every good developer should have, being critical. This means being critical of your own work. And that of others.

If you spend time reading blogs, watching videos, or browsing social media, you inevitably pick up new techniques, patterns, and tips that can help you with your work. It's often tempting to take this information as gospel if the source is a respected developer or an authority in your field of interest.

While this is a natural response, it often hints at a lack of confidence. And that's fine. However, my advice is to always be critical.

The responses I receive to the tutorials, courses, and books I publish are mostly questions. But there are always a few developers that send me their thoughts on the subject or they challenge me with an alternative. That's a healthy attitude I can only encourage. While the reason can be arrogance, more often than not it's just someone being critical.

Stack Overflow is a blessing for the developer community and I don't think there's a single developer that doesn't occasionally browse the website in search for an answer to a tough question. But it's important to be critical of what you read. Even though Stack Overflow has a reliable review and voting system to ensure answers are correct and tested, it doesn't mean that you should take what you read on Stack Overflow as the truth or the only viable option.

When you come across a solution to a problem you're having it's important to take a closer look before adopting it. Make sure you understand the solution. Does it make sense? Can you improve the solution?

You don't understand the answer to a problem? Take a step back and spend some time dissecting the answer. Poring over a piece of code you don't understand can take time, but it's time well spent.

The practices, patterns, and tips I teach on Cocoacasts have become an integral part of my workflow. Some of them are opinionated while others are considered good practices for Swift development. I leave it up to you to decide whether they're worth adopting. Remember to always be critical.