As the end of every year approaches, we start to reflect back on it. As software developers, our questions can be many, What did I work on? What did I produce? What mistakes I have done, and what did we learn from them. Today, I'll seize this opportunity to write down my thoughts on 2014 and put a little direction for my goals in 2015.
For me, this year was a transformational one on many levels. I joined a fantastic company(wamda.com), working with an amazing team, building promising products and enjoying the freedom of picking the right tools, the best practices and applying them to my workflow every day. Since we operate as a small team, it was not just about programming and churning out code. I was able to widen my horizon by getting involved more in planning, communication, operations, and the full agile development lifecycle. That entailed much more responsibility, and the learning experience was amazing. The early months of 2015 will start bearing the fruits of last year's hard work.
It was a busy year for me, and that is reflected through the few posts on the blog. Despite this low activity from my end, the number of page views increased by a whopping 157%, number of sessions increased by 183%, and number of users increased by 186%, as compared to 2013. Almost all of the traffic was organic. The top 5 articles for this year were:
- A guide to Python's function decorators
- Deploy Django on Apache with Virtualenv and mod_wsgi
- Methods Within Constructor vs Prototype in Javascript
- An alternative to Javascript's evil setInterval
- Javascript URL Object
Technologies, frameworks and tools
Laravel 4
I made the shift from using Code Igniter to Laravel 4 when doing PHP development. It was a much needed one, I'm using this framework mostly for work, and really enjoying its power and elegance.
Angular JS
The world is shifting to building fat client web applications, and demand for Single Page Apps is increasing. Investing time in learning an SPA framework, was a no-brainer. Angular can give you real super powers once you get the hang out of it, building complex client side applications becomes much more structured, maintainable and fun. I was leaning more towards EmberJS yet chose Angular as it seemed friendlier and better documented to start with. In 2015, I'm definitely evaluating Ember and focusing on a single client side framework from there.
Neo4J
In one of our projects, our data was insanely unstructured and pretty dense in relations. The initial architecture was done with MySQL, and then we started thinking that a relational database might not be the right choice for modeling an unstructured graph. That's where I discovered and shifted to Neo4J as our database for that project. The shift was pretty smooth, the project was still in early stages, and we saved a lot of lines of code. I did though underestimate the time it would take us to make the shift, which got reflected into a delay in the development of some features. The advantages that a graph database gave us were probably worth the time, faster development, more expressive queries, and the opportunity to dig deeper into our data in order to extract smarter information. For a better overview on graph databases and Neo4J, I suggest you check out this great summary on The Benefits Of Graph Databases
Elastic Search
Getting into Elastic Search was an important experience for me too. Despite only scratching the surface of what this search engine can do, it was a pretty good introduction to pave the way for digging deeper into implementing search features into projects with it.
Other improvements added to my web development workflow
- Writing SASS instead of CSS in larger projects
- Managing dependencies with Bower
- Automating tasks with Grunt
Projects
When it came to side projects, it was mainly unfinished experiments here and there, either to test or learn something new. I participated in Js13kGames competition and managed to get the 11th place in the mobile category with Jumbit. Jumbit is my second vanilla Javascript game after The Game.
One very important thing I learned this year about projects, is that if you want to accomplish things, you have to get into the habbit of finishing what you start. Instead of pushing 2 small projects online I could have done much more with all the half projects I built, the problem is that I did not commit to getting them online. It doesn't matter how your perception or interest changes towards a project, just finish it and put it online before moving on to the next idea. You'll never know the real value of an idea if no one else sees it or gives you feedback on it.
In 2015 I will do my best to finish what I start, before moving on to the next thing.
Books Read
This year was pretty rich when it came to reading. Introducing audio books to my daily commutes enabled me to get a better understanding of certain books before reading them, this can help a lot in stirring interest to read some books.
I was able to get into the following books:
- The Genius in all of us
- Startup communities
- Where Wizards Stay Up Late: The Origins Of The Internet
- David and Goliath: Underdogs, Misfits, and the Art of Battling Giants
- Javascript The Good Parts
- Secrets of the Javascript Ninja (In progress)
- CODE: Hidden Language of computer software and hardware (In progress)
Health
This year, I got more serious about running; in summer I was training 3 times a week. In November, I participated in the local 10 Km marathon and was able to complete it in around 1 hour. It does not sound much, but definitely an improvement in endurance and fitness over that of the previous year. Exercising has helped me a lot in feeling better, happier and becoming more productive, I would recommend to every programmer out there, to commit to a cardio training habit, running is a life changing habit. In 2015 I'm planning on continuing the training across the whole year, and my target time for the 10K marathon this time is 45 minutes.
What about the resolutions for the new year?
As I compared what I wanted to do in 2014 with what I actually did, I noticed that I did meet some of the goals, while I totally forgot other ones, and instead did different things. I think year-wide goals are just too broad, during a year we develop and change a lot. Views, interests, perception and opinions change throughout the year, sometimes we reach the end with a completely different perspective than the one we started with. That's why I think, planning in terms of quarters might be a much more effective approach. Planning goals for 3 months or a quarter ahead gives much better control and focus over them, not to mention that new goals every 3 months would directly be related to a much more refined image on how the year is going and what's happening in it. I am going to try doing that this year, and see how it goes. As a matter of fact I am currently developing a tool to aid me just in that (details to be posted soon).
That was a brief summary on one of the best years of my life, and I'm really looking forward to the next one. Hopefully, more valuable projects, more productivity and more articles on this blog. What about you? How was your 2014 as a developer? And what are you looking forward to in 2015? Would love to hear your thoughts in the comments. Happy new year!