понедельник, 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.

Maybe the most significant event in my 2013 was defending the diploma project in the end of June. Although the event itself took no more than a day – 10 minutes, to be precise, the last 6 years of my life were full with things directly related to these several minutes of presenting yourself to half a dozen professors. That said there is nothing surprising about the fact that the diploma-stuff governed me through the first half of the year. Up to the beginning of June my primary concern was the project devoted to exploring data on the student’s progress in our university. Even though I am not satisfied with its results and quality – I believe I could have done better and gone further – I actually value the event of completing it much higher than the fact of defending it. The possession of the Diploma – a nice blue piece of paper – and the ability to name oneself ‘alumnus’ that it grants are pleasant things, but these are only the surface of results of the job done over the course of several years and what really matters lies under this surface.

Despite having to work on the diploma project during the winter and spring months, I had enough resources for a part time job as well. As said in my resume, I worked on a quite interesting stand-alone project in Java. Since it involved all the beloved complexities of talking to large external systems, dealing with engineering documentation and making the piece of software flexible, it was difficult to get bored with it. Certainly, during the course of the project I was able to learn lots of new stuff and stumble upon problems, which were not familiar to me until that time. For example, it allowed me to get better with Java, made me explore JUnit and JMock testing frameworks, forced to go through complexities of automating build process with Ant and required to solve challenging design problems. The most interesting detail of this job, however, was the fact that all the above automation tools, which feel so inherent to programming for me, were not in use in the department where I worked. This means that I both had to make some incentive to introduce them into my work process and got a chance to show the tools to my colleagues so that they can benefit from them. I am not sure whether they developed a habit of using version control and unit tests on a daily basis, but anyway the experience I obtained is of high value for me and it was great to work with people I met there.

In addition to working on the diploma project and hacking code for the job, in May I managed to launch my first personal web-page. It so happened that until 2013 I somehow avoided any web programming – certainly a stupid thing to do in our time of leaving desktops in exchange for powerful web applications and cloud-based software. The only web-thing, which I did during the course of study in university, was messing with web-services – both talking to existing SOAP and REST ones and creating my own with the help of .NET WCF toolset. Nevertheless, several months ago my desire to intrude to the web grounds became strong enough to meet an idea regarding the content of my site. As a result, now I have a simple page on the web, which holds my name and looks quite nice to me. Although this isn’t a terribly cool achievement, I really enjoy the experience it gave me. There are a number of things one has to do to set up a website, which are not difficult or time-consuming, but you need to do them yourself to know for sure how they are accomplished. I am glad that I have found both time and willpower to explore this field. Beside making me learn how one works with modern hosting-providers and domain-registers, the web-site also allowed to practice Javascript and CSS – the technologies every modern programmer should know to some extent. Even more enjoyable is the fact that I have chosen to write the server code in Clojure, which gave me both the opportunity to play with this nice language and to take some rest from the C# and Java couple.

Speaking of the languages, during the first half of the year I also paid some attention to certifications. In March I got my second certificate from Microsoft, the “C# Programming Language”, and a month later I managed to confirm my skills in another language – English – passing IELTS exam with surprisingly good score. I can’t say for sure whether these certificates themselves helped or will help me with achieving any crucial goals, but it is certain that the process of preparation to both allowed me to get a great deal of new knowledge and explore both C# and English (especially, written) in finer detail. I have heard a lot of stories on getting good scores for IELTS with minor preparation or without any at all from my friends, their friends and strangers – that’s good that folks can perform so well. At the same time, I am proud that this didn’t make me believe that I don’t need to study hard to get certified, because that’s where I benefited the most. I don’t remember whether our HR-manager or my team-lead noticed the certificates in my resume, but I am sure that without preparing for these two exams I would do much worse on the interviews and could well have failed to get my current position.

Since I mentioned the interview, it is a good time to speak of the event that is almost as important for me as finishing the university. This July I got my first full-time job as a programmer in Acumatica. While I used to work part-time and did a couple of stand-alone projects for cash before, the switch from studying and working here and there to having a set of long-term tasks and duties, team and a place in the office is a notable one. Certainly, the key difference with what I used to do before is that the job requires a lot of teamwork and continuous involvement. The tasks that I worked on during past years rarely made me talk to other people except for setting up the goals and showing the results, while now I constantly have to contact various people: teamleaders, seniors, QAs, customers’ developers and QAs and more. The reasons for switching from code to conversation range widely: from clarifying details behind a particular work-item to discussing the concepts standing behind an entire module of our system, explaining the good ways to tackle a particular problem, requesting a feature, understanding what customers want, etc. To be honest, these interdependencies in the organization and beyond its boundaries always seemed to me the key characteristic of a real-world job. Even though I acknowledge that there are dozens of other features, I lacked the job-related interactions with other people and now I am happy to have to collaborate a lot, especially considering the fact that all the folks whom I need to get my job done are amazing people. Beside this, there is a lot of stuff that I love about working at Acumatica: we produce an incredible product that managed to find its way to scores of customers during the last years, we grow, we constantly do our best to get better and make our system the best choice for our customers. All this gives me an opportunity to face a lot of challenges and learn from these, which is made possible by very experienced developers and managers. Moreover, because we build an ERP system, I have to deal with the accounting logic, which sometimes seems to me the least logical thing in the world – a great field to master the skills of understanding the domains and growing business-features.

