Thursday, June 23, 2016

What Developing Means

This post is written in the context of myself working on coding projects alone (and with the help of things like Stack Overflow and Treehouse). I have never worked on a software or web development team and thus cannot write about how that process would work. I think though that the underlying principles would transfer.

For awhile now I never thought much of certain terminology. To me programming, coding, and developing could all be used synonymously, as well as those words' noun counterparts. The past few days, after working on my hockey shootout game more extensively, I have realized that development (of a program) is different, though not totally independent, from coding and programming.

The definition of develop is "grow or cause to grow and become more mature, advanced, or elaborate." Like people. We develop and grow both physically and mentally eventually optimizing ourselves for specific tasks, just like a computer program does. (Not to get all Matrix-y on you)

That makes perfect sense in relation to what I was doing! Previous projects I created, such as a way to organize parts I ordered for work and a simple bouncing ball program, I think I tried to write the whole program at once. I thought of the program as one giant thing and not many smaller parts that worked together to solve a problem. I believe approaching those tasks in that fashion caused me to not understand development the way I should have. As I worked through the hockey shootout game things changed.

I realized that the overall game was made up of many smaller parts. Various functions that performed certain tasks could be called from a main function that would call them in the correct order and frequency. For example in my game the first thing needed is to ask if the user wants to play so I wrote that first. For a short amount of time all the program did was accept the input if the user wanted to play or not. It then had to verify the user entered a 'y'. Then it had to ask what player you wanted to use. To do that there would have to be players to choose from. Thus I had to make a player class that would initialize different players with specific attributes. And so on and so forth.

Continuing to create how the game would function and thinking of new features showed me the value of Trello. I learned about Trello through Treehouse but I didn't realize fully how to use it until I was working on this latest game. As I thought of new features to add I could record it on my Trello board and I could visualize how the game would develop, or become more advanced. I could then sit down later and write it into the program. Thus I continued to add depth to the code, such as a way to select two players instead of one where player two would be the goalie, a way to increase a players stats through using different equipment (its own class), and a way to have a computer goalie make its own moves when a one player game is played.

So what started as one input from the user developed, grew, and became more elaborate. And I was the one that caused that growth.

I think the Karaoke Machine project from the Java course on Treehouse highlighted this process well. The teacher used a Trello board to document what he needed to do, what he was doing, and what had been done so he knew what the program would need to develop and what stage of development it was currently in. It continued to grow. The program would need a song and record aspects of song such as the title and artist. Then it would need a whole songbook, or collection of songs, have a way to add a new song, a way to see the whole songbook, and select a song that someone wanted to sing. He "developed" it.

I think that is a good lesson that course taught and I didn't realize it until I wrote my first program in a way where I could say I actually "developed" it instead of trying to write it all at once.

I realize maybe I should have understood this sooner but I think it's a good point for a new programmer to recognize early. You can think of the end goal of what you need the program to do, but it is usually too difficult to write all at once.

A journey of a thousand miles begins with one step.

I plan on uploading my hockey game to Github soon and I will post on here when I do. I think I have it complete, save for a few features I would like to add but don't know when I will add them.

25 words or less: Write a program piece by piece and build on what you have. It's easier to start small and grow than writing it all at once.

I realize I bent the rules by using a contraction, but I still think it was as succinct as possible.

No comments:

Post a Comment