5 Year Goals

Summary

I’ve heard the key to success is to have a 5 year plan. I suppose the reasoning behind this is that if you look 5 years into the future, then it is enough time to at least get started with a few of those goals. It is somewhat true, I knew in middle school that I wanted to go to college and I worked extremely hard to achieve that goal during high school. I also made damn sure I didn’t have any children during high school and well, that was a bit easier to achieve, sadly.

  1. Comfortable enough with Python to create a project from start to finish with very little to no additional support from reference material.
  2. Comfortable enough with JavaScript to develop WebGL and other solutions using JavaScript with little to no additional support from reference material and tutorials.
  3. Ability to create a GUI project using D programming language and, or Java.
  4. Command of CSS3 and HTML5 to create a web site that is standards compliant with decent to great usability and accessibility.
  5. Projects that include Web based and Software based solutions encompassing bug / project tracking, directory, mobile and Windows application.
  6. Up to a bachelors of Science in Programming
  7. Research and programming AI in both browser games and programming libraries.

I should also add finding a mate, marrying mate and perhaps having a child or two during this time. However, I think just finding someone that I enjoy spending time with is good enough for me during this time period as well. I’ll be 30 years old in 5 years and well, I do hope that many of these goals will be accomplished by then. I had simply 4 goals for the past 5 years: Find a programming job, find a mate, complete at least 2 browser games and buy a house. I only completed two of those: find a programming job and buy a house.

Goals for the Next Month or Two

I plan on starting two projects. The Projile Python project and an untitled Directory project written in PHP using the Fuel Framework. Technically, I’ve been working on Projile and learning more about Python from books and the online reference. Parts of my goal is already being in progress, but I need to focus more on reading, because I don’t want to start a project that will be totally shit and require a lot of rewriting to get the shitty parts out.

I plan on reading the following books:

  • Software Testing (2nd Edition)Read. An interesting book and I learned a lot of the methodology and terminology, but wasn’t really what I was looking for. I think really the gist of the book makes sense I need to focus on testing my code more and satisfying more conditions with my testing. I learned that I simply test to pass and I need to practice test to fail to be a better tester.
  • The Pragmatic Programmer – A classic that I have yet to read. The next book I’ll be reading.
  • The Mythical Man-Month – Another classic that is next on my list to read after the Pragmatic Programmer.
  • Lessons Learned in Software Testing – Started reading this book, but I think I’ll simply go through it slowly and see what I can learn from its contents.
  • Predictably Irrational – Doesn’t really have anything to do with programming per se, but the concepts will hopefully help me market my products better and develop products that people are interested in.
  • Freakonomics – Another marketing book dealing with selling a product and how consumers react. A good book to read and see where the concepts can be applied.
  • Clean Code – A really good book that I started reading, but dropped a few months back. I think I’ll pick it back up when I start reading more books on Agile project management.
  • Expert Python ProgrammingRead. Well, technically, I haven’t finished the book, but I’ve read the important parts and could read the parts I skipped when I need them.
  • Quick Python Book
  • Python Pocket Reference
  • Python Essential Reference
  • Python Algorithms – Really, I think this book will be the next one I start on for learning Python. I need to get in the groove, so to speak, of thinking in the way Python works as opposed to attempting to apply my PHP or Object-Oriented programming paradigms and practices over to Python. I think this is part of the reason I don’t want to start programming python is that I fear it would be the wrong way and I’ll have to rewrite it all. Quite a bit demotivating, but I think once I do get into the Way of Python that Ruby and other languages like Python will come easier and also be able to apply some of the styles from Python to PHP, Java, etc.
  • People Styles at Work – I’m a terrible people person. Along the same lines of “How to Make Friends and Influence People” which I need to listen to again and quite possibility as much as possible. The issue at hand is that I don’t handle people very well and part of my journey so to speak is learning how to treat people with respect, even when I don’t feel like doing so and not burning bridges. My experience with WordPress has taught me some of this the hard way, but the next community I join, I don’t want to go in swing shit and expect to repair bridges down the road. If I join the Trac or Fuel Framework community, then I think this book and others will at least help with getting my point across and hopefully treat people in a respectable matter.
  • Design Patterns – There are quite a lot of books. I’ve already read one book dealing with a few design patterns for PHP. I need to get into the Gang of Four and the other book. There are other books written for Python and I suppose simply generic books like GoF and the other.
  • Algorithm Books – Algorithms are great for not reinventing the wheel and have it suck. Some algorithms are so common that many people have spent years refining them. Learning from them will help me be a better programmer.
  • Math and Scientific Programming – I’m really, really good at math. What I’m not so good at is remembering formulas. I’m planning on reading a few books on the basics Algebra and hopefully work my way up to Calculus and or Geometry. There is a Math and Physics book for game programmers that I think will at least serve as a reference book for some of the more common ones. The problem is that really you need to use them in order to remember them, but I think applying some of the concepts in reporting and statistics will also allow me to create better programs and I need to study more of that.

    Brushing up on the formulas, basic concepts, and more advance concepts will help when I start focusing on AI, which is heavy on math and when I start working on reporting and statistics.

  • Don’t Make Me ThinkRead Yet another area I’m terrible at. I’m not a designer, but I guess parts of my failing is never really focusing on usability. I plan on rectifying that mistake and spending more time creating different prototypes and usability testing until I master enough of it to where I don’t have to spend months to develop something.
  • Web Design Books I may be terrible at web design, but there are concepts and rules that I should be able to learn that will at least get me part way to a decent designed web site that is usable and decent enough to look at to where a designer can come in and make it pretty.
  • JavaScript Books – The problem with JavaScript books is that they don’t go into depth in to the internals of the language. They mostly are a primer of the same topics over and over again. Reading them doesn’t give you the tricks and hacks that the developers of jQuery were able to put together. Most of them don’t even go into that much develop of scoping, it issues, its tricks and workarounds. A lot of the books I’ve read at least barely focus on object-oriented programming in JavaScript, focusing instead on mainly procedural snippets. I’m sure part of my problem was that I never bought an “Advanced” JavaScript book and I hope that these issues I’ve had prior were from the overall past lack of professional and advanced topic JavaScript books. I hope the money I will be spending won’t be going to waste and won’t be a repeat of information I could get with a simple Google search.
  • Agile Project Development – Research for Projile bug and project tracker and well, I should be able to learn a lot and hope to apply some of the concepts to motivate me to work on and complete projects.

