My Commitment To #100DaysOfCode

If you are in the software development circles,I’m sure you have heard of the #100DaysOfCode. The premise is to code at-least for an hour everyday.

History of #100DaysOfCode

The #100HoursOfCode was started by Alexander Kallaway a self-taught web developer, absolutely passionate about coding and the future of technology.

He started the initiative after he was frustrated with my slow speed of progress in learning to code.He needed  a way to force himself to get onto the right track and stay there.

My Reasons For The Commitment

  1. I want to become a better programmer but I realize that life becomes busy and I don’t practice enough.I always find other things to do rather than code.
  2. I’m taking the challenge to prepare for my certification exam 70-483 Programming in C#
  3. Create an online portfolio

My Commitment

Alexander Kallaway outlines these things that one commits to:

  1. I will code for at least an hour every day.
  2. I will tweet my progress every day, with the hashtag #100DaysOfCode and note which day of the challenge I’m on.
  3. If I code as part of my job, I will not count that time towards the challenge.
  4. Will only count the days where I spend at least some of my time building projects — not the days where I spend all my coding time working through lessons and tutorials.
  5. I will encourage and support at least two people each day in the #100DaysOfCode challenge on Twitter.
  6. I will only skip a day if something important comes up, and when I resume, I won’t count the day I skipped as one of my 100 days.

On top of the above I commit to :

  1. Make a review post of my weekly progress.

That’s my commitment and I’m sticking to it.

 

 

 

Mastery:Learn anything quickly using Feynman Technique

We all faced with the task of keeping our skills up to date,as there is always new technology to learn.

It may be overwhelming to master new concepts. To succeed and keep up with the ever-changing skills climate,one has to develop strategies to learn quickly.

 

What is The Feynman Technique?

The Feynman Technique  is a Mental Model named after Richard Feynman, a Nobel Prize Winning Physicist.Feynman was revered for his ability to clearly illustrate dense topics like quantum physics for virtually anybody.

Feynman came up with what he termed a four-step process to master any concept:

The Four Step Process

1)Pick a topic you want to understand and start studying it.

This is the most important step.Most people don’t master anything because they fail to define what to master.

Feynman advises you to write down everything you know about the topic on a notebook page, and add to that page every time you learn something new about it.

2)Teach it to a child

This step means that you must be in a position to breakdown the concept to an elementary level.Be in a position to explain it in layman terms to a person who has never encountered that concept and understand it.

3)Identify your knowledge gaps

As you progressively study,take note of areas where you struggling.It is pointless to press ahead even if not understanding anything.

Revisit your books,video tutorials or any other form of study material and fill in those knowledge gaps.

4). Simplify and use analogies.

 Repeat the process while simplifying your language and connecting facts with analogies to help strengthen your understanding.

“Repetition is the mother of learning, the father of action, which makes it the architect of accomplishment.

As Feynman illustrates in his mental model, learning can be a lifelong pursuit. This technique is designed to help you study for exams and learn new subjects, but it can be easily adapted to pursue deep work. Dedicating a notebook to a place where your knowledge can grow and evolve your ideas and provide inspiration to continue following a path of ongoing learning critical to the fundamentals of deeper, meaningful work.

 

Free Resources to Learn Software Development

Software Development is a field with a lot of opportunities and an acute shortage of people to fill the vacancies.

The cost of training as a software developer is prohibitively high.

Below is a list of a few online resources to up-skill as a developer without breaking the bank.

1.YouTube

YouTube is a great place to start,whenever you want to learn anything.

There are great channels to learn programming and all aspects of software development.Be it Web development,creating desktop applications,mobile applications.

2.Coursera

Coursera.org is a great resource. You can learn anything from web development,data structures and data science,taught by great schools like Stanford,John Hopkins University . etc

3.Havard CS50

To master Computer Science concepts,I highly recommend CS50.The Harvard free course can be found on platforms like YouTube, Cousera and the course website at no charge.

Additional Resources

To keep the post within reasonable length,i will list a few resources worth checking out.I included code practicing sites as well.

1.Edx

2.Microsoft Virtual Academy

3.Stanford University • Free Online Courses and MOOCs

4 Open University

5.TopCoder

6.Hacker Earth

7.Code Academy

8.Code School

9.Code.org

10.Bento

 

Feel free to suggest more links on the comments below.

Happy coding!

How to Grow As A Self-taught Software Developer

With such a high demand for software developers,comes with the rise in self-taught developers.

Most self-taught developers feel inadequate,compared to  the graduate developers .

So today i will point out a few things you can do to go past your inadequacies and be  a strong developer.

1.Have a Growth Plan

You can’t hit a target you cannot see, and you cannot see a target you do not have.

— Zig Ziglar

To grow you need a plan.

Know who you are  and your limitations and then develop a growth plan,with clear goals,action plans and time frames.

2.Master Computer Science(CS) concepts.

Mastering those makes the developer see the big picture of why we code the way we do and be efficient programmers.

Master concepts like data-structures,algorithms and recursion.

Most self-taught developers struggle with such concepts which stoops them from writing elegant code,which is easy to read and runs faster.

3.Read Documentation 

Most of us developers learn through channels like YouTube,stack overflow.To truly understand your tech stack,read documentation.

Documentation is not as easy to understand, but remember with any growth it’s hard before it becomes easy,keep at it eventually you will get the hang of it and then start reaping the rewards.

4.Find A Code Mentor

Every master was once a protege.To perfect your craft you need a mentor.

Your mentor doesn’t need to be a physical person you meet like everyday.You can follow writings by respected authorities in your field e.g Robert C. “Uncle Bob” Martin.

You can even ask your immediate supervisor to mentor you.

A great way to find mentors is by attending meetups in your area.

5.Embrace the Impostor Syndrome 

I know for most self-taught developers it feels like you in over your head and feel like an impostor,because at the back of your head you fill like you not qualified because of lack of formal qualifications.

Instead embrace that feeling and let it propel you to learn more and be a better developer.

6.Deliberately Practice

Imagine Cristiano Ronaldo practicing once a week or whenever he feels like.Do you think he will be playing at the level he is currently playing?

To be world-class you have to be willing to put in the time,practice those algorithms,puzzles and implementing those data-structures everyday and be deliberate about it.

It wont serve you to be doing the same stuff,playing at the same level,you don’t grow.

Use sites like Topcoder and hackerearth to practice and compete.

7.Teach Others

To grasp any concept,teach it to another person,especially a non-technical person.If you can rephrase it in layman terms,sure you have mastered it.Utilize local meetups,sign up to give a talk there.

If you liked the post be sure to like,share and subscribe to the blog