Get Started with Coding Projects

There’s a lot of information available on how to get started with coding projects in the programming language of your choice and how to get set up with the tools you need. This was how it worked for me.

Problem

First, things really didn’t work for me because I forgot to consider process before action. I started reading what everyone on the wider Internet thought was the best way to get started with coding projects in general, including the best set up (tools, operating systems, etc). I lacked a framework to filter the bad information from the good, so I emerged with more questions than answers and more confusion than clarity. This was the wrong approach. I wish I could say I quickly realized this.

After recovering from the resultant decision paralysis, I focused on what I did know – my long-term goal (high level) & short-term objectives (specifically what I wanted to do).

Goals

My long-term goal: to maximize the potential for learning & enjoyment in all of my efforts.

My short-term objectives:

  • contribute to an Open Source Software (OSS) project on Github (preferably in Python);
  • fork a project on Github (preferably in Python) and make it my own;
  • play with MySQL;
  • build some simple things with Python;
  • build a web app with Django.

I would use my goal to make future decisions, and the objectives would provide a focus for my research into what tools I needed.

GoalThis means…
To maximize the potential for learning & enjoyment in all of my efforts.Simplicity, security, maintainability in all things.
ObjectiveResources used to determine tools neededTools
Contribute to an OSS project on GithubGithub website, Women Who Code WorkshopText editor, Git, Github
Fork a project on Github (preferably in Python) and make it my ownGithub website, Women Who Code WorkshopText editor, Git, Github
Build some simple things with PythonTalk Python to MeThis resource (a course) provided the guidance on tools and approaches I needed to accomplish this objective.
Play with MySQLLynda, my husbandText editor, MySQL, MySQL Workbench, VM Ware (for the virtual machine I’d run MySQL in)
Build a web app with DjangoTBDTBD

Prioritizing

Once all my short-term objectives were listed like this, I decided to de-prioritize building a web app. While I was excited by this project, the set up would be more time-intensive, would perhaps not allow me to pursue any other projects concurrently, and may actually work against my goal of maximizing potential for enjoyment. I would learn things, but the risk for frustration in the context of concurrently trying to achieve my other objectives was higher than what I was comfortable with.

I prioritized projects that I could start and finish in a reasonable time with a reasonable amount of effort, to increase the likelihood that I would experience positive emotions* around my learning experience** and want to proceed.

*There’s lots of research on the role of positive emotions in learning environments; mostly, they’re a good thing. 🙂
**Because this learning experience was self-guided, I needed to effectively “scaffold” my own content.

I focused on the first two objectives initially, because I needed the same set up for them. I got a Github account, downloaded Git, and chose a text editor. I read the Github documentation and went to a workshop on contributing to OSS; additional questions were answered by Lynda.com.

My text editor had to be intuitive, well-known, aesthetically pleasing, had to have dark theme, cross platform (compatible on Windows, Mac, Linux), a little customizable (supported plugins). Nice to have: browser preview. I was willing to spend a little money; I didn’t care about whether in itself it was open source or proprietary. After using Brackets during years and years of front end tinkering, I switched to Sublime Text.

Once I was set up to work in Github, I realized I had no idea how to choose an open source project to work on and once again started drowning in information. That’s a future post. So I accomplished my second objective and. played around a bit, forked a Javascript project, did a little work on it to get comfortable with the Github interface, and moved down my list.

Next, I worked on the MySQL item. This was fairly straight forward. I used VM Ware for my virtual machine, installed Ubuntu in that virtual machine, and then installed MySQL using the help of a Lynda course, which I then completed. Objective complet

When I got into the Talk Python to Me course, I ended up downloading PyCharm as part of the course. I love PyCharm and currently use that in conjunction with Sublime Text. This course allowed me to get started with coding projects quickly and with the right amount of guidance. At the time of this writing, this objective is still in progress.

Once I accomplish all of these objectives, I will shift into developing a web app using Django.

Final Words/TLDR

  • Figure out exactly what you want to accomplish. Be specific. These are your objectives.
  • Find resources that help you learn what tools you need to accomplish those objectives. (If some or all of your objectives need the same tools, great!)
  • Finish your set up.
  • Start your projects!