Learning Today I had an interesting discussion with someone - TopicsExpress



          

Learning Today I had an interesting discussion with someone about why there are so many features in programming languages. Why there are templates and inheritance chains, anonymous objects and all sorts of other concepts offered up. They thought it was too complicated, had too much syntax, and it only lead to difficulty in debugging. Thing is, software developers are generally creative people, realizing there is always more than one way to solve a problem. In terms of software maintenance and resolving issues, these features are not a hindrance, theyre a boon! When I had to dive headfirst into memory analysis of an Android application, I had to try a few different utilities to help me analyze it. There was a learning curve to be sure, and not every decision was the best one. Slowly, I got to the point that I understood the warning signs. I got used to MAT (Memory Analysis Tool) from Eclipse, learning about DDMS and getting heap dumps (the memory currently being used in an application) manually whenever I thought I needed them. Then, I moved on to automation. Getting heap dumps was a very slow and frustrating process, leaving my mind high and dry while I repeated some mundane task that I had already committed to memory. So, I put heap dump generation into my code, leaving the boring and tedious task to the computer. When I threw that switch, I had heap dumps coming out the wazoo! I had enough data to continue my analysis while also saving my brain for actual analysis. This is a necessary process in software development, we use our minds very heavily throughout the day, wasting them on tedious tasks can lead to frustration. My analysis pointed me at a specific object type that was being created in the tens of thousands. That was ENTIRELY too many. Though there were many solutions to that problem, the one I steered towards involved more analysis of where these objects were being created. While this could be a manual task, involving much more memory than I have room for in my head, I again used my computer to collect and store the data for me. I put in logging, programmatically (read: really really quickly) giving me all the data I needed. Now, I was faced with another task: data analysis. I had ENTIRELY too much data for 1 human to analyze. So, guess what I did? I wrote a program to parse the data for me, taking in the log files, using regular expressions to do the heavy lifting and, in the end, performing what would have taken me a few hours (and probably more than a few errors) in under a minute. I used a computer to help me solve my problems of gathering, storing, and analyzing data. So I could solve a problem in my program. Software developers need to embrace looking at problems from a variety of different angles. It leads to quicker solutions and a bigger toolkit to help us analyze the world around us. This type of learning can be fostered in a variety of ways. When I was in college I had to take math, computer science, and physics courses. They all teach a variety of lessons, but one thing that was common is that they all emphasize looking at problems from a variety of angles. The way I solved my problem above was because of the tools and methodologies I have developed over the years. Calculus allows us to look at data points for a variety of perspectives, sometimes pushing them into higher dimensions to see a problem from a different angle. These are all fundamental practices that allow us to analyze problems more quickly and efficiently than we could before. We look for shortcuts, but we only see them because we understand why things are done in a specific way. We dont handwave over it until we understand it. Its the same way with Common Core, which the following video (the inspiration for this post) describes in good detail. Mathematics helped develop the skills I need as a software developer. It helped me look at problems from different angles, to see new ways of digging out information. I hope more of the next generation can do this, we are in need of good problem solvers. vimeo/110807219
Posted on: Wed, 19 Nov 2014 05:27:08 +0000

Trending Topics



Recently Viewed Topics




© 2015