What I learned from the Hashnode Writing Bootcamp

As an academic and a teacher, I spend a ridiculous amount of time writing. I always believed that I was pretty good at it and always wanted to write even more online. I was enamoured with the concept of technical writing here on Hashnode, but I genuinely had no real idea where to start, what to write about, or how on Earth I was going to reach anyone when I did decide to start scribbling.

To my delight, Hashnode announced a boot camp where budding writers including myself could come together and learn from some of the most experienced and talented writers on the platform. They were ultimately Catalin PitOmotola ShogunleTapas Adhikary, and Victoria Lo, who gave wonderfully insightful glimpses into their writing journeys, their methodologies and thought processes behind each article, and how to fend off the ever-present dragon of procrastination when their motivation levels run low. It was a humbling experience and one I remain immensely grateful for the opportunity to have participated in.

Here are some of the biggest takeaways from the boot camp as a whole that I’m looking to incorporate into my own writing.

Keep it simple, stupid

My writing is often fluffy and elaborate, making it somewhat difficult for second-language speakers of English to read. I’m afraid this is symptomatic of spending so much time in the ivory tower!

Nevertheless, I have made a conscientious effort in my writing to primarily use active voice, as opposed to passive voice, to always explain acronyms whenever I first use them, and to try to structure my writing into clear, easy-to-digest paragraphs with headings and subheadings as appropriate.

Consistency is the key, but value quality over quantity

Write often and write consistently, but provide value in your writing – what can someone learn from you? What unique perspective do you provide? These are all important questions that we can ask ourselves as we decide on a topic to write about and share with the Internet. As someone with a great deal of experience both as a developer and as an educator, I think that this provides me with a unique viewpoint and perspective to share with the rest of the community.

A high quality, consistent blog is an amazing resource for demonstrating not only your commitment to an ongoing project but both your technical and writing skills at the same time.

Branding and promotion

I’m not great at this because I’m not a huge lover of social media – it took a fair bit of convincing for me to come back to Twitter! But in the long run, it cannot be denied that it remains a powerful utility for sharing your writing with developer communities and with like-minded individuals who will find value in your work.

Sharing your writing on other communities such as freeCodeCamp, Dev, and Medium are also options for furthering the reach of your writing, sometimes even opening up paid opportunities, though personally, I prefer that they remain centralised here.

I’ve taken steps to adopt a unique and consistent design pattern in my images and in my blog design using Adobe Spark, so I hope that I reap the benefit of that down the line as I continue my writing career.

Find a niche

Carving out a niche is a great strategy for building a reader base who will repeatedly come back to read what you’ve written about. Whether that’s about web development, cybersecurity, Python scripting and machine learning, whatever. Establish your niche and maximise upon it.

I’m considering giving this a greater deal of focus in the near future, but it’s really difficult when your interests are incredibly broad and you want to write about everything. Perhaps with time, I will naturally establish my own niche and my own audience who will appreciate my perspective and the links between the topics which I write about.

Conclusion

In conclusion, I want to once again thank the amazing folks at Hashnode for running such a well-coordinated and ambitious remote boot camp, and wish them the best of success in the future! I look forward to the post-COVID future when we can look forward to in-person writing boot camps. Perhaps I’ll see you there!

Furthermore, I’d once again like to thank the aforementioned writing veterans for their time, their expertise, and above all their infectious passion and inspiration that they provide to all of us within their community. Thank you!

My strategy for learning a programming language quickly

When I first arrived at my new school, I was completely unaware of what programming language they were using to teach the students – it’s something that is prone to change over time and isn’t usually mentioned on a job spec. Many schools throughout the UK will use Python from start to finish in both a procedural and object-oriented fashion later down the line, whereas some schools are still using Visual Basic. I was alarmed to find out that the senior students use C# – a language I had very little knowledge of and experience using outside of playing with it in Unity. Or so I thought.

