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.
Комментариев нет:
Отправить комментарий