I wanted to begin a discussion that others can add to about the journey one takes when learning to program / script.
I took several courses in college covering program design, C++, and OO 1 and 2. My goal at the time was not to become a software developer, but just to learn enough to script. After that I picked up Perl, mainly because it was popular at the time and the syntax was close to C++. I used Perl to automate tasks and monitor log files.
Skip forward a number of years. Today, I am learning Python, and, like a lot of others, I’ve taken a entry level course ( Linux Academy ) and have read a couple of beginner books and I am able to script with Python, although, I’ll still learning the language. I’m not writing any OO code or using any advanced features like list comprehensions yet. I’ve got a good handle on the basic data types and I am able to script functions.
This brings me to the main point of this post. Once someone learns the basics of a language, most courses and books do NOT teach you what to do next. The step from beginner to intermediate is left for you to map out. A lot of people will tell you that if you want to get better to script every day. This is most definitely true, but it only transfers the knowledge you already to into experience. This is good, but not enough for me. So, I went on a quest to help me decide, what are my options for progressing to the next step. What I found were topics not related to any specific language. Some of this is obvious, but some of it might not be to some of us.
First, I know about Git, what it is and what it is used for. However, to this point, I have not been using it for my code. Second, I took a look at some of the courses that are part of a Computer Science major. From this I learned that there are algorithms and data structures that are general in nature and not associated with any specific language. Ok, so I need to know some of this.
Next, I learned about software craftsmanship. Learning to code is one thing, learning to write good code, re-usable code, is another. I am now beginning to learn about functions at a deeper level. For example, the parameters passed to a function are referred to as the interface and the standard is to keep the interface as simple as possible. Just as a function should be designed to do one thing and one thing only, the parameters passed should be kept to a minimum. This is referred to as a clean interface. Next was naming standards. This is what I am reading about now. It applies to how and what names are used for classes, functions, and variables.
While I’m still not looking to become a software developer, my current position does require me to write automation scripts and I am working more and more with API’s. Growing and maturing my software craftsmanship will help those that come after me in supporting the code that I write.
I will share my journey here for others to read. I am hoping to hear from others here who have gone down this path before me. Where did your journey take you? What steps did you take along the way?