Показаны сообщения с ярлыком plan. Показать все сообщения
Показаны сообщения с ярлыком plan. Показать все сообщения

среда, 31 декабря 2014 г.

5 Types of Goals

This time of the year lots of accountants validate balances in the books of their firms. In quite a similar fashion when December draws to a close my thoughts constantly come to back to the goals that I had set back in January. Seeing how my results of the year vary from area to area, it is quite easy and at the same time interesting to break these goals into categories based on both the degree of success with them and the reasons that stand behind it.

First and most simple, there is a number of things that I wanted to do this year, but didn't even start to shoot in their direction. In some cases I did make initial steps but lacked persistence to see even minor results and gave it up. The failures of this kind are mostly caused by mere laziness. However, sometimes the problem is deeper: many of unachieved goals were not understood and formulated properly. This does actually boil down to laziness, but that's the laziness that occurred back on the stage of planning and prevented me from setting myself up for success. The presence of such failures reminds me that I must put more thought into planning and avoid picking goals, of which I am not sure whether I really want to pursue them and why.

Fortunately, neither of the past years were marked with complete failures only and 2014 is not exceptional. With some of the plans I came very close to the objectives. Even though I fell short of my own expectations in regards to, for example, the number and frequency of posts in this blog, I am still quite happy with the fact that I was regularly working on this goal. The interesting thing about this kind of under-achievements is that they bring me almost as much satisfaction as the act of reaching a target. The only difference is that when I don't manage to fully meet a goal I have to analyze the reasons that stand behind underperforming - mostly to allow for more accurate planning, but also to find where exactly I am inefficient and try to improve on that in the next year.

On the other side, there are some points on my 2014 checklist, which I pursued hard and can easily mark as achieved, but which gave me mostly disappointment. A nice example of a goal of this kind is to accrue a certain amount of savings over the year - I do have this on my list. I was quite disciplined, got some help from outside - particularly, from my employer - and, thanks to that, succeeded at having the desired amount on the bank account by the 31st of December. The problem is that the currency that I used to set the goal and accumulated my earnings - the Russian Rouble - depreciated by more than 30% since the moment when I had prepared my plans for the year. I could lament a lot about the world and Russian economy, in particular, being unfair and make a tragedy of this in dozens other ways, although this would be attributing my own planning mistake to someone else's actions. Even though the goal looked pretty reasonable at the time of setting, it did become 30% less relevant over the course of the year. Despite the fact that this happened due to external events and without much of my own guilt, I should have had some measures of protection against depressions of this kind. Instead, I assumed that once an objective is set I only have to work hard to meet it, but goals may and do lose value over time because both we and the world change, so one has to monitor and adjust them accordingly.

Judging by the above paragraphs one might think that I am mostly a failure, because I either don't achieve my goals or they bring little satisfaction to me. Fortunately, that's not the case and I did proudly check-marked some important points on the 2014 to-do list. These took quite a lot of work and made me feel happy about both putting in all the efforts and getting to the finish line. Success of this kind not only lets me see what I am good at - it also encourages me to continue working simply because I know I am capable of something. Add the feeling of proudness for merely getting planned things done and you'll see that a year worth of time wasn't wasted and opened new roads for the next one.

Finally, there is a type of goal or achievement in my classification that looks quite strange to me. Back in the beginning of the year along with a list of goals I wrote down some thoughts on where I want to move with my job and which new responsibilities I am willing to take. Since I had only vague understanding of what my goals in this area are and how one can achieve them, that was merely a set of ideas with only a few action points, which could hardly lead to any serious changes. Still, despite the fact that this didn't look like a plan at all, by virtue of luck, other people's will and who knows what else, during the year I was moving in the direction defined by these notes and in December found myself far beyond what I could have expected and hoped for in January. Things like this - when I get something that makes me happy without any definite plan - happened to me occasionally, but it is the first time when I had something written down, didn't understand how I can get it and nevertheless got much more. 

Even though the "overachievements" like this do bring tons of happiness and satisfaction, it is also crucial to analyze them carefully once you're done with the celebration. That's a good thing to do because understanding one's strengths helps both planning and working, and, more importantly, because it is useful to know how big is the share of mere luck and colleagues', friends' and relatives'  help in that success.

So, now I have a great basement for building and meeting plans for the next year. I see where I underperformed, what I am capable of and how I can improve my results in certain areas with little effort. Equally important, I know the things, which I shouldn't pursue the next year and also understand how to avoid getting too disappointed about failures, a certain amount of which is inevitable. All this will help me make clearer goals, do better at working towards them, adjust the direction on the way and avoid getting depressed when I fail or find that I have been pursuing the wrong target.

I wish you to set your goals for 2015 and make it a Happy New Year through achieving them!

четверг, 22 мая 2014 г.

You Can Learn While You Are Programming

When entering my sixth year at the university a couple years ago I faced a very severe problem. That was the time when new MOOCs started appearing at the speed of light: Udacity was dense with Sebastian Thrun, Peter Norvig and other awesome folks, while Coursera simply shipped dozens of new courses from major universities each month. The abundance of high quality learning materials as well as the freshness of the idea that you can freely learn whatever you want from the world’s best tutors caught me unarmed and I spent a lot of time just watching what I could learn in addition to actually putting effort into some of the courses. However, gradually a concern started building up in me: I felt like I put all my energy into learning instead of creating something new (this is obviously a fallacy, because I just wasted a great deal of my time on other useless stuff.) At that time I had a part-time job, which made me do stuff, but somehow I still thought that my time, which I could devote to producing new things, is wasted on merely listening to lecturers and doing quizzes and homeworks. Quite quickly, this idea led me to giving up all the MOOCs that I had engaged into and switching my efforts to the attempts to create something worthy for the awesome Windows 8 platform. I ended up hacking a brand new task manager app, which would have definitely become cool, should it ever enter the Windows Store. I really put a lot of time into this thing and pushed it quite far – at least that's what it looked like for me – but all that was not enough to make an actual product of it. Somehow, my attempts to become a producer instead of a student only taught me a great deal of things, but did not end with delivering goods.

