Soft skills: john sonmez audiobook free download






















Not in just writing code - but in life in general. This is why I wrote this book. To make your software development journey a success - Soft Skills will get you there quickly Notice how many developers get stuck in dead-end jobs, but others reach the top with no effort?

Their secret? This book answers that question. These are the things this book talks about, and can teach you. If I only read this book 30 years ago Will try to convince my son to listen it too. This new edition of the book is amazing. It's very similar to the content in the complete software developer's career guide but aimed more towards soft skills.

Hence the title of the book. Add to Cart failed. Remove from wishlist failed. Adding to library failed. Please try again.

Follow podcast failed. Unfollow podcast failed. Free with day trial. I am getting taught about different languages and stacks.

It is hard as hell but with the learning process I read about in this book I crush the obstacles. I no longer prepare for learning for weeks and months. I developed a learning pace and it is beyond what I thought I was capable of. John has such a down-to-earth style of writing, that I feel like he's talking directly to me. All of his advice is dead on. The chapter on dressing for success in particular provides unique and valuable advice. His concept of "being a contradiction" makes so much sense.

The entire book is filled with great advice but that one chapter is the advice that I need to follow to take my career to the next level. John's book gives developers insight in how to advance your career at worst, and changes your life at best. The parts on how to brand yourself and how focus on a niche that suits you best made my career advance faster and made me receive cool offers in my inbox on a near monthly basis.

Cross-Platform mobile developer. Invaluable advice for any software developer, from entry-level to senior. Honest, no BS advice. Easy-to-understand, accessible, and comedic writing style.

Prototyping Engineer Syracuse, NY. Every university, course, coding bootcamp, etc. John's style of writing is captivating and I definitely felt wiser after reading it. It gave me a more vivid picture of the software industry, made me rethink some of my choices, but most importantly, it filled in some gaps, instantly making me feel more experienced and knowledgeable. A good friend of mine who runs a startup company called Health Hero used this exact approach to get the company accepted to three different startup accelerator programs, which are notoriously difficult to get into.

He simply set up pre-interviews with all the key decisions makers, and by the time he went to the real interview, everyone knew who he was and liked him. Hopefully, by the time you walk into the interview, the interviewer already knows who you are, but either way, you need to know what to do in the interview. Now, obviously, you need to be technically compe- tent to pass a technical interview.

But assuming you have the skills to pay the bills, so to speak, the next thing to focus on is demonstrating confidence in your ability to know what needs to get done and do it. Hiring an employee is an investment.

It costs money and time to hire an employee, and you want to see a good return on that investment. Employees who are autonomous and can do what needs to be done without asking them to do it are employees who almost always add to the bottom line—plus, they are a lot less of a headache, because they require very little of your own resources to manage.

What can you do right now? Start reaching out to employees at different companies in your area and making connections that can help you later. Read and comment on blogs and get to know other developers and even recruiters in your area.

Try to figure out ways to expand your circle. You might want to interview for jobs just to get practice doing interviews—even if you have no interest in a new job right now. Introduce yourself to as many people as possible. There are many profitable ways to put your programming skills to good use. Option 1: The employee This is the default and obvious employment choice that a majority of soft- ware developers pursue. By far the biggest benefit to being an employee is stability.

As an employee, as long as you have a job, you will get a paycheck. You may lose that job in the future and have to look for new work, but you at least have some period of relative stability where you can depend on a set level of income each month.

Being an employee also is an easier road to pursue than other choices because you have a limited scope of responsibility and that path is pretty clear. There is a well-defined process for finding and applying for jobs. As an employee, you also usually have paid vacation and—in the United States at least—some help with medical insurance.

The negative side to being an employee mainly involves your freedom. Table 6. I consider an independent consultant to be a software developer who makes a majority of his or her income doing this kind of work.

This is very different from being a contractor who works for a single client and is paid hourly to do only their work. A contractor is more of an employee relationship. I spent a few years in my career as an independent consultant and I still do some independent consulting work today. I always had the dream of getting out on my own and working for myself, and I imagined being an independent consultant would be the fulfillment of that dream.

I thought about how nice it would be to be my own boss instead of work- ing for someone else, but I had no idea that being an independent con- sultant really meant trading one boss for many bosses.

Not to say that being an independent consultant is all bad. There are some definite perks to not having a single employer whom you have to report to.

As an independent consultant you can set your own hours, for the most part, and you have the freedom to choose what jobs you want to work on—assuming you have enough work to be picky. You can come and go as you please and have a flexible schedule, but clients will expect to be able to get ahold of you and to have their work com- pleted in a timely fashion.

The biggest benefit, by far, is probably earning potential. As an inde- pendent consultant, you can make a much higher hourly wage than you can working for someone else. I equate being an entrepreneur to being a professional gambler. There is very little, if any, stability in being an entrepreneur, but if you hit it big, you could hit it really big. So what exactly does it mean to be an entrepreneur? Your guess is as good as mine. For the most part, though, I consider a software developer entrepreneur to be someone who develops their own business or prod- uct using their software skills.

While an employee and an independent www. I spend most of my time developing training and other products that I sell, either directly or indirectly through partners, to make my living. In fact, this very book is an example of an entrepreneurial effort. Other software developer entrepreneurs operate in completely differ- ent ways than I do.

Some of them form startup companies and look for large funding from outside investors called VCs, or venture capitalists. Others build small software-as-a-service SaaS companies and make their money by selling subscriptions to their services.

For example, the founders of the popular developer training company Pluralsight started out with classroom training. But later, they found that they could do much better by providing a totally online service and then moved into a SaaS model when they started offering a subscription-based service. There is no guarantee of any income at all, and you could go deep into debt chasing your brilliant ideas.

The life of an entrepreneur is filled with rollercoasters. Being an entrepreneur also requires you to invest heavily in other skills that you might not need to worry about as a software developer work- ing for someone else or doing client work.

Entrepreneurs have to learn both sales and marketing as well as many other aspects of business and finance that are critical to being successful. For most software developers, especially when starting out, it makes sense to be an employee. I tend to view being an employee like being an apprentice. The choice is really up to you and you can always switch paths later. Have you ever had to hire a lawyer?

What was the first thing you did? Lawyers have expertise and they usually make that expertise known from the start. There are criminal lawyers, accident lawyers, real estate lawyers, and so on.

In fact, most software developers will completely define their specialization by what programming language they program in. A programming 36 www. It only tells me one tool that you use to do your job. Think about the lawyer situation again.

If you became a lawyer and had no specialization, technically every person seeking a lawyer could be your client. But the problem is that very few people would want to hire a generalist lawyer. Most potential clients would seek to hire a specialist. By being a specialist you have a smaller pool of potential employers and clients, but you become a much more attractive prospect to them.

Let me give you an example. Earlier in my career I billed myself as a software developer who specialized in printers and printer languages. This was a pretty specific specialty. I only had a handful of major employers that I could look for employment with. But can you imagine how difficult it is for a printer manufacturer to find a software devel- oper who specializes in printers and printer languages?

My specific specialty made me very valuable to a small number of potential employers. How many local companies need a software developer who specializes in printers? Fortunately, at the time, I was willing to work just about anywhere in the United States, so the specialty worked out well for me. Now suppose you decide to specialize to narrow down your market and give you a better chance at getting one of those jobs, so you specialize as a Java web developer.

Perhaps this Java jobs Java web development jobs 50 jobs for a specific web Being specific narrows down development your job pool, but increases stack your chances of getting hired. Still plenty, right? Remember, you only need one. Perhaps this knocks your job pool down to 50 jobs. Still plenty of jobs to choose from, but now your chances of getting one of those 50 just went way up, because you now are specifically targeting those jobs with your skills and your message.

