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

воскресенье, 13 декабря 2015 г.

Focus

There was obviously little activity in this blog during the recent months and I feel great returning here. The blog always gave me an opportunity to step back and think over my actions and choices. However, this year I was so focused on a single thing - my day job - that only one post had made it here. Now I want to check with myself what this attitude gave me and what it stole from me.

Last February my priorities changed dramatically. In about two months after becoming a team-lead I discovered that whatever I was doing was not enough to do good with new duties. I was both overwhelmed with the tasks and problems that fell on our team and saw clearly that we don't perform as good as we could do. Part of my natural response to this discovery was to ramp up the amount of time that I dedicated to the job.

There are lots of reasons why I'm happy with this choice. Firstly, putting more effort into work made me learn a lot and build up new skills in the areas of my responsibility. Because it was my duty to process all the requests that arrived at our queue, I learnt to do this efficiently and obtained a lot of domain knowledge. In other words, it turned out that it's enough to push me into a partially familiar field and show no way out to make me learn it deeply. My expertise grew enormously over the last year and being really focused on the job helped here a lot (yes, there are lots of things in my field that I still don't know or understand not good enough - I'm speaking only of the delta). Moreover, spending a lot of time studying and resolving various issues - some being totally unclear at first - I not only learnt new areas of the domain, but also developed a skill of learning faster.

At the same time, through spending extra hours on duty I came to see clear that sometimes one cannot address problems by simply working harder. When you do a lot and it doesn't help, you start to see deficiencies and acknowledge the need for changes in one aspect of the job or another. A different edge of this same idea is that one cannot do everything on his own. No matter how hard you try, there is always less done than left to do. These discoveries, combined with high exposure to the issues that we face, constant analysis of our work and search for means to improve it - all of these being enabled by having extra time - certainly brought positive results and helped me develop myself both as a developer and as a manager.

On the other side, the same willingness to work more than 5x9 had a negative impact on the manager role of me, because having more time I could in many cases take the responsibility for any new urgent issue or task. While this attitude helped me tackle problems in time and develop my own skills, it hampered the team's collective progress. Any problem brings new knowledge and shows ways for development, so I simply stole a lot of opportunities from my fellow team-members and hampered knowledge distribution.

Generally speaking, while my attitude helped me grow in terms of knowledge, skills and career, it also shadowed both opportunities and problems. It is a very important lesson for me: whenever one decides to tackle a surge in the amount of tasks by throwing in more (his own) manforce, he misses an opportunity to find more intelligent ways to solve problems and to use them as the points of growth .

These are the effects of the extra work on my job, but there are also those that go beyond my office life. First of all, I left the attempts to do programming and software development in the outside - this means all side jobs and projects. While these used to bring new opportunities and ability to study unfamiliar areas, that's not something that I regret much. Being focused on one area allowed me to grow more than attempts to handle both the main job and one or two similarly looking activities would permit.

What I do regret is that leaving less time for myself I started to pay less attention to continued study and learning new things - both around software development and outside this field. I totally stopped exploration of new programming languages and tools and did much less learning in other areas than I used to - namely, I didn't complete a single online course over the recent months. That's certainly something that I shouldn't have forsaken:  these activities could both help me do my job better and make me expand my knowledge and interests.

Another thing that I dislike is that I quit writing for the blog. Here the reason is not only that the blog has become a silent and lonely place - it was never crowded here. The real problem is that writing less I lost the habit to deeply think over whatever I do and to search for interesting problems and irregularities in my activities. Of course, I do reflect on my decisions and actions, but without regular writing I hardly do it in a systematic and efficient way. Moreover, without posting to the blog I avoid sharing my ideas, which is not a big loss for society, but a shameful cowardice of me.

As with any choice, there do exist both positive and negative sides to putting most of your effort into one area of your life. I see these and despite the cons I am going to continue along the road that I started almost a year ago. However, even though I will continue to pursue that sweet feeling of exhaustion, I do need to make certain adjustments to address some of the problems. In particular I will certainly pay more attention to the supporting activities like learning and blogging - these allow to widen perspective and spot issues that stay invisible when you are constantly inside the problem-solving loop. At the same time, staying focused on my job I will have to pay more attention to the things that I am busy with. After all, being totally occupied with the day-to-day activities is a direct way to keep doing wrong things. So I only need more thinking, more analysis, more writing and the same amount of job. Good to know the solution to one's problems, huh?

