Is being a programmer a vocation? Maybe. In
1cloud, we decided to find out how programmers themselves assess their achievements, what qualities they consider to be integral to their work (regardless of the chosen language and specialization) and what advice they give to novice developers.
/ photo by David Joyce CC1. Measuring code in rows
Every experienced programmer knows that the quality of a code is not determined by its length or the time it took to write it,
says George Maina, an employee of the software development company Kopo Koop.
')
Moreover, ideally one should strive to ensure that the code is written as clearly as possible, which should lead to its simplification and, as a result, to a
reduction in its volume. If the two programs function in the same way, then the best will be the one whose code contains fewer lines.
The ability to write short code is often perceived as an indicator of a high level of work. So did Steve Wozniak, who in one of his
interviews (see his 14th answer) noted the ability of the Macintosh team to write short and high-quality code as one of the features of their high professionalism. He is also
credited with the phrase that he could make a code of 10 lines, equal in functionality to a code of 100 lines.
Matthew Fecher, developer of a large number of iOS applications, technical editor of the iPhone for Dummies series and Mac for Dummies, one of the main members of the AudioKit team, also
says that he will be much more impressed with the simplest solution, and complication of the code leads only to an increase in the time spent and the final cost of the project.
2. The desire to learn and the ability to admit mistakes
One of the main qualities required in programming is the desire to learn something new. It is not only about the initial stage, when you need to learn from your mistakes and ask as many questions as possible.
The need for development must be peculiar to the programmer throughout the entire activity,
says Dalien Filiatrault, founder of the Scalable Path development service.
But in training you can use not only standard techniques. For example, in the Czech University of Hradec Kralove, the subject of computer graphics was introduced into the compulsory program to enhance and develop the programming
skills (the curriculum developers believe that computer graphics training can seriously deepen the knowledge of programming and those who subsequently will not associate a career with this direction) .
Matt Mills, an artist, designer and web developer, confirms from his own experience that combining graphic design and programming can greatly
expand the field of professional activity. At the same time, he said, the development of creative thinking through the visual arts pushes for the search for creative solutions in programming. And even the youngest coders can even
learn about
online training in programming through dance . Kids learn the basic concepts of a new science for them, comparing them with a sequence of movements.
Programming is not in vain taught through art, even Donald Knut in the preface to his book “The Art of Programming”
wrote : “Our discussion shows that programming is now both a science and art, and that both these parties complement each other perfectly ... Programming is an art, because it uses accumulated knowledge in the world, because it requires skill and ingenuity, and especially because it creates the beautiful. A programmer who unconsciously feels himself an artist will enjoy what he does and will do it all better. ”
Constant expansion of horizons helps professionals to more easily recognize their mistakes. The developer working for the US Navy, Matt Pickering, is
confident that a growing number of short-term courses promising to quickly teach people how to code from scratch does not always benefit beginners. They get the feeling that after such an “introduction to the topic” they know everything, and they no longer need to deepen their skills - there is the
effect of Danning Kruger, when a lack of qualifications leads to an overestimation of their professional qualities.
3. Focus on results, not on time spent
Quickly writing code does not always mean successfully coping with the task, given that this work consists of many stages: from examining requirements and ending with fixing bugs. Therefore, the main thing is still the quality of the final product.
Peter Nierop, an employee of the Compudivision development studio,
believes that if we are talking about time, it is much more important how much time you can save users from all over the world. And if thanks to you they will do three clicks less, then it is well worth three days of your work (of course, your time is important, but shifting the focus from your efforts to the final result helps a lot to beginners easier to cope with complex and complex tasks).
Application architect at Imagine Communications, Scott Palmer (Scott Palmer),
explains that today's popular online tests cannot adequately assess the quality of the code and the professionalism of the programmer. Of course, there are time frames and deadlines for projects, but to set a goal to spend as little time as possible on creating code is not a good idea and completely unjustified (in terms of result).
This principle is best illustrated by the video game industry (of course, game creation is not limited to the work of programmers and game designers, but their work in this case is key). For example, the release of Team Fortress 2 was announced back in 1998, and the game appeared on the shelves only 9 years later. The wait was clearly worth it, given the fact that they
continue to play it even in 2016. The development of Diablo III took even more, as much as 11 years. At the same time in the year of release (2012), the game broke all records for pre-order. And in 2015, the game was on the 10th place in the ranking of best-selling games (30 million copies).
4. The need for preliminary work
The developer of the Internet provider EarthLink Telecommunication Ashish Chandra, describing his experience,
says that most of his work time and even some of his personal time is spent on thinking about the code and finding the best solutions that can be implemented. And even 50 lines of code a day acquire a completely different value, when they were written very thoughtfully.
Joe Armstrong (Joe Armstrong), who created the Erlang language, when developing software, for example,
preferred to very thoroughly document everything that is possible before starting to write code directly. Very often, preliminary training plays a large enough role and facilitates the work: Ravi Sankar (Ravi Sankar), a software engineer at Microsoft, is
sure that this can reduce or completely avoid subsequent transformations and corrections.
According
to a Hacker News
survey , many programmers still make notes in notebooks and even use flashcards to put their thoughts in order and think through the code before the work itself begins. Some have a separate notebook for each project, others write or sketch ideas in one place, and then translate the entries into a printed form. But they are all sure that this reduces the time spent on the process of writing the code and helps to avoid a large number of errors.
5. Sociability
Communicability has two important aspects - the ability to work in a team and understand customers. But for Chris Kemp (Chris Kemp), the general director of the consulting company in the field of information technology and business systems Paladin Consultants, the
client is also part of the team, so hearing and understanding, agreeing on the project plan and objectives is the key to creating a successful product (although, of course , far from all companies this task lies on the shoulders of the developers themselves).
Matt Pickering, already known to us, believes that more active communication with non-programmer colleagues will help to develop professionalism (we told
here about how to explain some concepts that are popular in programming to them).
Therefore, Damien Filiatro
includes (under clause 2) good communication skills in the list of distinctive features of a high-class specialist. Stephen Wyatt Bush shared in his blog the
10 commandments of a programmer taught by his father, who works at the University of Technology at Tennessee. According to the 5 commandments, special patience should be shown in dealing with people of non-technical specialties, so as not to maintain their stereotype about programmers.
Michael Lyons and Rob Thomsett conducted a psychological
study based on the Myers-Briggs personality typology system (based on the ideas of Carl Jung). They came to the conclusion that half or two-thirds of all programmers in orientation of consciousness are introverts, that is, we are more interested in the inner world of ideas and mental processes than the external world of people and objects.
Two thirds are more result oriented than process oriented, so they prefer to have a clear plan of action. 80% of programmers are more rational than emotional (in a standard sample of different professions, these qualities are distributed 50 to 50), which helps us make decisions, guided by logic, and write good code.
Kevin O'Shaughnessy (Kevin O'Shaughnessy), a web developer from Britain, is sure that determining his personality type contributes to understanding oneself and even analyzing one’s own mistakes in work. Therefore, he suggests that programmers pass the
test itself and become familiar with the description of all types of personality - sometimes this can help in disputes or communicating with colleagues and clients.
John Allspaw, technical director of the Etsy trading platform,
writes in his article that the higher you climb the career ladder, the more demands are made on you - so universal beginner practices can sometimes be useful to experienced developers.
PS And what useful tips for beginners can you suggest?PPS What else do we write in our on Habré: