It has been approximately 2 months since my last blog post. I haven't written much because I was occupied with a lot of things simultaneously. Included among those was writing my year-end exams (in the Southern hemisphere our academic year-end is in November - although I strongly disagree with the 2-month holiday that tertiary institutions give students after the year-end exams, as we could probably complete 3-year bachelor degrees in 2.5 years and wouldn't be as unproductive as the notion of a 'holiday' allows us to be).
In my journey with Django, I have moved on to Ch10 of the Tango with Django lessons. I would firstly like to thank the 2 authors (if I haven't done so already) as their efforts have really created an understanding of the Django framework that I don't think I would've gained this quickly (there are other good resources out there, but I'm going to declare that the "Tango with Django" tutorial is one of the best out there - from an MVC, Python and 'webapp' perspective).
Coming up to Ch10, I have not only learned an extensive amount of using the framework, but I have also managed to spot trends or patterns in the code itself (maybe because of a statistics background or maybe because the patterns just stand out).
The tutorial itself doesn't deal with more complex issues like webservers or full-on databases (like Postgres), but I would assume that those aspects fall into one of the end-quantiles of the learning curve, after you have already learned so much. Coming from a linux background and working with webservers and databases (PHP and Joomla) I assume it won't be as complex to me as to someone who hasn't dealt with them at all (I'm being a bit over-confident in my abilities there, so I sure hope I don't end up with 'foot in mouth' regret).
Concerning those trends or patterns I mentioned in the previous paragraph, I am beginning to realize that:
Unless you are a pioneer of some coding aspects/language/system or need some really (I mean really) custom setup, a lot of code you write can and should be used elsewhere. Although the DRY principle applies to projects individually, I am pretty sure it applies to multiple projects too, where a lot of pieces of code can be used repeatedly.Although I am stating that rather boldly, I should also mention that after a certain amount of time or certain level of scale (or both), the efforts for improving the project then move to custom matters and other parts of the project that are tied to your framework and project but may not even be written in the framework language (examples being your Apache/Nginx webserver, your Postgres/MySQL database, etc.).
As the sub-topic above (the underlined line) states, I have had to learn a lot of other things that go hand-in-hand with Django. I actually went so far as to research what this "dealing with other matters" means, and I can help you understand it too with these 2 links:
http://en.wiktionary.org/wiki/yak_shaving
http://programmers.stackexchange.com/questions/34775/correct-definition-of-the-term-yak-shaving
The christened term used in the 2 links above is "yak shaving". Although I could rewrite the explanations above, I think you should read those links instead, as they are really interesting and don't require me to yak shave for you to understand their definitions better.
So if you are yak shaving on your journey to being a better programmer or you are worried that you aren't being productive if you copy/paste code that you've written previously, you shouldn't feel any anxiety or concern as the worry is unfounded and yak shaving is beneficial (you may also realize on your webserver yak shave that you prefer SysAdmin work instead of programming). I state this last paragraph partly as a personal reference, as I too had concerns on my journey (mostly the productive part) but the more I dwell on it, the more I realize that even if you get deeper into the code, you should still always try to see the bigger picture or realize that coding is a means and not the end.
Coding is a means and not the end.
I hold the statement above very highly, as I consider myself as much a programmer as an entrepreneur. This is what I plan for my next blog post, as I would like to explain some of the experiences I've encountered between what I call "career coders" and entrepreneurs.
Other updates:
Apart from working with Django, I've recently setup a project management system to help other coders go from the:
var x = 1;
x *2;
print x;
Type of coders to professional programmers that can apply their skills as a trade (either by finding jobs or building their own apps as entrepreneurs). It didn't take that long to setup (again, probably because I am familiar with linux and the Console/Terminal doesn't scare me, so a linux server wasn't as daunting as I initially feared) the project management system and it also has allowed me to explore an alternative option to the git workflow- although the alternative is built on top of version control systems.If you would like more info, take a look here: Phabricator
I would also recommend anyone wanting to run some production code to use a VPS in your first couple of months (especially if money is tight and you don't expect your product to captivate 25 million people in 3 days - which would be a miracle and you'd be hailed a 'genius' on tech-news websites).
Apart from this, I am also planning my next couple of programming journeys, which include: learning test-driven development, adding a frontend JS framework (I was thinking EmberJS) to my skillset and lastly, building a few prototypes.
Maybe 1 or 2 might catch on, and this blog will become insanely popular thereafter (although I do hope Google have built-in some scaling tool if that event does materialize).
Onwards to coding!