среда, 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!

четверг, 18 декабря 2014 г.

Running a Podcast for a Year

Last January, together with Michael, we recorded the first episode of the Code Speak Loop podcast. Shortly after that I set up a goal to record 20 to 22 episodes over the year 2014 and it looks like we  are succeeded at it. At the moment, after almost 11 months since publishing the episode 1 we have released 19 shows and will release one more in less than a week. The experience was magnificent!

While this marks a great achievement for us, there are lots of spots where we didn't perform as good as we would like to. For example, we could have released more episodes - 22 or maybe even 24. This a bit more impressive milestone would be easy to reach if we managed to maintain more regular release schedule. Unfortunately, during the last 3 or 4 months we failed to record a number of episodes on time, thus loosing several weeks. This also resulted in larger gaps between episodes - at least once the gap exceeded 4 weeks, which hardly complies with our original plans.

While the lack of discipline that led to these gaps is shameful, it didn't prevent us from reaching the original goal in terms of the number of episodes - both because the goal was quite cautious and, surprisingly, we were not as bad as expected. On the other side, there are things that look much worse. One of the most important problems is the quality of the content that we produced. Sometimes our accents, the level of control over our voices as well as the quality of the language were bad enough to make me seriously consider throwing the recording away. However, I believe that we were right to ignore this problem for some time and push the first episodes in public despite it - over time we did much better. Not only did this allow us to achieve sort of satisfactory quality, it also helped us improve general communication skills significantly and do better at our jobs. I am more than sure that the trainings that I delivered this summer as a part of my job would have been much worse if I didn't spend that much time chatting with Michael, listening to the recordings and preparing them for publication.

However, all the above problems are basically technical ones and I understand how to control them. What bothers me most in regards to the Code Speak Loop is that now, after releasing 19 episodes we don't really understand whether we have any listeners and what do they think about the show if they exist. This sounds stupid, but that's how it is. Thanks to the awesome Signal Leaf podcast hosting service we do know that we have some subscribers, but it is not clear whether these are real people or some sort of a Skynet trying to understand its enemy better.

Furthermore, the fact that over a year we got virtually no comments - both in the blog and on our social media pages - makes me think that the number of our actual listeners is quite close to zero. I know that some of my friends did check out the podcast, some even listened to quite a few episodes and I am extremely thankful to them. Still, because we didn't receive a word from anyone outside our usual circles it feels like we were broadcasting to nowhere. To be honest, this isn't too much of a surprise because, as usual, we avoided going into public and promoting the podcast at all costs. Additionally, the topics that we discussed are maybe too diverse, so we failed to position ourselves for any definite audience. Bad news here is that this is not the first time I make a confession of this kind: earlier this year I wrote that I had completely failed at marketing my Windows Phone app and actually I did this with two of them (the third is coming soon). Even though Michael worked much harder in this area, the efforts were still not enough to attract at least some angry comments to our blog.

Peeking into the future, I can say that whatever we will chose to do about the podcast there are some things that I am willing to change. First of all, we are not going to set any goals for the number of episodes or any schedule for the next year. Sometimes under pressure of our own plans we didn't pay enough attention to the quality of the show and that's not something that we want to repeat in future. I do believe that this was the right thing to do at the first stage when it was crucial to see whether we are able to produce anything at all, but now we can turn to recording only when we want to and have something really interesting to discuss.

Making the schedule less strict will also allow us to focus on getting more guests into our studio. We had several fabulous people this year and the episodes with a guest were definitely a lot denser with content and more focused than the ones with only two of us. Pursuing the same goal of making episodes more interesting and increasing their value, I'd like to put more work into choosing and preparing topics, so let's see what happens.

Finally, we do have to put significant effort into attracting and engaging listeners. Even though for us this is likely the most difficult part, there are some ideas, which may execute well. We don't have much choice here actually: while running a podcast without listeners for a year is possible, we don't look crazy enough to do that for two years in a row.

