Skip to main content
Top

2023 | Book

The Rational Software Engineer

Strategies for a Fulfilling Career in Tech

insite
SEARCH

About this book

This book will serve as a framework for you as a software engineer seeking a fulfilling career and wishing to stay passionate and maintain a healthy mental state. It is filled with protocols to achieve effective life-long learning, navigate career development, adapt to changes, maintain work-life balance, and have a healthy lifestyle.

As a successful software engineer you tend to focus on improving your technical skills: learning a new programming language, mastering another tool, or using a library. But you also need to build a solid mental framework that will help you navigate your professional development. You need to develop the skills that will help you be a happy software engineer.

This book will help you if you feel frustrated, unmotivated, or unhappy; lost in your career path; or uncertain if you want to be a software engineer. It can help you deal with burnout, high levels of stress, or depression; or if you struggle to be productive while working from home.

What You Will Learn

Efficiently organize your work dayKnow when and how to seek a new project, company, or careerTake care of your body and mind in a software engineering contextUnderstand what contributes to job satisfaction and how to integrate it into your careerUse non-coding activities for your and your company’s benefitBuild healthy relationships with managers and colleagues

Who This Book Is For

The typical reader of this book is a software engineer who is highly skilled in technical areas but may feel frustrated, unmotivated, or unhappy in their current position and looking for a way to navigate their professional development and find a healthy work-life balance.

The book also will appeal to audiences of other IT or tech professionals, such as project managers, product owners, or designers, who work closely with software engineers and want to understand the challenges they face in their roles. Additionally, individuals who are considering a career in software engineering or development may benefit from the book by gaining insight into the profession and understanding the skills and mindset required to be successful.

Table of Contents

Frontmatter

Passion

Frontmatter
Chapter 1. Job Satisfaction
Abstract
We've seen that being a software engineer is not without its challenges when it comes to achieving job satisfaction. Let's first delve into the universal aspects of job satisfaction before turning our focus onto the unique elements that apply specifically to software engineers and their teams. Additionally, we'll explore ways to enhance these factors and discuss effective strategies for dealing with those aspects that are beyond our control.
Mykyta Chernenko
Chapter 2. Work Time Organization
Abstract
Productivity as a software engineer can be influenced by many factors: the duration of your work hours, your level of focus, and the frequency and quality of your break. A well-structured workday helps to maximize your efficiency and reduces stress and burnout. It includes planning your tasks, setting realistic goals, taking regular breaks to rest, and minimizing distractions. It also involves maintaining a healthy work-life balance and ensuring that your professional responsibilities don't encroach on your personal time.
Mykyta Chernenko
Chapter 3. There Is No Perfect Project
Abstract
Imagine a software engineer you've probably come across. Let's call him Bob. Every day, you hear him grumbling about his team's lack of skill, and dull tasks, and saying things like "This isn't my job!" or "The managers don't know what they're doing!" Sound familiar? Bob seems angry and unhappy with his project, clearly not satisfied. If you ask him if he likes the project, he'll say, "Absolutely not!" Even if you ask him to name ONE thing he likes about the project, he'll have a hard time coming up with something. You might think Bob should change jobs because he's obviously in a bad place. So, he does. He leaves his old job with a string of complaints and starts a new "dream" project. But guess what? After a few weeks, he's back to complaining. The same old story. This happens because the problem isn't the project—it's Bob.
Mykyta Chernenko
Chapter 4. Initiative
Abstract
Taking the initiative at work is something I genuinely enjoy. By “initiative,” I mean bringing new concepts, ideas, methods, or processes to the table or stepping up to tackle some new, exciting, or challenging task that could be put off. It seems that it is not only my observation; this research [1] shows that taking initiative correlates well with job satisfaction. It might not be a direct cause and effect, but it's a winning combo for me.
Mykyta Chernenko
Chapter 5. Burnout
Abstract
Burnout is an overloaded term. I'm sure you've come across many people who casually drop the phrase, “I'm feeling burned out,” into a conversation. Some people might equate it with feeling tired or having a rough week at work. Feeling burnout is not merely being tired because simply working less doesn’t solve the problem. It’s not having a bad week at work here and there either because burnout doesn’t go away on its own after the week. While burnout is not a medical term per se, we should still have a clear definition. So, what exactly is burnout?
Mykyta Chernenko
Chapter 6. What to Avoid in the Long Run
Abstract
There are many decisions that might seem like a good choice in the short run. We've already covered one of these—procrastination. It might seem like a good idea at the moment, but if you consider it from a long-term perspective, it's clearly counterproductive. The best practice is to reflect on where a certain decision will lead you if you continue in the same way for an extended period. Will it contribute to your growth, or will it cause you to stagnate? In this chapter, I will discuss a few such behaviors that are best avoided as they constitute self-sabotaging behaviors.
Mykyta Chernenko
Chapter 7. Career Change
Abstract
Having long-term career goals is useful. They act as a guiding North Star in our career journey, enabling us to periodically assess if we're heading in the right direction. For many professionals, especially those in senior roles, setting dramatically different career goals can be challenging. I know several individuals who, after five to ten years, have reached senior or staff software engineer positions and are content with continuing in that role. They have no desire to transition into solution architects, tech leads, or CTO roles; their passion lies in development.
Mykyta Chernenko
Chapter 8. How to Find a Dream Job
Abstract
So, you're at a point where you're not happy with your current job. It could be that you can't see yourself growing as a software engineer or your company's values don't fit with yours. Maybe your project isn't what you hoped for, and you can't change it, or you're missing things like a good work-life balance, nice relationships with colleagues, or a fair salary. Or, you could be in an even better place: you don’t need to get a new job right now, you're just keeping your eyes open.
Mykyta Chernenko

