In the book Soft Skills - The software developer's life manual John Sonmez addresses many interesting topics for professional software developers. The book provides practices and techniques which aim to help developers to become a better programmer, a more valuable employee, and a happier and healthier person.
Some examples of topics covered are business thinking, people skills, startup basics, marketing and branding, mentoring, teaching, focus and multitasking, developing habits, salaries and retirement plans, and health and mental attitudes.
You can download a sample of the Soft Skills book.
InfoQ did an interview with John about managing careers, remote working, mentoring, getting more work done, negotiating salaries and positive thinking.
InfoQ: What made you decide to write a book for software developers helping them to manage their career?
John: There were a few different things that influenced my decision.
The first was that I kept thinking about how many things in my career I had learned a little too late and how that if I could go back in time and teach myself the things I knew now, I would have been able to short-cut my career to a higher level in a much shorter frame of time.
I thought that since I couldn't time-travel, the second best thing I could do would be to write down a collection of all of this advice and give it to other software developers who might find it useful themselves.
I also knew that I wanted to write a book, but I didn't want to write a book on a specific technology, because I felt like those kinds of books tend to fade fast. I wanted to write something that would be evergreen and would stand the test of time. I was heavily inspired by books like Code Complete by Steven McConnell and Clean Code by Robert Martin and I wanted to create a book in a similar vein, but focused on soft-skills rather than the kind of technical skills those books teach.
Finally, I felt like a large portion of the career advice out there for software developers today was just plain wrong and short-sighted. I wanted to create a book that focused on developing the whole developer as a means to the end of having a more successful career and ultimately a more successful and happy life.
InfoQ: Specialization is important for software developers. Can you explain why?
John: Sure, specialization is probably the one thing that most software developers are doing wrong that makes the biggest impact in their careers.
The point of specializing is to amplify and increase your effectiveness by helping you to become a big fish in a small pond instead of a small fish in a big pond.
Think of it this way: Who makes more money and is more highly sought after, a general practitioner or a brain surgeon? A brain surgeon is very specialized. That means a brain surgeon will have a lower pool of potential patients, but the brain surgeon will have a much easier time finding the patients that need his or her services and they will pain more money for those specialized services.
The same is true with software development. Most software developers try to be general practitioners because they don't want to limit their options. But, the truth is, most software developers only need to find one job at any given time. Even freelance software developers can only service so many clients. So, but spreading too wide of a net, they actually make it more difficult for themselves to find good matches and to stand out.
InfoQ: In your book you talk about the survival strategies for remote workers. Can you name some of the challenges of working remote?
John: One of the biggest challenges for working remote is one that most software developer's don't expect, and that is loneliness. Because many software developers tend to be introverted, they don't suspect that not having very many human interactions would be difficult to deal with. In fact, before I started working remotely I dreamed about how nice it would be to just not have anyone bother me.
At first this is nice, but after some time, it can easily become the biggest hurdle to overcome when working remotely.
Another major challenge is self-motivation. When you are sitting in an office it is easy to get into work-mode, but at home with a full refrigerator, XBox, television and other distractions, it can be easy to goof-off instead of working. A remote worker has to develop a good schedule and a very strict habit of self-discipline to avoid all the distractions from working at home.
A few others are things like: communication--which can be more difficult when not done in person. Guilt--even when you get more work done, you might feel like you are not getting enough done, since no one can actually see you working. Overwork--when you work from home, you can easily lose the sense of separation from work and home-life and start to feel like you are working all the time.
InfoQ: How can you deal with those challenges?
John: The best way to deal with these problem is to develop a strict routine that you follow each day.
I treat my workday at home, just like I would at the office. This is the backbone that keeps me focused and on task.
I know specifically when I am going to start work and when I am going to quit. I also am aware of how much work I need to get done each day.
I'd also suggest doing everything possible to minimize distractions. Try to work in an isolated area. Use headphones if you need to and don't let yourself do things like watch TV, play games or raid the fridge.
Finally, set up some kind of social network, either with your team or with friends who work from home or even outside of work. Try to have at least a few times a week where you get some quality human interaction. Utilize video chat when possible and even consider joining local community events to help not feel so isolated.
InfoQ: Mentors can help professionals to learn and develop themselves. Can you provide some suggestions how people can find a mentor?
John: I think it all starts with changing the view that many of us have in regards to mentors. There seems to be this idea that you go out and find someone who will be your mentor and from that point forward you are the mentee and they are the mentor.
In reality, it rarely works like that. Do you know anyone who has a formal “mentor?” I don’t. I am sure on rare occasions it does occur, but chances are if you ask someone to be your mentor, you’ll just scare them away.
Instead, a better approach is to go after informal mentor / mentee relationships. Try and seek out people who are already doing what you want to be doing and that you could learn from in one more areas and then follow what they do.
Over time—as opportunities present themselves—find ways to open up lines of communication by commenting on blog posts, sending emails praising something they have done or even offering some feedback or suggestions.
Relationships will develop naturally as you ask questions and provide value and you’ll even learn a lot from just watching what your “mentor” does—even if you aren’t personally working with them.
My biggest piece of advice though, is to think about how your potential mentor will benefit from mentoring you. Are you willing to do grunt work and work as an intern in order to get their advice and guidance? What can you do to make it so mentoring you has a positive impact on their life—very few successful people will spend their time without getting some kind of return on it.
InfoQ: Developers often complain that they are being distracted which is hindering them to get their work done. It can be caused by the environment in which they are working, their colleagues or managers, but as you mentioned in your book it also has to do with focus. Are there things that they can do themselves to become more focused?
John: Focus is as skill that can be developed just like any other skill. The more you work on it the better you will get at it. The more you let distractions into your world and yield to them, the weaker you will become to them.
I’d recommend anyone wanting learn to become more focused to start by trying to develop habits around being more focused. Cutting down on outside distractions is a great place to start, but you also have to cut down on all the internal distractions that cause your mind to wander or break your focus.
When sitting down to work, try to do just one thing. Don’t look at your email or your Twitter feed. Don’t pay attention to anything but that task at hand. Try to work uninterrupted for a set amount of time and then take a break.
This isn’t easy and takes practice, but it is a worthwhile investment. Most people waste more than half of their day, because they aren’t focused. Once I learned to focus, I was able to multiply my productivity by at least 3 fold.
I’d recommend trying out the Pomodoro Technique for practicing focus. It is the primary way I have been able to increase my focus and I still use it just about every day.
InfoQ: Building a routine can also help to get more work done. Can you give an example?
John: Routines help us to not have to waste so much time thinking about what to do and making decisions. I’m really bad a making judgment calls, so I try to pre-make my decisions ahead of time by having a routine.
Things flow a lot smoother when you have a routine, because you know exactly what you are supposed to be doing and when.
Routines also help you build habits and eventually those habits start to run on auto-pilot, which causes them to require less willpower and energy to execute, which means you’ll be able to get a lot more done in a day.
For example, my current routine is to start my week each week by planning out what I am going to do each day on a Kanban board. My routine also involves running three days during the week and lifting weights three days. I also create one blog post every Monday, write an email newsletter to my Simple Programmer list, and record two podcasts during the week.
My daily routine varies based on the day of the week, but it always starts out with planning the day and ends with me walking on the treadmill while reading a book.
I change up my routines and modify them over time, but they are a critical part of my productivity.
InfoQ: I regularly see situations where everybody agrees that actions are needed, but nobody is taking action. Do you see the same? How can you change this?
John: Yes, I see this all the time.
I once heard someone say that you should never come with a complaint unless you have a solution as well, because otherwise it is just whining.
This has stuck with my over the years, and I always try to keep in mind that not only should I not complain if I don’t have a plan, but that when things bother me and something needs to be the done, I should be the one to do it.
The biggest problem though is that we don’t tell ourselves that we won’t take action, instead we tell ourselves that we’ll do it later. It’s important to get into the habit of not putting things off, of assuming that anything you put off till later has a high probability of never getting done.
How many of us say we’ll eat healthy starting Monday, or next week we’ll start going to the gym? Putting off action is the same as not taking action.
If you see that something needs to be done, do it. If you can’t do it right away, take action by planning exactly when it will be done and schedule it in your calendar.
InfoQ: Negotiating salaries is often neglected, although it is important as you stated in your book. Can you explain why and give some advice how to do it?
John: Here is the thing: It’s much easier to get a raise before you get a job than once you are at a job. A small difference in salary can make a big difference over a long period of time.
There are very few people who wouldn’t negotiate the price of a car that might cost them $20,000 to $30,000, but I saw an article recently that said the average software developer salary was approaching $100,000. A 5% increase in salary, is an extra $5,000 a year. Taking the time to learn how to negotiate and negotiating your salary is like getting a free car every four to six years—and it could well be worth much more than that.
One of the best strategies for negotiating your salary is to let the employer name a price first. I’m often surprised how quickly most software developer will cave and name a price or a range, instead of pushing back and trying to get an employer to speak first.
There are some easy and polite ways to decline to give a number when asked, you just have to think a little outside of the box.
One easy way is to simply state that it’s difficult to make a direct comparison between different salaries because benefits and other difficult to quantify things are part of the equation, so you’d rather have them make the first offer.
Sometimes you can even get away with just saying that you’d prefer not to say. Try it, most employers will not pry further. You can even say that it is confidential, because in many cases it technically is.
The other piece of advice I’d give about negotiating salaries is to be aggressive. You are unlikely to have an offer withdrawn just because you decided to negotiate. Many developers are afraid of offending their prospective employer by negotiating at all and just accept the first offer they are given.
When negotiating your salary, you should at least be willing to make one counter-offer and in most cases a second. Going beyond that might have negative ramifications, but two counters is pretty reasonable when dealing with a large amount of money.
InfoQ: There are a couple of chapters in your book about living a healthy life, exercising and loosing weight. What makes you think that software developers should care about this?
John: It’s simple. How we feel about ourselves—and how we feel in general—affects us in all areas of our lives.
You can’t be the best you can be if you are not living a healthy life and taking care of your body. As software developer, we often forget this and can have a tendency to just focus on keeping our minds healthy and not our bodies.
Also, don’t underestimate the power of self-confidence and the effect that the self-esteem of being in shape can have on a person. Just starting to live healthy and working out can really make a positive impact on your life and can open up world of possibilities.
Finally, heart disease is the number one killer in many parts of the world, especially the United States. Why die from early from a preventable disease? Being overweight increases your chances of dying from heart disease by a large amount.
InfoQ: Positive thinking and having a positive attitude can have real tangible effects on the life of people. You wrote about "rebooting your attitude" and "reprogramming your brain" to become more positive. Can you explain how this works?
John: Sure, what we think about ourselves and our reality has on strong influence on both. What I mean by this is that our attitudes and our perceptions of ourselves and the world we live in directly affects our lives in many different ways that we don’t even directly notice.
So, to some degree, what we think becomes reality.
This may seem a little strange, but we see this happen all the time. Think about it, every muscle in your body that ever moves is moved by a though. Sure, you can’t use the force to levitate objects around the room, but your mind controls your body, which ultimately controls your life.
Just understanding this concept is very powerful, but often we have ingrained patterns of thinking that are destructive and can result in negative outcomes for us. Sometimes it is necessary to go in and reboot our attitudes and reprogram our brains for success.
This can be as simple as repeating a positive affirmation every day that eventually seeps deep into your sub consciousness. But, often it involves a more concentrated effort on building good mental habits
About the Book Author
John Sonmez is the founder of Simple Programmer, where he tirelessly pursues his vision of transforming complex issues into simple solutions. John has published over 50 courses on topics such as iOS, Android, .NET, Java, and game development for the online developer training resource, Pluralsight. He also hosts the Get Up and CODE podcast, where he talks about fitness for programmers and the Entreprogrammers podcast, where he and three other developer / entrepreneurs share their real stories of building their online businesses John is a life coach for software developers, and helps software engineers, programmers and other technical professionals boost their careers and live a more fulfilled life. He empowers them to accomplish their goals by making the complex simple.