We wouldn't be willing to continue this enterprise without the support that we got from our friends who listened to the show and gave extremely valuable feedback as well as the awesome guests who came and shared cool stories and valuable experience. Our thanks go to all these fabulous people! And even though our subscribers are invisible, we know someone is refreshing the feed from time to time. So thank you for listening and tune in next year!

пятница, 5 сентября 2014 г.

There Is No Arcane Knowledge

When starting to learn things about the world of computer programming I was sure that there is some piece of knowledge that I had to discover to become an actual programmer. My perception was that there are facts, ideas and thoughts, which were not available to me at the moment due to some reasons, but that once I learn them, it will be the moment when a programmer is born.

In childhood I used to think this way about all the things that people do: for example, I could have learnt some elementary physics in school and thought that while it looks and feels like physics, that’s certainly not something actual scientists work with. I understood that to learn what real physicists do I should go to a university, spend several years and then one day, somewhere around the fourth or fifth year they will raise the curtains and show me what is the science about and how it is totally different from what I imagined.

I don’t know whether such mindset is a common thing for children and youngsters, but it is certainly not a very good thing for students. My confidence that really important knowledge will be opened to me only at some distant point in future was a serious blocker for learning. The problem here is that when you think that the things taught to you are not that important – at least not as vital as something else that you are supposed to face later – you are not going to learn much. Additionally, having to study something useless and feeling obliged to wait for important portions of knowledge leads to frustration, at best. What’s more, the feeling that I will be taught crucial stuff in future made me believe that the only thing that I must do is waiting, while what a student (and as you gradually discover, everyone) has to do is actually learning – that is trying to do things, asking questions and looking for answers everywhere their mind can reach.

This way, it turns out that the most valuable thing that I learnt in the university, while trying to become a programmer, is that there is no arcane knowledge, which someone is concealing from me. In other words, there isn’t a piece of any particular science or profession that one has to wait to learn and that, when finally discovered, turns the student into a professional, be it a programmer or a physicist. Instead, there are lots of details behind each and every subject and each of them might seem lacking significance, not important or even irrelevant at some moments. However, the truth is that one has to study as many of these details as possible to get a feeling and to draw some unifying concepts from the experience, which means understanding what one is learning.

Once I have come to appreciate this obvious idea the game has changed and it felt like lots of doors opened, letting me learn whichever subject I found worthy. It suddenly appeared to me that the only blocker to learning new ‘real’ stuff is the limited time that one can devote to it – apart from that you can go anywhere and study whatever you wish. A good finding, ain’t it?

The nasty part is that I still sometimes have to remind myself that there is no knowledge that someone is trying to hide from me, preventing me from being a better programmer, advancing from a junior to a senior position and so on. As before, I sometimes find myself thinking that one day I will learn the last piece required to be a great programmer and will finally turn into one, although I have already got used to telling myself that becoming a better programmer is not about studying a certain amount of required things. I will keep facing the idea that something is not available to me yet, but, unlike with my first years at the university, now I know that the reason is not that the knowledge is hidden, but that I didn't try the right things and didn’t ask the right questions yet. Hence, I should keep asking new ones and looking for answers to them, because that’s the only way to learn something new. What’s even more important, this process of searching for answers and bringing them to the world is what delivers me the experience and being a professional is more about the experience than anything else.

This said, eager to become a great software developer, instead of waiting for someone to teach me a magic trick or two I will better sketch some design diagrams and put together a bit of code – that seems to be the only reasonable way to achieve my goals.


четверг, 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!

понедельник, 6 января 2014 г.

EOL: 2013

It is the beginning of January now, which means that it’s time to look back and see what has been done and what I failed to do over the last 12 months. As with any year in our life, during the last one I witnessed the appearance of new things and the start of new activities – many of them I will carry through 2014 and maybe even further. On the other side, there are things that I had to leave in 2013 either because I have chosen to do so or due to the reasons less dependent on my short term decisions and determined mostly by the nature of the events. Both what I left and what I take with me will influence my future life and is important when looking ahead.

среда, 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.

вторник, 30 июля 2013 г.

Regularities


