每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,欢迎关注开源日报。交流QQ群:202790710;微博:https://weibo.com/openingsource;电报群 https://t.me/OpeningSourceOrg

2018年9月16日:开源日报第192期

今日推荐开源项目:《数据库迁移工具 gh-ost》传送门:GitHub链接

推荐理由:GitHub 的 MySQL 在线迁移,正如它的标题所说,这个项目可以让你迁移你的数据库。它在真正的迁移功能之外还提供了迁移测试的功能,如果你是第一次使用这类型的工具,建议先使用测试功能,然后再开始真正的迁移。

2018年9月16日:开源日报第192期

今日推荐英文原文:《What to expect as a software developer》作者:Jack Finlay

原文链接:https://medium.com/@JackWFinlay/what-to-expect-as-a-software-developer-e38b9905f5e9

推荐理由:作为一个开发人员,你肯定会遇上的各种经历

What to expect as a software developer

On the back of my previous article, I want to put forward some experiences and situations you should expect to encounter in your career as a software developer. The life as a developer can be full of fun and excitement, but there are also hard times. Your first accidental commit straight to master, your first failed peer review, your first awkward stand-up. These all form the start of your career, and here’s to that!

Mistakes

You can’t and won’t always be right.

2018年9月16日:开源日报第192期
Photo by chuttersnap on Unsplash

Being wrong

You will be wrong about some things in your career. What matters is what you learn from it, there are many opportunities for this to take place. You might suggest a pattern that might not be suitable, you might suggest a solution that doesn’t meet the brief, you might make assumptions that you shouldn’t have.

Expect to be wrong. It’ll happen, and it’s a good thing. Why? Because you will gain an opportunity to learn something new. When this happens, it’s a chance to be vulnerable and admit you made a mistake. Being vulnerable is what opens us up to making the best connections with those around us. It is a chance to improve your knowledge and make better connections with your team. Admit your mistakes early and you’ll find others more likely to help you fix the problem you may have caused.

Making incorrect assumptions

You will make the wrong assumptions at some point, everyone does. Many times I’ve seen others, and myself, make the wrong assumptions about a piece of work and end up not meeting the requirements. The easiest way to avoid this is to ask questions early and try not to assume anything.

This is another opportunity to learn from your mistakes. If you do end up making the wrong assumptions, own up to it and work forward from there.

Building the wrong thing

This is generally a combination of the above. Many times I have built a feature wrong, or created something that doesn’t meet the requirements. It’s easy to get carried away with something when you are having fun with it. Be careful though, and make sure you are doing what is actually expected of you.

I’ve seen developers spend so much time on other people’s work because it was more fun than theirs, only for them to end up not having done their own. This isn’t to say you shouldn’t help others, just prioritise your own work first. Put your oxygen mask on before helping others.

Being right

Equally important to being wrong is the ability to be right, and to express when you know you are correct. This helps others to appreciate your abilities and know that you have earned your place. If you don’t challenge what people think of you, you’ll never grow. You need to be careful about how you go about this one though, as over-confidence will generally not work in your favour.

Over-confidence often doesn’t pay. It might help you in interviews, but when it comes to actually getting work done, no one really cares how good you think you are. They care about results. I’ve seen many developers crash and burn as they fly too close to the sun, elevated by their own ego.

Change

Life begets change and change begets challenge.

2018年9月16日:开源日报第192期
Photo by Chris Lawton on Unsplash

Changing requirements

Most facets of software development will involve fulfilling predefined requirements. The problem is that these can change as you are working on something.

Sometimes the client doesn’t really know what they want. This is one of the hardest challenges in software. There are tools and techniques to try alleviate this, but some clients just won’t play along. You will face difficult clients, there’s no doubt about that. I’ve faced a few and I can tell you it’s not a lot of fun. Every situation is different, use your knowledge and tools carefully as you try to navigate these treacherous adventures.

Changing jobs

Job-hopping is on the rise. It can be normal to only spend a few years at a company. Anecdotally, a lot of people just aren’t as loyal to their companies as our parents or grandparents were.