Kinds of specialties for software developers There are many different kinds of specialties for software developers. Obviously there are language specialties and platform specialties, but there are also specialties in methodologies and specific technologies or industries. One of the first things you should figure out, though, is what kind of software development it is you want to do.

Do you want to work on the frontend of applications, creating and programming user interfaces? Do you want to work on the middleware of an application, implement- ing business rules and logic? Do you want to work on the backend of an application, working with databases or low-level operations? You can even pick all three and be a full-stack developer, but in that case you should definitely specialize in a specific stack of technologies. For example, a full-stack web developer might specialize in creating ASP.

You can also specialize in areas like embedded systems development where you work close to hardware devices and write code that runs on computers inside of a device. Embedded systems programmers have to deal with a whole different set of problems than web developers do.

Operating systems is another area of specialty, although not very important when dealing with web development. Mobile application development or even a specific mobile operating system is another potential area for specialization.

There is a huge demand for iOS or Android developers who specialize in writing mobile applications for that platform. Some developers specialize really deep and become experts in a very specific platform or framework.

These developers have few potential clients, but they can demand a high hourly rate because of their spe- cialty. Consider the giant Ger- man software company SAP. Some very highly paid developers special- ize in developing customer solutions to integrate with this expensive software system. Picking a spe- cialty often can seem like an overwhelming task. Can you become a person who specializes in solving those pain points?

Whatever you do, make sure you pick some kind of specialty. The size of your market will determine how specific it is, but try to make it as specific as possible.

For example, a good friend of mine, John Papa, used to specialize in Microsoft Silverlight. What about the Polyglot programmer? Whenever I bring up the topic of specialization, I always encounter at least some resistance.

Being a well-rounded and versatile software developer is great. Being able to use multiple technologies and programs and many differ- ent programming languages can only help your career and can make you a much more valuable software developer than someone who only knows one specific technology or programming language.

Even though you may be awesome at all kinds of different technologies and know 50 different programming languages, you still will be better off picking some specialty—even if it changes from time to time. Learn as much as you can and become as flexible as possible, but also have a specialty that makes you unique and stand out. If you have to choose between the two options, start with specialization and branch out later.

Go from broad to specific and see how specific you can get. Try to get an idea of whether or not further specialization would be benefi- cial to you or limit your choices too much. Small companies and startups Most small companies are startups, so they have a very distinctive startup mentality. This startup mentality is usually focused on rapid growth and doing everything you can to get the company to a profitable situation or reach some other pressing goal.

If you just want to sit at your desk and write code, you might not like having to set up a build server or help out with test- ing. In a small company, what you do is often much more impactful. This can be both good and bad. This means your great achievements are magnified, but so are your screw-ups.

Small companies also usually offer much less stability than a larger company, but a potentially bigger reward in the long run.

A small com- pany is much more likely to go out of business or not be able to make payroll and have to cut staff. But at the same time, if you can ride out the storms, being one of the first employees at a small company that has grown significantly can be very rewarding. It can be difficult to reach a director-level position at a big company by climbing the corporate lad- der, but at a small company, your upward mobility is much greater because new employees tend to come in underneath you already.

Many developers work for startups taking low salaries and working ridiculous hours hoping to get rich on the stock options if the company goes public or gets acquired, but I consider that a pretty risky bet.

A better reason to work for a small company or startup is because you like that kind of fast- paced exciting environment and you want to be part of building some- thing and watching it grow. In a medium-size company, roles are usually a bit more defined and you have quite a bit more stability. Your contribu- tions might not cause the company to sink or swim, but they will be noticed. In a medium-size company, slow and steady often wins the race. The fast-paced do-or-die mentality of a startup usually drives decisions quickly and embraces cutting-edge technologies, but most medium-size companies are risk-adverse and move quite a bit slower.