Recently I came across an advice on blogging by John Sonmez – he recommends those willing to maintain a personal blog to post there regularly – best of all, according to a strict schedule. As a mature blogger and, at the same time, an athlete, he definitely knows what he’s talking about. On the other hand, in the last post I mentioned that employment made my life more ‘scheduled’ in a way that seems positive to me. This makes me search for some reason making regularities desired for us and helpful in achieving our goals.

First, it is easy to note that the things we do regularly determine what we are in the eyes of others. For instance, you are considered a software developer if you devote several days a week to software engineering activities. The same way, one is called an alcoholic if and only if they drink a lot of spirits and do that on a daily basis (more or less). However, obviously, John didn’t mean this simple fact – i.e. if you post every day, you are a blogger, period – advising to blog regularly. Similarly, I like the fact that now I work from 11 a.m. till 8 p.m. on average not merely because doing so allows me to deem myself a proper citizen, but because this gives me finer control over my life, and that is what makes following certain patterns in a constant and consistent manner so important.

Actually, regular behavior is what allows for fine control. The nature of this idea can be seen clearly when one views it the way control theorists and machine learners do. For those who build automated systems control is all about minimizing error – the difference between the observed and the desired behavior. What makes the engineering approach so valuable is that it begins with acknowledging the possibility – or, better, inevitability – of errors. The idea to do so is as obvious as different from what people (including me) usually do – when deciding to start something new we tend to believe that we’ll succeed easily and quickly, and the sun will shine. While the latter assumption is certainly true, there is a problem with the former – we do fail.

Let’s follow the engineer’s path: say we prepared ourselves for failing and are ready to go – what does it have to do with regularities? The trick is that to succeed one needs to fail a lot and to do that on a regular basis, thus opening the doors to controlling things. Achieving one’s goals is made possible by the flow of information generated by doing something regularly. Only if you continuously get this information it can help you move closer to your goals. Not only setting up a schedule of blog posts allows one to know instantly when they fail and to react as soon as possible – it permits looking back and understanding the nature of one’s mistakes, making it possible to perform better in future. Furthermore, one shouldn’t forget that we, humans, are in fact sophisticated control systems and behave, to some extent, in the same error-minimizing fashion. When we deviate from a well-established behavior pattern, we tend to return to it unconsciously. That is, we develop habits and this is another reason to evenly divide the way to your targets into carefully defined steps.

Having said this, I can easily explain why getting employed feels so positive to me even if I don’t take into consideration the obvious benefits of a challenging and well-paid job. Surprisingly, the great part is that the job takes a great deal of my time and does that in a regular manner. Combined with the time spent on commuting, having breakfast and lunch, plus some other ‘transactional expenses’, this leaves me with approximately 3 to 4 hours each working day to do some cool and valuable stuff not related to work. Knowing this figure and realizing that it won’t change, I am free from illusions of having a lot of time to tackle everything I want. Even more, whenever (quite often) I fail to spend this free time on something worthy I know precisely how much I lose. With this same principle applying to other resources – say, money – as well, I now have a lot of information to be more manageable.

Keeping all this stuff in my head, I do not search to eliminate any uncertainties and 'free will' completely, since that is both impossible and boring. Still, I believe that in case I want to succeed in something, I should work toward my aims regularly – with close to constant pace and in carefully allocated timeframes. This is almost as important as knowing precisely where I want to arrive.
 

понедельник, 4 февраля 2013 г.

Our Predictions Are Bound To Fail