These days things look quite different. First of all, I have a full-time job which eats a solid share of my time and energy, but also gives the feeling of involvement into creation of something large and cool in exchange. Besides, over the last months I have built a couple Windows Phone apps to fulfill my old desire to be a creator and deliver content to the public. I also engaged into other activities, which feed on my free time, so little of it is left to learning. However, as one might guess from my long post about MOOCs, this all led me to worrying about the fact that I don’t allocate enough resources to expanding my education, firming its basement and exploring new grounds. From time to time I literally feel the lack of inflow of fundamental knowledge to solidify my education. Not that it prevents me from working or makes my life unbearable, but once or twice a week I do stumble upon the thought that I should spend some time doing online courses, which could fill the gaps in my education and make me think on the problems different from those bothering me in my developer’s life. Looks familiar, huh?

This way I keep oscillating between the two goals – learning more and producing more – and constantly thinking that I don’t work hard enough towards one of them. Honestly speaking, even though this sometimes makes me nervous and angry with myself I am grateful to my subconscious for bothering me. When I lean too much on the learning side, my mind kindly reminds me that there is a lot that a programmer aged 24 can produce to his or her and others benefit in the world, where software brings new opportunities and solves real problems every day. On the other side, once I engage too eagerly into creating (mostly useless) stuff, I soon get reminded that to stay afloat in our rapidly changing industry one has to keep learning constantly and do this not only to be on the front edge of technologies and Javascript frameworks, but also to learn and remember how to learn. For me this latter activity involves exposing myself to some fundamental science and ideas, which can serve as a good basement for applied programming stuff that I need to deliver great software. The problem here is that our time and energy are limited even when we are still young and thus it may seem difficult to do well in both areas. Seriously, if you are a lucky prisoner of 5x9 job and try to, for example, create some lovely mobile apps during your free time, it is hard to stick something like a dense Quantum Physics course into the schedule even if you can attend it in your bathroom or elsewhere. I didn’t manage to do this with Quantum Physics, but I have positive experience with a couple other courses as well as a few tutorials and must admit that it is much easier to combine studying and producing than it might seem at the first glance.

First of all, to be able to both learn and create I absolutely had to set proper goals for a long period of time – at least for the year 2014. In terms of MOOCs I have quite a modest target of passing 5 courses by the end of December. I am not sure if that’s enough to satisfy my appetite for new knowledge, but at the same time I am confident that trying to do more won’t work out well in combination with other challenges that I have chosen to face. For now I have done a course and about a half of another one, which is a bit less than what a uniform schedule would require. Still, I believe I will be able to deliver on my goal, should I increase the pace just a little bit. On the other side, my targets for learning applied stuff like languages, libraries and frameworks are not that measurable and clear, but this is compensated by the way I approach them.

The thing that really helped me learn a lot and keep going with my applications at the same time is a routine that I have developed. On a typical workday before showing up in the office I would usually spend about an hour with my laptop in a coffee-shop and that’s the time that I can devote to doing tutorials on AngularJS or playing with Clojure macros. The trick here is that I know that I can spend my morning either learning some stuff this way or working on a future post for my blog. Since I have a pretty defined schedule for the blog, a lot of mornings are left for studying new tools and that’s just cool. This approach helps a lot because I always have some time to put into “applied education” and in addition to this I also make myself finally wake up and get ready for job before actually appearing at the office.

With MOOCs the story is a bit different: I tend to allocate time for watching lectures and doing related exercises on weekends - particularly because they usually require longer and more focused timespans than just doing a tutorial or hacking some code. The fact that weekends come only once a week encourages me to put some time into a course on Sunday, because I know that if I don’t do this, the next chance will be no sooner than in 5 days. On the other side, because with online courses I am not as rigorous as with morning tutorials and have much more options to start my Sunday, I perform a bit worse here.

So, over the last years I have finally learnt that despite having limited time we still can and should put effort into both creating and learning. Fortunately for the educational side of things, we typically have a lot of time during any particular day that we can’t devote to creative activities, and which can be spent exploring new fields. When one has these periods depends on the person and their daily schedule: for me that’s usually mornings when I am not yet ready to think really hard and produce something. For someone else the best time to study may be, for example, in the evening because one is too tired from job and the whole day of debugging SQL scripts. Identifying these ‘non-productive’ intervals in your schedule and making yourself routinely use them for learning can really help expand your education and develop yourself professionally. On the other side, I feel that the contrast between learning and producing that bothers me so much is to some extent made up. In the end, when striving to deliver something new one will inevitably have to study a lot – I definitely did learn much from my Windows Phone affairs.

So, how do you satisfy your natural need for learning new stuff and balance it with delivering awesome products? What are the routines that help you do both these things and leave some time for entertainment and personal life? Please tell me in the comments – knowing how other people organize their time and work towards their goals can really help others a lot!

среда, 11 декабря 2013 г.

TDD: Tests are for Focus

In recent posts I have written much about testing as an inherent component of the software development process – the last one, for example, was devoted to some drawbacks of having tests. Now, to keep things in balance I will turn to an advantage of TDD which I happen to mention much less frequently than it deserves.