Tag Archives: programming

Image by Bernard Goldbach

What Programming Teaches Us About Failure

Most programmers will tell you that they did not write a working program – or even a working function – on their first try. It often takes multiple attempts and revisions before reaching success. What do I mean by success? There are multiple ways of looking at success too, but today let’s talk about failure.

We tend to celebrate successes and sweep failures under the rug. As programmers,  we should examine failures more closely.

Squashing the Bugs

What do you do when you hit ‘build’ and your program has errors, or when your program runs but it’s buggy? Some people might bang their heads, feel frustrated or angry, and not care as much about trying to solve the problem. Others might be still frustrated but even more determined to smooth out all the wrinkles. Fixing bugs teaches us that it takes perseverance to pinpoint a problem and find a good solution. Mistakes along the way become an expected part of the problem-solving process.

Proactive Programming

You know how your program works and how to properly use it. Another person might not. Testing our programs and proactively coding against possible user errors helps the program run properly – it is also a valuable exercise in empathy. Preventing program failures partly means learning to imagine the ways that many different people might approach the program. In doing so, it is easier to create something that other people will find enjoyable to use.

Adopting a Growth Mindset

Think about something you do well. After a few months of programming, concepts like for loops probably seem like no big deal, but they probably weren’t as easy the first time. Learning to program involves making countless mistakes and learning from them along the way. Over time, we develop logic skills and knowledge that helps us learn more quickly. That knowledge was very likely acquired rather than a result of inborn talent. Programming is an example of how we benefit by embracing failures as challenges waiting to be solved, by approaching unfamiliar topics as something to yet be learned, and by seeing perseverance and effort as the keys to mastery.


Image by Bernard Goldbach


For more information about the Growth Mindset, see this video and other works by Stanford professor Carol Dweck.

Image by Alexander Scheffelaar Klots

Taking Your Coding to the Next Level

You’ve done the Hour of Code and Codecademy, or maybe you’ve taken a couple formal intro classes. Now what? Here are some great resources for staying sharp and taking your coding to the next level.

Code School

Pros: Code School offers fun-themed, polished instruction videos and exercises for Ruby, JavaScript, HTML/CSS, iOS, Git and electives like using the Google Drive API. The developers at Code School are constantly rolling out new content covering topics like Angular.js, Node.js and Express.js. These courses assume you have a basic understanding of the programming language at hand.

Cons: The iOS path has a course on Objective-C but not Swift, though the developers have blogged about Swift and it seems they’ve got a course in the works. If you’re not looking to learn about web technologies, however, this site won’t be very useful to you.

Cost: $29/mo individual subscription

Treehouse

Pros: Treehouse is track-based like Code School, but offers additional topics like Android development, PHP, Python, WordPress and even a track on how to start a business.

Cons: If you want access to industry talks, interviews and workshops, you’ll need a Pro account at double the cost of a basic subscription.

Cost: $25/mo individual basic subscription

PluralSight

Pros: If you’re interested in more than just web technologies, PluralSight probably has you covered with its 3500+ courses. There are some learning paths but the site is largely geared toward current professionals who might be preparing for a specific certificate or who need to learn a very specific topic. Here you’ll find videos on .NET, C#, databases, SQL, and methodology-based courses like agile and unit-testing.

Cons: There’s much less hand-holding on PluralSight, so it’s probably useful if you have an intermediate-level understanding of programming basics and/or are very self-directed. PluralSight videos aim to teach you what you need to know without fancier things like themed learning paths.

Cost: $29/mo individual basic subscription ($49/mo subscription for access to exercises, pre-/post-assessments and certificates)

TopCoder

Pros: TopCoder posts challenges in the major areas of design, development and data science for programmers to compete to come up with the best solution. This is a great place to show off your skills, potentially win prizes and get noticed by companies. Some companies use this site as part of their technical interview.

Cons: TopCoder doesn’t have courses to explicitly teach you skills. Rather, you can learn by taking on a challenge and doing your own research about the topic.

Cost: Free!

HackerRank

Pros: HackerRank easily lets you practice coding (from late beginner skills onwards) in over 30 programming languages. This is a great place to sharpen your skills in algorithms, artificial intelligence or functional programming. HackerRank consists mostly of exercises but has some tutorials like Linux Shell/Bash and Python. The farther up you move in the ranks by completing challenges, the more you could also get noticed by companies. Some companies use this site as part of their technical interview.

Cons: For the most part, HackerRank is more about completing challenges and teaching yourself something along the way. Let StackOverflow be your friendly companion; the forums specific to each challenge have some handy tips, too.

Cost: Free!

 


 

Why do I list having to teach yourself without formal video tutorials as a con? I wrote this guide with the beginner/intermediate programmer in mind – someone who probably considers themselves a student and isn’t used to the fact that ‘learning by doing’ can also mean solving a challenge by looking up lots of bits and pieces on the internet whenever you need it. You won’t have all the information you need all in one place: I think this is a good thing and more representative of what it’s like to be a programmer on the job. If you’re not used to taking the initiative to find a new tool or feature of a particular programming language, sites like TopCoder and HackerRank can make you feel like you have little direction. If you feel this way, I encourage you to dive in with the mindset that you now have more freedom to choose your direction and how you find new things to learn.

Happy coding!


Image by Alexander Scheffelaar Klots