Some years ago, when I did pay much attention to politics, I have found multiple articles by Valeriy Panyshkin (here is some info about the journalist, alas it's in Russian only), who wrote a lot about politics as well as numerous other problems, which one could see in Russia. Despite the fact, that many of his articles, opening my eyes to the things, which I didn't necessarily want to see, were somehow depressing, I read almost all of them. Moreover, even after I had become less concerned about these things - closing my mind once more - I continued to follow the man's writing. Interestingly, Valeriy gradually switched his attention from politics to a narrower set of issues - he got focused mostly on various problems that children and those who try to help them face in our country. He still highlights many other things too, although, as I see it, now, working with organizations that raise money for healing badly ill children or try to protect orphans' rights, he devotes most of his time, efforts and writing to these particular issues.
 
Recently I have read his article (the link - in Russian too) discussing a set of principles, upon which, according to Valeriy, every charity should base its work. The most surprising thing about the article was the idea that any organization of this kind must aim at ceasing its existence. Although this may seem a bad mission, the idea is quite simple and makes sense when elaborated. Valeriy doesn't claim that every charity should give up helping people and go find a more reasonable niche. What he states is that everyone who works in such a foundation should dream of the day when the problem, that he fights with, is finally solved: a treatment is found, which heals blood cancer in a matter of minutes, orphans receive such a crazy amount of support from government that life is as easy for them as it can be and so on. This way the main purpose of any charity is not only to help people, but to put its best efforts into improving the situation so that one day there will be no need for their help at all. This notion of aiming at becoming obsolete, although looked interesting, seemed to me something local to the field of charities at the first glance. However, it is easy to see that it is inherent (or, at least, should be) to many other kinds of activities and institutions - from medical research centers and police departments to ministries of Justice and parliaments.
 
Because I am a programmer it was particularly interesting for me to notice a trace of this idea in the world of software. First of all, there is a multitude of software development jobs, which pursue a goal of solving a particular problem, and once the solution is brought to life, its consumers, roughly speaking, don't need the awesome guys, who built it. However, this kind of relation between producers and consumers, although widely present in my field, is quite common elsewhere. Maybe its because it looks so usual, that it does not seem that interesting. It stays hardly exciting even if we consider all the benefits that many of us could get in case we did our best to make working with our products and extending them absolutely independent of our own presence. Still, I have finally stumbled upon another idea that looks somehow reminiscent of the principled proposed by Valeriy.
 
There is a system at my university that eases collection and aggregates information about the progress of students in the course of a semester as well as their performance during final exams. As I have undoubtedly mentioned in this blog, my diploma project is going to involve analyzing this data and making predictions based on it. What I want to do is to build a system that is capable of predicting the results of exams for a particular student from their performance during some part of a semester. Such a tool may be useful for faculty staff - for instance, they might want to know who's chances to be expelled are high way before exams. Wait a minute... The people, who teach and do different kinds of administrative work at the university pursue the goal of providing every student with quality education - they barely want anyone of their students to be expelled. So, for what sake would they want my software to say that certain students perform poor enough to fail examination and thus put an end to their education? The answer to this question is not subtle at all, because once you know that someone in your responsibility has serious problems - with study in our case - you gain a chance to help them. Thus, my system is not designed to allow teachers and other faculty staff to concentrate only on those students, who work well, but to draw their attention to those who may fail and to do this before it is too late to change anything. This way I am working on a system that will hopefully predict events that are not supposed to happen thanks to these same predictions. Furthermore, I am quite satisfied with this situation and will work hard to make its failed predictions as precise as possible. Clearly the notion of forecasts, that we make with the purpose of making them fail, is not equivalent to the idea of charities aiming at self-elimination, still I feel there is something similar to the nature of these two things.
 
Not surprisingly, I am not the only one who strives to make precise forecasts to see them fail in the end. The most popular example of applying machine learning techniques, demonstrated in various courses devoted to the subject, is predicting whether a patient is going to have cancer (or has it already.) When such a thing is done by medics outside the lecture-room, their main goal is to save a patient from the disease. The same holds for exploiting data on cardiac arrests or CVAs - healthcare field is rich with examples of this kind, as many other areas are. For instance, analysis of constructions is usually performed to find flaws in them and discover where the thing should be strengthened so that no disaster will happen - not to know where to strike. Aircrafts and vessels are overseen to avoid collisions, which are predicted first. The list is quite long and there is no need to continue it, because my point should be clear already.
 
Actually activities of this kind took place much earlier than the first computer was built. People always tried to foresee things, which they wish didn't happen, and they did this not only because of the desire to know the future, but because they knew that as soon as one is aware of bad things ahead, one can escape or prevent these. So I am not opening something new - I just feel fascinated by the simplest idea that was here since the first days of humanity or even earlier. The invention of computers merely gave us new powerful tools and techniques to foresee things, and it seems astonishing to me, how frequently we try hard to make precise predictions that are bound to fail just because we do succeed.