Large companies Large companies are pretty interesting. Each large company is very different from another. Large companies usually have very deep com- pany cultures that permeate every aspect of the company. When you interview for a large company, you usually go through a series of inter- views and follow a very formal process. Cowboys and renegades are usually not welcome in the corporate culture. When I worked for a fortune com- pany, I had many different training opportunities and just about every software product at my disposal.

Many large companies offer career guidance to help you grow and learn within their organization. You also may get the chance to work on some cool stuff. But for many large companies, technological innovations are common. You might not be able to have a noticeable impact on one of these large-scale initiatives, but you could be part of a team that brings something truly remarkable to the market.

This kind of autonomy can be put to good use, though. A final note about large companies: politics. Large companies usually have complex political systems that can rival large governments.

Table 8. These companies are much more likely to have loose soft- ware development practices. On the other hand, companies whose livelihood is based on developing software are much more likely to put a high value on the software developers they hire. The difference between these two types of companies becomes very apparent when dealing with Agile software development methodolo- gies.

Choose carefully These are just some general guidelines about the different kinds of companies you might work for as a software developer, but every com- pany is different. What company size matches your ideal working environment? Year after year they have the same exact job and job title. I wonder if they ever even get a raise. Do you know someone like that? Taking responsibility The most important thing you can do to go up in the ranks at any com- pany is to take on more responsibility.

The right choice—at least in the long term—is almost always more responsibility. Money always catches up to responsibility. What can you do to gain it yourself?

Sometimes you have to go out and look for opportunities where you can take charge of an initiative or head up a project. There is almost always some neglected area of business that you can find to con- tribute your talents to—you just might have to dig to find it. One of the best places to search is in areas that no one else wants to get involved in. But if you can turn those swamplands into fertile ground, you can really show your value.

Another way to indirectly take on responsibility is to become a mentor for others on your team. Volunteer to help the new person get up to speed. Always offer help to anyone who needs it. Eventually this reputation is likely to land you a team-lead position or management position, if you want to go that route. One of the first things I did whenever I started a new job was to start keeping a daily account of where I spent my time and what I accom- plished during the day.

It was a great way to gain visibility and it often appeared that I was much more productive than my peers simply because my manager was hearing about all the work I was doing, but not much about the work other developers were doing.

Not only was this weekly report valuable for my visibility, but it was also an excellent resource for myself when review time came around. I could go back through my weekly reports and pick out my key accom- plishments for the year. When it came time to fill out reviews, I knew exactly what I had accomplished during the year and I had dates to prove it.

One of the best ways is to offer to give presentations on some topic or problem your team is facing.

Pick a topic you can present on and offer to present that topic to your team. You can even offer to do it as a lunch-and-learn where you present an educational topic during lunch instead of on company time.

This is a great way to gain visibility and show how knowledgeable you are in a particular area. Make sure you are seen often. You can, of course, take traditional higher-education courses—espe- cially if your company will pay you to get a degree—but there are many alternative ways to educate yourself that can pay off in the future. You should always be learning something new or advancing your skills in some way.

Sign up for training courses or seek out certifi- cations that will show that you are committed to continually improving. At one point, early in my career, I felt like my upward mobility was somewhat limited, so I decided to start getting Microsoft certifications. I studied hard and took all the tests I needed to get one of the top-level Microsoft certifications. The extra effort showed my manager that I was serious about advancing my career and opportunities were quickly opened for me.

Take some time to learn about leadership, management, and business if you have your sights set on higher-level and possibly executive positions. People like that are a dime a dozen. Instead, be the person who always has a solution to a problem and is able to execute that solu- tion to get results.

Building a reputation for being that kind of person is a sure way to get promoted. What do you do then? What about politics?

What is one concrete action you can take in the next week to become more visible? Decide what would be the most valu- able thing to educate yourself on and create a plan to get that education over the next year. If we are struggling with fear, self-sabotage, procrastination, self-doubt, etc.

Amateurs don't show up. Amateurs crap out. Amateurs let adversity defeat them. The pro thinks differently. Being a professional is all about showing up, doing your work, and not letting adversity defeat you. Being a professional requires you to over- come your vices so that you can sit down and produce the best work pos- sible.