Mindset

Frontmatter
Chapter 9. Lifelong Learning
Abstract
There are two key reasons to learn: to become a software engineer and to remain a software engineer. The first reason is clear, but the second is a bit more interesting. Software engineering is a field where new information, tools, methods, and languages are constantly emerging. As I write this, new personal coding assistants based on large text models appear all the time, and I believe they'll significantly change how I code a year from now. So, you can either fall behind, stagnate, and gradually become outdated, or you can keep up with changes. Embracing change is vital; without it, it's tough to stay up-to-date.
Mykyta Chernenko
Chapter 10. Collaboration
Abstract
In most workplaces, we seldom work alone. We interact with teammates, collaborate with other teams, report to managers, and communicate with clients, among others. Such interactions constitute a significant part of our working hours. Therefore, it is crucial to establish nourishing, mutually beneficial relationships with our coworkers. Not only does this contribute to a more pleasant work environment, but it also aids in our professional growth. As Naval Ravikant once said, "Play long-term games with long-term people… All returns in life, whether in wealth, relationships, or knowledge, come from compound interest" [1]. If we aim to play the long-term game, we must base our progress on solid relationships with the people we work with. So, how do we build good relationships with our colleagues?
Mykyta Chernenko
Chapter 11. Values
Abstract
Writing code can feel like a game. When writing a challenging piece of code, you might find that time flies without you even realizing it. Some coding puzzles can captivate you to the point where you're up late tackling that "one last thing" or find yourself pondering over it during your leisure hours. But what makes it even more fulfilling is writing code for a project that corresponds to your values. It is what differentiates a game for the sake of the game itself and a game with ultimate meaning. And it is also beneficial both for your job satisfaction and productivity [1] because, well, if you care for what you do, you typically enjoy doing it and do it better.
Mykyta Chernenko
Chapter 12. Health
Abstract
Health is the starting point for everything. You can't be productive or feel good if you're constantly exhausted or dealing with a headache, right? For instance, if I don’t maintain a healthy diet, take a break from exercise, face a difficult emotional situation, or lack good sleep, my work satisfaction and productivity take a nosedive. During the height of the coronavirus pandemic, I found myself exercising less, eating poorly, and having disruptive sleep patterns. This lifestyle took a toll on me and led me into such a state of frustration and lack of motivation that my doctor suggested I see a psychotherapist for potential depression. At that time, I was about to relocate, so therapy was put on hold. However, after moving to another country, I realized I needed a change. I delved into health-related literature, tried various approaches, and tweaked my routines in numerous ways. When I started properly caring for my sleep, physical activity, nutrition, and mental health, the benefits were soon apparent. I regained my motivation and energy, and within six months, I was feeling even better than before the pandemic. This experience taught me the fundamental importance of health and well-being, and I have maintained these practices ever since.
Mykyta Chernenko
Chapter 13. Company Attitude
Abstract
Our perception of our employer and the overall company directly influences our collaboration level and attitude toward the company's happenings. If we handle our managers, other teams, or the company itself with negligence or outright hostility, it can rebound negatively on our motivation and performance. Therefore, let's initially discuss the drawbacks of the "us vs. them" mindset within teams, interteams or departments, management, and the company at large and then explore strategies to foster a positive attitude.
Mykyta Chernenko
Chapter 14. Handling Failures
Abstract
I fail a lot, my assumptions turn out to be wrong, my judgments and predictions may be completely incorrect, my estimates fail, and I produce bugs. It’s the essence of software engineering to try and fail, so there is nothing to be ashamed of.
Mykyta Chernenko

