<midterm >
Programming at Its Best
The thoughts about programming after an interview with Grzegorz Trzmiel.
<Introduction>
The IT industry is growing at an alarming rate and I think it has crossed many people’s minds whether coding is something that they could start doing as well. However, is it worth all that trouble? Can you make a career out of programming? What parts are actually worth learning? In search of some answers, I talked to Grzegorz Trzmiel, who is currently a programmer at IBM. For this assignment I decided to interview this developer and create a more extensive “reflection post” that, through sharing his interesting experience and knowledge turned out to be a good resource for a programming novice such as me.
<So It Begins>
Grzegorz began his first job while still being a student at Warsaw University of Technology. At a software house, which specialized in IT projects for e-commerce, he worked as a junior programmer and wrote web applications in Java for international banks. He also learned some Clojure and JavaScript while working there. At the office, a great team leader and a high level of teamwork allowed him to develop his first good habits and focus on real-life projects. In fact, it helped him to develop his knowledge to a much greater extent than any of the positions he had during his undergraduate study.
After some time, he joined a hedge fund as a quantitative developer. In this company, he wrote applications trading in short-term contracts on stock exchanges throughout Poland. The position was fully independent; therefore, it was a huge responsibility. Interestingly, he did not only deal with the technical aspects of application development, but also was in charge of the creation of the trading algorithms themselves. After two years, he decided to change jobs and joined IBM in Warsaw. One of the sectors of the company provides analysis of large sets of machine data (logs, metrics, etc.). Every day, an impressive amount of data is being processed. Thus, the team programs and solves difficult, but also very interesting problems.
<Working at IBM>
Next, we discussed the skills needed and a profile of a person who is looking for a position such as Grzegorz’s. He underlined that, even though they do most of the programming in Scala, the company does not require its knowledge during the recruitment process. Special attention is paid to the ability to solve practical problems, knowledge of algorithms and data structures as well as concurrent programming. In fact, they are looking for people who are smart and experienced enough that they could work in different languages, as well as will be able to independently perform some more difficult and unconventional tasks. Personally, Grzegorz considers the essential skills to have as being able to communicate effectively and match your personality to a company’s culture. If someone can’t share his or her knowledge with others or is unable to get along with colleagues, that person will not be a good asset to the team.
Grzegorz considers the act of writing a code as a formal record of the method that is used to solve a problem. Of course, you can do it more or less elegantly and/or properly – it is a form of art. Nevertheless, for Grzegorz, the problems and the process of solving them are the most fascinating. What comprises this, among others, are: the need to understand a domain, analyzing possible solutions and choosing the best one. It should be remembered that truly difficult problems are not solved by a single person, but rather through the act of brainstorming. The opportunity to learn how others approach a given issue or subject their idea to an assessment is something that broadens their perspectives and changes a method by which they face the future problems.
At IBM, Grzegorz has the opportunity to learn from outstanding individuals and work on problems that most companies do not have because of their small a scale. The opportunity to observe the exponential growth of the company in terms of organization and business is also fascinating. He considers such experiences invaluable. However, when asked about something that he doesn’t like about his work, he immediately responded with the word “monotony.” Repeating the same tasks and a lack of growth are something that he can’t deal with. Whenever it starts to get boring at work, he begins to look for new challenges. Grzegorz lives in the belief that his work not only has to provide him with a decent life, but also constantly teach him new things.
<The Programming Languages>
When asked what programming language he thinks should be learned, Grzegorz said that this question can be answered from various perspectives. It would be a truism, for example, to say that before choosing a language one should consider what he/she wants to achieve. Grzegorz is an advocate of choosing the right tool for a specific problem. However, if we are talking about people who just began their adventure with programming, it is good to try a little bit of everything. Only by trial and error you can tell if you like something or not.
Grzegorz also believes that more experienced programmers should learn new languages, because it is often niche novelties that introduce innovations that may reach the mainstream after a few years. There are languages that are not very applicable in the industry itself, but leave a lasting impression on the way a programmer thinks. The knowledge gained during learning is universal and definitely useful in many career challenges.
<Words of Courage>
As for the people who are interested in learning programming, Grzegorz said that there is a lot of work ahead of them, but even when it gets difficult, one should not be discouraged – it is all worth the pain. It should be also remembered that technologies are constantly changing, and continual learning is the basis of this profession. Therefore, you should not get too attached to one programming language. You have to try to master things that are independent of specific technologies: problem solving, algorithms, data structures, or the impact of the computer’s operating principles on an application. You should write as much code as possible, join open-source projects and take part in initiatives such as Google Summer of Code or ImagineCup. It is important to set ambitious goals that will not be limited only to the local environment. Having the skills and experience outside of the IT field is certainly helpful – including communication skills and self-presentation. It is also worth remembering that the best job offers do not appear online, so you should get some networking done, expand your friend group and take care of your name’s brand.
</midterm >