Work of William Fiscus III.
Showing posts with label coding. Show all posts
Showing posts with label coding. Show all posts

Monday, October 5, 2015

Author Unknown posted on 2:03 PM in , ,
       Just starting out learning computer programming, it is already clear to me that becoming a successful computer programmer involves thinking in a completely different way than I’m used to.  The thing that interests me the most about programming is the fact that when two people are given the same programming problem, more times than not the end solution may be valid and usable for both people, however the actual code used to achieve the final end results will not exactly match line for line.  This tells me right away that computer programming is art in a way.  A programmer’s code represents his/her mind, and I could only assume this makes one’s code not just unique, but also very personal.

      I would imagine programmers learn through personal experience and extensive research when to use which tools for specific scenarios.  Determining which the best tool for the task is could be learned through experience and/or research as well, however, knowing exactly what you’re trying to accomplish with your code is a great indicator as to what tool or technique should be used.  For example, (Reingold, 1996) “Better sorting methods for algorithms can be designed using the idea of divide-and-conquer, in which a problem is decomposed into sub-problems that resemble the original problem on a reduced scale”.  Reingold uses the merge sort technique which allows sorting by splitting n values into 2 piles of n/2 value, sorting each pile separately, and then merging the two piles into a single sorted pile.  The above sort technique allows for solutions to more complex problems by way of easier calculations, which would in turn, not only be faster and less resource intensive, but more accurate as well.
           
           

References
Reingold, E. M. (1996). Basic techniques for design and analysis of algorithms. ACM Computing Surveys, 28(1), 19. Retrieved from https://search.proquest.com/docview/195184191?accountid=41759


    According to Tanmay Chakrabarty,  “A software development process is a structure imposed on the development of a software product.” (Chakrabarty, 1st paragraph)  The following are the steps of the software development process in order: Gathering requirements, planning, modeling or organizing, tools or techniques, implementation, testing, deployment, and updating.  After seeing how many steps there are involved in creating a successful program my first thought is, is it necessary to complete every step of the process?  I’m eager to create a program and be able to say I made it.  I’m pretty sure the answer is of course every step is necessary.

    After researching where the most time spent as a program developer occurs, I found the following answer: “Understanding code is by far the activity at which professional developers spend most of their time.” (Hallam, 2015) Specifically Hallam describes his time spent in the following areas: 

New Code:                         2%
Modifying Existing Code:     20%
Understanding Code:         78%

     In another article, Phil Johnson states, the following which makes me tend to believe programmers in fact do spend the most time understanding code:

“While some bugs can be quickly found and squashed, others can be maddeningly elusive and can lead to many lost hours of good development time, not to mention a bit of a coder’s sanity.” (Johnson, 2015, 1st paragraph)

   Going back to Chakrabarty’s steps, understanding code and debugging must fit in the testing phase.  If I had to guess, the majority of time spent by coders most likely varies from developer to developer, and project to project.  For example, a solo developer who writes programs for small online enhancement reasons (such as a hacker, creating a password cracker or a chat room scroller) is more than likely not putting the amount of detail and preparation into their projects as say Peter Hallam of Microsoft (who works on the coding for the C# compiler).  I do however agree that all of Chakrabarty’s steps are equally important in the outcome of the program, and do understand that in the real world choices will have to be made as to which of these steps you choose to dedicate your time to.


References
Chakrabarty, T. (n.d.). Explain the steps of software development. - Computer Programming. Retrieved October 5, 2015, from http://tanmayonrun.blogspot.com/2013/01/explain-steps-of-software-development.html
Hallam, P. (2006, January 4). Peter Hallam's WebLog. Retrieved October 5, 2015, from http://blogs.msdn.com/b/peterhal/archive/2006/01/04/509302.aspx
Johnson, P. (2015, September 17). The terrible 10: Programmers' biggest frustrations. Retrieved October 5, 2015, from http://www.itworld.com/article/2984536/development/the-terrible-10-programmers-biggest-frustrations.html#slide4
William Fiscus III 2015. Powered by Blogger.

Popular Posts