Learning

Frontmatter
Chapter 15. What to Learn
Abstract
We've discussed the importance of continuous learning and improvement as a software engineer. But simply learning for the sake of learning isn't sufficient. It's crucial to focus on learning the right things. So, let's look into how we can make wise decisions on what to invest our time in, in both careerwise and short-term contexts.
Mykyta Chernenko
Chapter 16. Learning Effectively
Abstract
We all learn in one way or another. We are bombarded with new information that is little but resides in our memory. We may read an article here and there, or we may chat with colleagues about something, but it does not seem effective. Most of the learned or discussed facts disappear from our brains in a week or two. But there are good strategies how to maximize the benefit of learning.
Mykyta Chernenko
Chapter 17. Feedback
Abstract
Navigating the software engineering field can be tough. It's important to constantly check if what you're doing is right. Self-reflection is helpful, but it's easy to overlook something from your own point of view. That's why I rely heavily on giving and receiving feedback. Feedback is great for learning, and research shows it significantly boosts learning outcomes [1]. And having a culture where everyone gives and gets feedback helps the team as it builds trust and reminds us we're all here to learn.
Mykyta Chernenko
Chapter 18. Learning from Other People
Abstract
People around us are an endless source of learning. There's almost always something useful that someone else knows that you don't. There are also various strategies and situations that help maximize learning from others. Let's dive into them.
Mykyta Chernenko
Chapter 19. Sharing Your Knowledge
Abstract
Sharing your knowledge is beneficial for others and also a powerful technique to enhance your own learning. Firstly, when you explain concepts to others, you structure them consistently and connect various pieces of knowledge you possess [1]. Secondly, this process can highlight knowledge gaps, especially if you're uncertain or questioned about topics you're not familiar with. Lastly, sharing information boosts retention, similar to the effect of reciting. Let’s talk more about the best ways to share your knowledge.
Mykyta Chernenko
Chapter 20. Learning from Code
Abstract
As a software engineer, one of the most valuable resources for learning is the code itself. It becomes particularly beneficial if the code base you work with is new at least every six months. This ensures you don't become too rooted in one method of coding, a trap that's easy to avoid if you're rotating to a different team within a company regularly or if you're a consultant.
Mykyta Chernenko
Chapter 21. Rotation
Abstract
Long-term focus on a single project or specific area of code can hinder your career progress as a software engineer. Despite potentially gaining considerable expertise in your area of responsibility, your broader knowledge may become limited. Fresh challenges and ideas are vital for continued learning, motivation, and professional growth. The remedy for this stagnation is regular rotation, meaning that you are rotated on a new code base. Although frequently changing code responsibilities or projects might seem counterproductive, I would argue that the benefits of rotation outweigh the drawbacks. Let's discuss the advantages and disadvantages and explore effective strategies for rotation.
Mykyta Chernenko
Backmatter
Metadata
Title
The Rational Software Engineer
Author
Mykyta Chernenko
Copyright Year
2023
Publisher
Apress
Electronic ISBN
978-1-4842-9795-7
Print ISBN
978-1-4842-9794-0
DOI
https://doi.org/10.1007/978-1-4842-9795-7

Premium Partner