As a software developer, professionalism will be one of your greatest assets. Simply put, a professional is someone who takes their responsibilities and career seriously and is willing to make the tough choices that have to be made—often at their own expense—for the purpose of doing what they know is right. How do you react in this situation? Can you stand up and do what is right, even if it may end up costing you your job? What principles do you stand for?

What quality bar do you personally set for your work? A professional is what we should all strive to be. A professional is someone who may not have all the answers, but thor- oughly studies their craft and seeks to hone their skills. Perhaps most importantly, a professional is consistent—stable. A pro- fessional has a high-quality standard for their work and you can expect a professional to adhere to it each and every day. Table What is it about you and your work that reeks of amateur, and how do you neutralize the odor?

It starts with habits. Habits are an essential part of becoming a profes- sional, because a large portion of what we do every day is completely habitual. We get up, we go to work, and we perform our daily routines each and every day, mostly without thinking about it. If you want to change your life, you need to start with changing your habits. But if you want to become a professional, you need to develop the hab- its of a professional. At one time when I was working on a team follow- ing the Scrum process, where we would have a daily stand-up meeting stating what we had done, what we had planned to do, and what was impeding us, there was one developer in particular who always had a written version of exactly what he was going to say.

Every single day before the Scrum meeting he would prepare his statement, instead of coming up with it during the meeting like most of us did. This is the kind of habit a professional develops. Another strong habit to develop as a professional is time-management skills.

How good are you at managing your time right now? Do you have a good handle on how long routine tasks will take? Get in the habit of effectively managing your time by planning out your day in www. A professional knows what work must be done each day and roughly how long it will take to do the work. These are just two examples of the kinds of habits that are important to develop as a professional software developer. If you want to be a professional, you need to be able to make the correct choices in both of these cases.

Often the technical challenges you face are more objective. There are right ways to solve technical problems. But the ethical challenges can be much more difficult.

One of the biggest ethical challenges software developers face is that of going forward with decisions they know are correct and in the best interest of their client even if making those decisions could jeopardize their own well-being or stability.

In this article, Bob com- pares a software developer to a doctor. He talks about how absurd it would be for a patient to tell a doctor how to do their job. In his exam- ple, a patient tells the doctor that his arm hurts and that he needs to cut it off. It might even mean getting fired, but sometimes www. In the short term, it may be painful, but consistently choosing to do the thing you know is right over the course of your career is much more likely to pay off than the alternative—plus you can sleep better at night.

Sometimes professionals have to make tough decisions about the prior- ities of what they work on. A professional assesses the work that has to be done, prioritizes it, and gets to work. My advice in this situation is to go ahead and do what you need to do to get by, but never let yourself get in this kind of situation again.

When it comes down to it, you have to do what you have to do, but always try to put yourself in positions where you have the upper hand or are at least on equal footing, whenever possible.

Seeking quality and self-improvement As a professional you must strive to constantly improve and increase the quality of the work you produce.

The big mistake many software developers make is to lower their standards when they seem out of reach instead of seeking to improve themselves to rise up to meet the challenge. A real professional has high-quality standards for all areas of his or her work, because a professional knows that, as T. A professional has a good, accurate, and realistic self-assessment of their own abilities—and weaknesses. The way a professional meets the high-quality expectations they have is by continuous self-improvement.

If you want to be a professional, you need to dedicate yourself to always improving your skills and learning more about your craft. Make sure that you have an education plan that you can follow to expand your skills and learn new things that will help you do a better job. If so, why? If not, why not? Observe your day and try to identify as many habits as possible.

List your habits in two categories, good and bad. Now identify some good habits you need to develop. Come up with a plan for developing those hab- its. How would you react? I felt trapped working in the corporate world, and I knew that I could do better if I could just get out on my own.

Now, you may not want to work for yourself.



0コメント

  • 1000 / 1000