Well, I’m not going to spend all of my time reading and even if I did, I doubt I’ll be able to read, comprehend and apply the concepts in the books. I do hope to read as much as possible in these given subjects and actually finish the books in the list. I do like reading and I can always find time to pick up a book and read. I do desire to at least start the directory project and experiment with prototyping some things for Projile.

Next 6 Months

Finish more books and reread some of the books above for a second or third time. It is an ongoing process and something I’ve always attempted, but it is hard to stay with it. If you are reading, then you aren’t programming and you want to be reading when you are programming and programming when you are reading. I think my goal should be to read one computer programming or a book helpful to programming, like math or marketing or how to talk to people and not come off as an asshole a month. So that is 12 books a year for 5 years or 60 books. A completely possible and practical task that will further my knowledge of my field. Of course, I’ll be reading upwards to 20 to 30 books within the first month alone, and hopefully I read more than 60 to 80 books. The field is constantly changing and it is a battle to stay current. For the past 4 years, I’ve been negligent and I feel ashamed.

I want to have both the directory project and Projile project usable to some degree, even if it is simply the installer for both. I’m expecting the directory project to progress a lot faster since it will be using a language I’m extremely comfortable with and with MVC framework that enables rapid prototyping. The scope of the directory project is also limited for now until either I decide to give it away for free or sell it. If I plan on selling it, then I’ll want some funding. I’m probably going to go forward as if it is going to be a service and a paid product.

I at least want to start on the D language project of Minecraft Proxy project sometime within the next 6 months. I’m expecting that the release of 1.8 will push my motivation higher to the point where I either fix the Java version or attempt the D language version. At some point within the next month I’m going to prototype the socket layer of the code and see how well that works. If I can quickly and easily get that working, then it will provide enough motivation for me to focus on the OpenGL and, or Qt GUI layers. I’m hoping the D language version will be smaller, more efficient and faster. I have other plans, but this project is really a side project and I can’t plan on playing Minecraft or I won’t get any of my goals completed.

Next Year

In order to learn Python better, I either need to focus some time on Projile to keep my Python knowledge and experience fresh or I need to alternate between PHP and Python for each project I do. I think that for every other browser game I do, I could alternate between Python and PHP or if I continue to have a PHP job to do all of my hobby programming in Python. I need to get to the point where I have used every built-in module, created modules, eggs, and worked on at least 3 or 4 advanced solutions.

I also need to focus on working on open source projects that have experienced programmers in order to take direction and learn techniques from them. Trac seems to be a good candidate, but I need to see if there are other open source projects that have an established community and join them. It might not even be a web project and I think that might be better.

Sometime Between Year 2 and Year 5

I already have plans to write an Android App and a Windows Phone 7 App. I need to attempt to create a GUI application for Windows, Linux, and maybe Mac at least every other year. I already created one this year, but I’m still pretty novice when it comes to user interface design (the books above as well as future web application projects) and creating an installer. If and when I go back to school, I’ll be learning a lot more of C# and I should be able to apply the concepts and experience I learn in that language to D and Java.

I’ve decided that I’m probably not going to learn a whole lot of C / C++. The amount of time and energy required to get good at those languages probably is not worth my time during the next 5 years or 15 years. Focusing on D should help ease into C and C++. Some of my D programming will involve C programming, so I should pick up C experience, albeit very slowly. It is simply that the web application programming field is so large and is only growing larger in the next 5 years that I’ll probably never have to learn C / C++ and still be able to find enough jobs to hire me in the next decade or two. I do eventually want to learn those languages, but I hope by the time I do, that programming in the language will be so damn simple I’d wonder why I hadn’t done it sooner.

Possibly Related Posts:


Comments are closed.