Returning to my achievements, I also managed to build a web application for my friend in Moscow State University, which is designed to help with tracking some activities at one of their departments. This wasn’t a complex thing, but the fact that I didn’t work much with online applications before made me spend a lot of time on this task and do a great deal of mistakes, allowing me to learn much and widen my skillset considerably. While I reinforced myself in the idea that building a user-friendly, responsive and value-bearing web application isn’t an easy thing to do, on the other side it helped me see that there is no arcane magic about it and what makes it difficult is just the large amount of work that one has to put in. Even though I know that the thing that I have created is not perfect and there are features that will become problems should we decide to extend the application, I am still happy with it and like the result. Maybe that’s the most valuable outcome of the project, because the feeling of satisfaction with my product is one that I get quite rarely. I only hope that it won’t be wiped away the moment we finally deploy the system into production.

One more thing to mention among those, which made my 2013, is Windows Phone development. With all our smartphones and tablets we live in a world of mobile applications making the field of development for mobile platforms a promising one. Because over the last years I developed strong relations with Microsoft software stack there is no surprise that I have chosen to try and create a Windows Phone app – what surprises me instead is the time it took me to adopt a single idea and take it far enough to set up a release deadline. Despite the fact that I have actually failed to deliver the application in 2013, I am still willing to complete the last stages of development and actually bring it to the Marketplace in the first quarter of 2014. Precisely as I expected the most difficult part for me is designing and implementing UI in such a way that it is user-friendly and welcoming. Even though I still have to solve some problems with it, I find mobile applications a good area to practice UI development skills, because due to multiple constraints and well-defined guidelines the task of creating a good interface for such an app looks much easier than, say, the task of designing a beautiful and responsive website. This said I hope that my efforts won’t be ruined and I will end up with important experience as well as my own application shown up in the Windows Phone Marketplace this year.

Above I’ve spoken mostly of my success and achievements, even though these might seem modest. At the same time, every year each one of us faces failures and other events that can’t be classified as success, but are at least as important to personal growth and our future as the achievement of any goal – 2013 was dense in this sense as well. First, as usual I failed to meet lots of deadlines, which reassures me in the idea that I still have considerable problems with both organizing myself and assessing the time requirements behind a particular task in such a way that I can more or less accurately tell when I will be done. Taking into account the speed of our life and my ambitions this is a significant problem, which makes me try hard to improve my skills in the area. On the other side, this year I rejected quite a few interesting opportunities of different kinds. Although this is something different than simply failing or succeeding, the act of deciding not to put effort into something seems to me important enough to be mentioned among the achievements and failures.

One example is that last spring after some struggle I gave up the idea of delivering a Windows 8 application for personal task management. This decision was mostly motivated by the arrival of several quite good applications of the same kind in the store, the lack of time, which seemed to be getting more and more severe while the summer with all the diploma-related stuff drew closer and, most importantly, the act of failing two or three deadlines associated with the project. These reasons don’t make me feel that my decision to give up was a fully conscious and deliberate one, still I try to think of it as of another lesson to learn from instead of a severe failure to regret about.

On the other side after finishing BMSTU I had an opportunity to continue my study somewhere else – for example to pursue MS or PhD degree at some North American university. I spent quite a lot time on weighing different options in this area, picking suitable institutions and clarifying the requirements and details of admission process. Part of this was passing the IELTS exam, although I put considerable effort into other related activities as well. In the end all this led me to picking the path of employment instead of continuing my education abroad. Now I tend to believe that this was the right decision and the satisfaction that I get from my job and other activities supports this belief. Even though I value education and learning high, I am sure that for a person like me some real world experience in the industry is much more important than that obtained through another year or two spent on higher education. Moreover, because online education facilities grow rapidly I can afford myself giving up the idea of taking more courses abroad, because scores of classes from the best universities and tutors are available to me right in my living room. One thing that I do really lose due to this choice is the chance to explore and feel the taste of life in a country like USA or Canada, although I hope that eventually I will be able to get another opportunity to get comparable experience of this kind. At least I see some evidence of the fact that this is possible.

Finally, in September I had an option to dive into another commercial project as a programmer, which looked promising to me. However, after some considerations I decided not to venture, preferring to stick to the tasks that I had on the list already. I can’t say for sure whether picking this opportunity would have impacted other sides of my life like job in a positive or negative way – both outcomes were possible. Nevertheless, at the moment when I had to make the decision I leaned towards the grim view and thus chose to avoid the risk. Although I don’t regret, I tried to prepare myself for another encounter of this kind in such a way that it would be easier for me to pick the right option the next time I come across a chance to create some software for cash.

The last twelve months were long enough to host lots of other events, some of which deserve a separate post or, at least, a paragraph. I managed to exercise some technologies, both new ones and those already familiar to me, and do some courses on Udacity and Coursera, which allowed me to extend my skills and get better understanding of some aspects of my job and life in general. I was persistent enough to undergo several regime transformations aimed at making my life more efficient and being able to do more worthy things, although I feel that I still have to go long way in this direction. Since summer I managed to improve my physical state in one sense and degrade in another – this year I should get better where my performance suffers. I also obtained two new gadgets, both of which serve me well – particularly the Acer tablet that turned out to be powerful enough to replace my old laptop. I read a lot of amazing blogs and watched quite a few videos devoted to software development and to us, programmers. Some of these introduced me to new tools or ideas, while other motivated for working harder – soon I will deliver a list of those, which I find most interesting. Finally, I managed to publish 19 posts in this blog - the number isn’t that high, but it is still a notable achievement for me. Overall, the year was dense with new experience, activities and events to learn from. The 2014 will most likely be at least as good, because I already have a list of well-defined and measurable goals for it – the only thing I have to do is achieve all of them.

Комментариев нет:

Отправить комментарий