Even if you don’t want to change jobs, it can be great experience to interview for other positions. I’ve been to interviews for roles I wasn’t overly interested in, and the practice was super helpful for the one I actually wanted.

Tough times

Not everything can be easy.

2018年9月16日:开源日报第192期
Photo by Avgust Chech on Unsplash

Technical hurdles

There will be times where you just can’t fix an issue. This happens to practically everyone. I’ve seen even lead developers stop to take time to ask questions to other developers. Sometimes you just need to hit a full-stop and ask someone else. This is an opportunity to learn something new and grow from it.

Pressure and stress

You will face stress and pressure at some point. Things won’t always be smooth sailing. This can come from many different sources, including yourself.

There will be pressure to perform to expectations. There’s not only pressure from your superiors, but the pressure you will put on yourself. This pressure you put on yourself is often greater than that from others.

One source of this stress can be Imposter Syndrome. So called because it makes you feel like an imposter, like you aren’t worthy of your post, or that you will be found out for being a “fraud”. It’s difficult to get through. The best way I’ve found to get through it is to just keep doing your job, celebrate your achievements, and practice and work on your technical skills. You’ll get through it.

Assumptions of your lifestyle

When people hear you are a software developer. They often only hear one thing. Big money. Now, in most of the world, this isn’t true compared to the ridiculous amounts you see new graduates getting in Silicon Valley. For example, here in New Zealand, you can expect to earn slightly more than the average salary at first, raising to a pretty good amount of money after some time. It’s nowhere near what you see elsewhere, but on average, you’ll be better off than a lot of others. Money can make things difficult between friends, and even family. Though most troubles can be avoided by simply not talking about it, that’s not always the best approach. So try to keep this in mind.

People won’t understand your job

The other thing people tend to hear when you tell them you work in software is that you “know computers”. I can’t even count how many times I’ve had to explain that “No, I can’t help you fix your computer”, or “No, I can’t stop you from getting spam emails”. Although you may be able to help, it pays to pretend to be ignorant sometimes. The second you touch someone else’s computer, everything becomes your issue, or your problem to fix. I’ve seen it first hand, it can be a nightmare to deal with other people’s computer problems.

People will ask you to hack things

So far in my career, I have been asked to hack into someone’s payroll system so they get paid more, change a billing system to make them pay less for power, and to change people’s grades at their university. These are real life examples of the things people have asked me to do, and I declined them all.

Though most of these requests are in jest, it pays to be serious with people when you decline their commissions to do what is not just wrong, but very, very illegal. People see it as a joke when they ask these kinds of tasks, but the reality is that, often, you may just actually have the ability to do as they ask, so it’s a good idea not to reveal as such.

Good times

So far it all sounds a bit gloomy, but there’s plenty to look forward to as well!

2018年9月16日:开源日报第192期
“Bald man wearing pink shirt and sunglasses walks on sidewalk in front of graffiti that reads “good”” by Volkan Olmez on Unsplash

Having fun

Although software development brings about many challenges, it also brings about a lot of opportunity to have a lot of fun.

It feels great to be able to program most of your day and see something tangible build up day-by-day. It’s even better to be paid for it. I love that I get to do what I enjoy every day.

Learning

You will learn a lot. Seriously, you might think you know a lot if you are at the start of your career, but that is simply not the case. There are the technical things you will learn, like how to use tooling and languages, but also things like soft-skills and how to work in a team. Time is humbling and teaches you more about things you thought you already knew.

Making friends

Not all your co-workers will be like the programmer stereotype, but sometimes they are and you may be too. Generally people with the same interests tend to get along pretty well. So don’t be surprised to make some great friends.


Thanks for reading. I hope these insights are useful to you. Any questions? Feel free to ask below, tweet at me, or scream into the ether, whatever suits you.


每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,欢迎关注开源日报。交流QQ群:202790710;微博:https://weibo.com/openingsource;电报群 https://t.me/OpeningSourceOrg