This article is all about how I was able to rapidly learn C# and begin adding it to my programming repertoire because I was suddenly in a position where I had to! This isn’t a situation that is unique to educators such as me; as a developer, a system architect, or whatever role you are currently in or aspire to be in, there could be times where you too are forced to rapidly learn a new language, framework, or technology in the face of new circumstances, such as a new client or acquisition, or maybe your boss was just feeling malevolent.

Tip 0) A reminder that the language acquisition overlap is huge

Chances are, what you know already in another programming language will transfer over to a new one that you’re attempting to learn. Core concepts such as variables, classes, functions, arrays, and so on are more often than not going to remain identifiable as you change technology, give or take semantic differences. This is just like how once you learn how to speak another language, you get more efficient at the language learning process.

Granted, some jumps are larger than others, like getting used to semicolons and braces when you’re from a Python background, or entire design patterns such as MVC (Model View Controller) when learning a new framework like Laravel or Rails. Chances are though, you already know more than you’re aware of!

One more thing, please don’t be afraid of admitting you don’t know something! If you’re familiar with Broadwell’s learning competence theory, this is one step closer to mastering something!

Tip 1) Learn by doing

I knew to start writing C# my best bet was to download Visual Studio and get started*, and that’s exactly what I did. I dedicated a few hours to installing the software and building basic programs and algorithms that I knew just so that I could come to understand the syntax and general workflow.

I played around with building console apps, using Winforms to build some basic desktop applications, and when I was ready I decided to start looking around at tutorials online and on YouTube to learn some more complicated functionality, such as accessing databases, accessing and writing to CSV (Comma Separated Value) files, and so on. I remember laughing to myself when I found the StringBuilder functionality was just like the implementation in Java.

You can do as much or as little of this as you want, but I truly believe this is the most effective way to learn it, more so than reading or watching alone.

I realise that this isn’t the only way to develop in C#, especially on macOS or Linux. But this is what we do in my workplace, so it’s how I opted to learn.

Tip 2) Find a good reference guide

(If you want to suggest something to add here, please let me know in the comments!)

I don’t recommend reading textbooks or references from start to finish as an effective guide for learning programming languages. But finding a good reference that you can look at for additional insight is a great way of learning. Here are a few of my favourites for the languages I use most, and they’re completely free (unless stated otherwise):

Multiple / General Purpose

  • Codecademy (JavaScript, C#, Java, etc.)
  • freeCodeCamp (Web Development)
  • The Odin Project (JavaScript, Ruby)
  • General MOOC websites like Coursera, edX, Udemy, and FutureLearn also fall under this category

JavaScript

C Sharp

PHP

Tip 3) Learn from others

Learning from one another is a tried and tested way of aiding you on your learning journey. You’d be surprised what you can learn by sitting down with someone for half an hour when you get stuck. For me, sitting down with my colleagues and having them run through some of the aspects I was unsure about was immensely helpful.

I realise that this isn’t everyone’s cup of tea, nor is it a luxury available to everyone. As a bonus, I recommend giving fellow developers tweeting about the technology you’re learning a follow on Twitter if you use it.

Tip 4) Remember that this is an ongoing process

Don’t be discouraged. Remember, learning is something that developers and other professionals (teachers included!) never stop doing and there will always be gaps in our knowledge. We can’t possibly be experts on absolutely everything, so remember that it’s only necessary to learn what you need – you can always learn more along the way and there’s absolutely no shame in that.

In my experience, smart people are those who recognise that there are things that they themselves do not know.

The smartest people aspire to go one step further and learn what they don’t yet know.

Conclusion

In all, it took me a few days to get comfortable with working in C# and to develop my confidence where I was able to pick apart my learners’ work and debug it comfortably. I realise that I am absolutely not an expert, nor do I claim to be. But I know enough to do my job effectively, to teach it to other beginners, and to start me down the path of continuous learning and improvement in my own skills.

I hope that you enjoyed this piece of writing and that you find it useful whenever you might find yourself needing to learn something in a hurry.