3 Things I Love about being a Software Engineer
The number of developers increases every year by several million, new services and applications appear. The next founder of a “Make the World Better” startup shares how he will make the world better. The IT world is a complete idyll.
And only the senior developer Vasily — somewhere in a dark apartment, at 3 a.m., under the light of a table lamp — is trying to figure out why the user has been charged twice as much for the service. About what she has certainly reported to technical support, succinctly and precisely describing the problem and the entire development department. So what makes Vasily continue working even at night and still enjoying his work?
1. Programming is Creative
Well, well, I can already hear how a stern man with a huge beard says to me: “Hey boy, programming is a hard technical discipline! There is no place for entertainment and, as you said? Creativity!” And slapping his forehead (and this is during COVID-19!), the man turns around and leaves. So who am I to argue with my fictional interlocutor? Hence, let’s wait for him to leave and continue!
So why is it creative to be a programmer?
As real screenwriters, every day we add new stories to the source code, our actors are our objects. We prescribe the key characters carefully, we pay attention to the little things. Minor characters don’t even always get their own class. However, some programmers are more like detective writers. Their code is a crime scene, but that’s a topic for a separate post.
Or, as real architects, we create huge projects, sometimes unique, but sometimes we borrow ready-made solutions. Hundreds of thousands of messages are sent through the arteries of huge systems, millions of happy users happily share terabytes of personal data. Our systems are scalable and beautiful! Although at times, our projects are more like an old wooden toilet, which does not fall just because it was propped up with a stick. Usually, such projects are well described by the detective programmers in their writings, but today we are talking about something else.
The feeling of beauty is inherent in everyone to one degree or another, but, unfortunately, it is very individual. Therefore, so that the creators do not fight during the next code review, we create coding conventions.
However, the very process of setting standards can raise even more questions. Yet the Internet is already also full of open standards like Google Style Guide, Microsoft C # Coding Conventions, or Style Guide for Python Code, which can be taken as a basis. It would not be superfluous to mention the many wonderful books — “Code Complete” by S. McConnell, “Patterns of Enterprise Application Architecture” by M. Fowler, “The Pragmatic Programmer” by D. Thomas and E. Hunt, — the authors of which not only described good practices but also justified the choice of such decisions.
Programming, of course, is not an entirely creative discipline. But in any case, the feeling of beauty and the desire to look for elegant and beautiful solutions will help you to write clean, stable, and maintainable code.
2. Programming is an Ongoing Study
“Another cliché!”, the indignant reader will shout. “Next you’ll be writing that programmers love their work for remote working and flexible working hours!” Sure! But a bit later. For now, I’ll start with a well-known anecdote:
“What a weak group I have!” A teacher complains after classes to his colleague, “I explain the theorem to them — they do not understand. I explain for the second time — they do not understand. I explain for the third time — I’ve already understood, but they do not understand!”
Well-known anecdote
Software engineering is a fairly young and rapidly developing discipline. New libraries and frameworks are constantly emerging, others are becoming old and “unfashionable”. Of course, to master new knowledge usually, nothing is needed except a computer and the Internet. But in such a rhythm, we manage to cover knowledge only “on the surface”. In this situation, programmers within the same team, community, or forum are forced to constantly exchange knowledge by asking questions and answering those of their colleagues. Companies also encourage employees to participate in various courses and conferences.
It is not less important to share your knowledge yourself, for example, giving a presentation at a conference or publishing another blog post. As in the anecdote above, this allows you to understand much deeper into the topic of interest.
You can participate in the on-boarding of new specialists who come to the company. This will not only help you to better understand how the project works but at the same time to instantly establish trust and show who is the daddy on the project.
The development process is not only about writing code and moving tasks in JIRA but also about interaction with specialists, including those in related fields. If you want, you can always try to do front-end or back-end development, learn more about DevOps, or do machine learning.
Moreover, being an applied discipline, programming allows you to cover not only the technical aspects of development, but also to study business models.
As noted above, technology and knowledge are constantly becoming obsolete. That is why it is important to build your knowledge on some basis. Any technical solution is some kind of algorithm. Any models are described by some kind of data structures. For example, reading “Introduction to Algorithms” by T. Corman, “The Art of Computer Programming” by D. Knuth, “Data Structures and Algorithms” and “Design and Analysis of Computer Algorithms” by A. Aho, D. Ullman and D. Hopcroft will give you at the initial stage much more than studying the specification of the next library, it will allow you to find optimal solutions regardless of the language or framework.
Of course, the continuous learning can be demotivating and exhausting, but it promotes continuous development and keep your mind focused.
3. Remote Working and Flexible Working Hours
A seashore. The light sea breeze blows over your face. The clock shows 2 p.m., which means it’s time to start the working day! One hand rests on the keyboard, the other holds a refreshing cold cocktail. At this point, you wake up…
Of course, remote working and flexible working hours have nothing to do with lazy keystrokes while lying on the beach and require a certain amount of self-discipline. But how much more enjoyment can you get from a colleague’s presentation while munching on a sandwich! He no longer looks like a boring donkey, slowly switching slides. And together with a beer — any presentation will sparkle with new colors! (But we are still serious people and do not allow ourselves that. Never. That’s just not nice.)
Working from home can save you tons of time. Even if the one-way trip to work takes 20 minutes, it takes more than three hours to get to work only during the working week — that’s three visits to the gym! (Two good films.)
At the same time, remote work requires a certain level of comfort. It’s hard to think about work tasks, when a child is hanging around your neck, music is playing in the next room, and you are sent to go to the store — after all, the thinking process is better in the fresh air. Therefore, if there is no way to organize a good workplace in the apartment, then the legs themselves carry their owner to the side of their favorite office every morning.
Flexible working hours are a little tricky. Modern development processes require constant interaction between team members: daily stand-ups, planning, retrospectives. And this is not a complete list of meetings in which one has to participate. You can start your working day at any time, but be so kind as to be at the stand-up at 8 a.m. And already at 4 p.m. you will be planning tasks for the next week with your team. Very flexible!
Meanwhile, there is usually no urgent need to attend all meetings, so there is always an opportunity to agree with colleagues about your absence (and get a good sleep). And usually they try not to stretch out meetings for the whole day, but to group them in a certain time frame, convenient for the whole team.
The flexible working hours option is a really handy bonus that allows you to plan your working day in accordance with your needs and stay as productive as possible.