• 开源镜像
  • 开源沙龙
  • 媛宝
  • 猿帅
  • 注册
  • 登录
  • 息壤开源生活方式平台
  • 加入我们

开源日报

  • 开源日报第524期:《听个响都没有的话…… nba-live》

    21 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《听个响都没有的话…… nba-live》
    今日推荐英文原文:《Lessons I Learned Being a Woman in Technology》

    今日推荐开源项目:《听个响都没有的话…… nba-live》传送门:GitHub链接
    推荐理由:如果你的工作时间刚好和某个想看的直播撞了车,一般来说唯一的办法就是把直播挂在后台听个响了,但是有的工作可能连耳朵也要用上,这就连个响都没得听了。这个项目可以调用别家文字直播的数据让你能够在命令行上看到直播的文字版本……尽管可以看到的直播内容和类型都有限,不过热衷于此道的人也能把它当作一个备用之选。
    今日推荐英文原文:《Lessons I Learned Being a Woman in Technology》作者:Jun Wu
    原文链接:https://medium.com/better-programming/lessons-i-learned-being-a-woman-in-technology-21d8507ce528
    推荐理由:尽管在技术领域女性似乎占少数,但是要记住能力才是最重要的,而不是性别

    Lessons I Learned Being a Woman in Technology

    It’s hard being a minority. But it’s even harder if we don’t participate at all

    Being a minority anywhere is hard. There’s a persistent pushback of the tide. You are constantly pushing to even out the odds. For the same amount of effort, at a certain point, you come to expect a certain level of inequality. After years, you say to yourself, this is how it is. Looking back at my time as a female technologist on Wall Street, I always coped with my circumstances. Often, I traded my boundaries to cope with the circumstances simply because I had to.

    As a minority woman in technology, the odds were always against me. But I’m an eternally optimistic person. I learned very early on that there’s always a way out of situations. There’s even a possibility in the impossible. As a minority who was grateful for the opportunities, I worked hard.

    I look back on my experiences (both good and bad) with hope. Even now, for me, at the end of forgiveness, I’m still pushing against the tide. This time, it’s already easier than the last time. This time, I know what to do.

    You Are Not the Only One

    There are other women in technology. You might be the only woman in your startup. You might be the only woman on your immediate team. You might be the only woman with your level of expertise in your field. But other women are struggling with the same issues elsewhere. You are not alone. Reach out on social media. Reach out by joining organizations that will connect you with women in the same industry.

    Reach out so that you don’t feel alone.

    In 2018, 20% of all jobs in technology were held by women. Here are the top five organizations that help women in technology. They celebrate and empower women in technology. These organizations help women by providing mentorship, networking opportunities, and other resources.

    You Can Be a Star Coder. You Can Be Analytical. You Can Do Math

    I wasn’t even a computer science major in college. I was the only new graduate in my class who didn’t have a master’s degree in computer science. I didn’t come from an Ivy League school. Yet I learned to code in multiple languages. In time, I learned to do optimizations. After a few years, I learned all about math, probability, and statistics. Over time, I even learned to implement an algorithm, such as the SVM, from scratch for fun.

    Along the way, I never felt like I was worthy. I never felt like I was ever “good enough.” I always felt the “fakeness” of my Imposter Syndrome. When I wallowed in other people’s stereotypes of me, I looked up to the many female role models in science, mathematics, and engineering for motivation. With each skill I picked up, I learned to be more confident of my analytical mind. In time, I learned that gender doesn’t define your “soft” skills or your “hard” skills.

    You Can Play the Victim. But It’s Better If You Are Empowered

    The failure of the #metoo movement just tells you how normal harassment is in the workplace. Even in technology, it’s an accepted part of the industry. In every industry where there’s fierce competition, there are bound to be doubters, haters, and angry people around. You get used to dealing with difficult people. You learn quickly that being “passive” is not the way to go. You need to be empowered enough to draw firm boundaries.

    You need to listen to your instincts and trust yourself. Setting firm boundaries often means making difficult choices. Sometimes, difficult people make your life so difficult that you want to quit not just your job but also your career. Just know that in any situation, there’s always a way out that doesn’t involve ending your career. Even if you need to take a time out, as I did for a few years, you can make your way back again.

    You Are Not More Emotional

    I’m not more emotional because I’m a female. I’ve kept my cool under “emergency” and “extreme” circumstances when most of my male colleagues had to leave the scene. By the way, you can be empathetic and not be emotional. You can care for people and still maintain your objectivity. You can certainly be calm when your insides are screaming.

    The one thing that always kept me going was the fact that I had mechanisms of emotional release. I cried at home when I needed to. I laughed frequently at work. I dealt with my demons with a therapist on my own time. I had a regular yoga and meditation practice. Emotional release outside of work helps you to maintain your calm in situations where you need to maintain your objectivity.

    You Don’t Have to Go for After-Work Drinks

    When your coworkers tell you that since you are the only female on the team, you have to go out with all the other male colleagues after work, you can say no. You are so much more than just being the “wingwoman” in your coworkers’ after-work entertainment. Once in a while, it’s good to go out with your coworkers for team building or networking. But, after work, for rest and relief, go out with your girlfriends instead. You Can Deal With Harassment

    I hate to say this, but harassment is commonplace. Our culture has not progressed enough to eliminate harassment in the workplace. By the way, men deal with harassment too. Always, I stress, keep your eyes open. Get a second opinion in a work situation that you are not comfortable with. Often, your girlfriends who also work in technology are the ones who can help you see a difficult situation more clearly. Listen to your instincts. Save yourself from wallowing in your trauma. You can always get another job. But sanity, that’s difficult to get back once you lose it.

    You Don’t Have to Play the Support Role

    All women, at some time in their career, feel the need to play the support role. That is okay. Just know that you don’t have to. You can shine by being the star. You earn it every day by working hard. You might not be able to shine without a lot of haters knocking on your door. But you can shine very brightly nevertheless. Sometimes, the quickest way to success is to dash through the “troll” swamp that’s littered with hate and envy. When offered a support role that you don’t want to take, decline politely. It is still a well-intentioned opportunity someone just offered you.

    You Can Have a Male Mentor

    There’s nothing that says women must have female mentors in the workplace. There are plenty of women who’ve found success in having male mentors. The personality match in mentorship is more important than gender. Having a male mentor does not mean that he won’t understand work-life balance. In fact, from my experience, I encountered far more men who can leave work at work and not take it home. They are often the fathers who fully participate in raising their children. A good mentorship means keeping the communication channel open. Mutual respect, genuine kindness, and relatability are the keys to good mentorship.

    You Can Have a Family

    I used to believe that working in technology means working long hours. I spent many years believing that I could not have children if I worked 12- to 15-hour days. I was right in that children need time with their mothers. They need more than just two hours a day.

    Particularly in the early years, many women give up their technology careers to raise a family. Even if you decide that this scenario is the best for you, it doesn’t mean the end of your career as a technologist. Taking the time out and learning new skills may give you fresh perspectives on working in technology when you decide to go back again.

    When you decide to get back to your job full time, you will be in a much better position to decide what is the right work-life balance for you. Taking time out isn’t the only way to have a family.

    A good support system of people to be the backup care for your children in case your main childcare (nanny, daycare) falls through is another way to strike a work-life balance in technology. You can negotiate alternative work schedules with your managers that include working from home. You can also practice and plan these types of alternatives before you plan on having a family.

    You Can Negotiate

    This is probably the hardest point to internalize for a lot of women who grew up in a paternalistic culture. I constantly feel the need to learn to negotiate better. Negotiating for a better salary, work-life balance, job opportunities, and project schedules is important. Negotiating personal boundaries, emotional boundaries, sensory boundaries, and communication boundaries is also very important. Trust is at the center of negotiating boundaries. You also negotiate your boundaries to maintain that sense of trust. It’s easier to negotiate with someone open to negotiation. Otherwise, it’s not because you are a woman that your counterpart doesn’t want to negotiate with you. It’s because they know they will get their way without negotiating. That is when you must change the situation or the game.

    You Don’t Have to Be a Work Martyr

    For a long time, like a lot of women, I leaned into inequality by working harder. It’s as if I was expected to work twice as hard just to receive the same pay. Work martyrs are not respected in the workplace. It’s the same as a micromanager; a work martyr reflects a person with low self-esteem. When you have low self-esteem, it’s often because of issues that have nothing to do with your workplace. Although toxic workplaces and gender inequality can amplify your low self-esteem, they are not the cause.

    If you feel the need to be a work martyr to stay in your current job, it just means that it’s a sign for you to interview for another job elsewhere. No healthy workplace will ever demand you to work twice as much for the same amount of pay.

    You Can Have Hobbies

    Hobbies are the savior of a technologist’s sanity in any technical profession. For a woman in technology, your hobby does not have to be gaming, puzzling, and watching Indie movies. I find sewing, scrapbooking, drawing, photography, hiking, and running to be amazing hobbies for myself. There’s no such thing as “male” and “female” hobbies. Like the stock market, diversifying your portfolio of hobbies is the key to having fun in life away from work. You will unleash more creativity from a variety of hobbies to bring back to work.

    You Can Be a Woman

    I used to wear pants to work all the time. I wore loafers for comfort. At work, I was mostly in this “androgynous” uniform to avoid looking remotely suggestive or sexy. I wore heels to work the first two years of my career, then I replaced all the heels with sensible loafers for the next ten years.

    The thing is, wearing a skirt to work doesn’t qualify you to be harassed. Wearing a skirt to work does not mean that men won’t respect you. Wearing a skirt to work does not mean that you can’t perform your job function. So be a woman. Use your wardrobe to empower and inspire yourself.

    You can be both a woman and project authority at the same time. The trick is to carry yourself with confidence. If you speak clearly and articulately about subjects that you know, people will respect you for that.

    You Can Deal With Network and Infrastructure

    I used to work in a team where even the men avoided dealing with people from network and infrastructure. If it wasn’t for the projects where we needed to performance tune the infrastructure or maintain applications where network latency was an issue, as developers, we simply avoided venturing into that side of things.

    Dealing with network and infrastructure takes unique expertise. I remember on this one project, we worked with a female DBA. She was not only a DBA but was also a low-level manager on that team. She had over ten years of experience working in a male-dominated team. She knew how to maintain the infrastructure. She knew how to run an infrastructure project. She knew all the various issues we could encounter with the infrastructure. She was an expert. She also worked remotely out of her home with a screaming toddler at her feet. It turns out that she was by far one of the best DBAs we had helping us with our project.

    You Can Speak Up and Be Heard

    Early in my career, while working in a male-dominated culture, I was not only passive, I blamed my passivity on my shyness. It was a lie. I am an extroverted person who has a take-no-prisoners working style. I’m a go-getter. Lying to myself simply made me bottle up angst.

    One day, one of my managers suggested that I pitch to one of the clients a prototype that I was working on. For the first time, I did a presentation in front of a client. I spoke up. Even though there were only three people in that conference room, it was a successful pitch nevertheless. This was the turning point of speaking for myself in meetings.

    Eventually, I learned to run conference calls with our global teams, debate issues with male developers, and even speak my mind to managers who simply did not want to listen. I found that if I was persistent and had evidence supporting my arguments, colleagues usually appreciated that I spoke up even when they disagreed.

    So, speak up! Make sure to back up your arguments with logic and evidence. You will be heard.

    You Can Brand Yourself by Your Hard Skillsets

    I’ve met plenty of female technologists who talked down their hard skillsets. They don’t gloat as male colleagues do. They often quietly pursued projects of interest outside of work to perfect their expertise. Then they waited to be acknowledged at work.

    One time, I met a developer who was the C++ expert on her development team. Yet she didn’t brand herself that way. Even when developers asked her questions, she routinely deferred those developers to someone else. Finally, one day, there was this bug inside the system that only she was able to discover and fix. That incident finally branded her as the C++ expert on her team. She went on to become a technical team leader who mentored other developers. Eventually, she was in line to become the technical manager of her team.

    Nowadays, some female developers run tutorials, teach computer science, and groom the next generation of developers. At the very least, for whatever technical expertise you have, highlight those on your resume. You don’t have to know everything there is to know about a subject matter. But when you know enough to garner other people’s attention, you should highlight that expertise.

    Good luck with your career in technology. I have every confidence that you will be successful. I hope to run into you someday in conferences, in companies, and most of all, in organizations that champion women in technology.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第523期:《读条中 play》

    20 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《读条中 play》
    今日推荐英文原文:《I Write Software. What am I?》

    今日推荐开源项目:《读条中 play》传送门:GitHub链接
    推荐理由:每次按下命令行就像是施放一个法术——因为有的时候你不得不在那等它完成。转头刷刷手机似乎太麻烦了(或者说你刚才才摸鱼刷过一遍),切到别的窗口好像又有点时间太紧,这个时候就可以考虑这个项目了,它能在命令行界面执行任务的时候让你可以玩一些小游戏,虽然不少时候玩到一半就会被命令行任务的完成所打断,但是最起码你马上可以接着你的下一步工作了。
    今日推荐英文原文:《I Write Software. What am I?》作者:Nick Hodges
    原文链接:https://medium.com/better-programming/i-write-software-what-am-i-bccb217c68e9
    推荐理由:工匠似乎比工程师或者科学家更适合用来称呼那些开发软件的人

    I Write Software. What am I?

    Computer scientist or software engineer just don’t seem to fit

    I write software, but I’m not sure what to call myself. It’s kind of weird. Am I a programmer? A developer? A coder? I guess I all three of those things — but as a group, we seem to reach for something more when labeling our profession.

    Some say that I’m a computer scientist. To be a scientist, one has to follow the scientific method. To gain any credibility at all as a scientist, one usually needs to be associated with a scientific institution and publish scientific papers.

    When I create a software program, I don’t do science. I don’t follow the scientific method. I don’t form a hypothesis and I don’t do research and collect data. I don’t conduct experiments and I don’t draw conclusions.

    Therefore, I’m not a computer “scientist.”

    Some say that I’m a software engineer. But when I create a software program, I don’t “design, build, or maintain engines, machines, or public works.” (If you want to try to argue that I do those things, follow the links to all the definitions. You won’t find anything resembling software therein.) To be an engineer, one has to go to school and be officially licensed. One has to design tangible things.

    So I’m not a software “engineer.”

    I don’t do any of those things. And frankly, I don’t like being pigeon-holed into those roles. I don’t want to claim to be an engineer when I’m not. I have too much respect for real engineers. And I don’t like being called a computer scientist because what I do daily is entirely different than science.

    Some software developers do go to school to learn to code. Those programs are often called “Computer Science” or “Software Engineering.” I often wonder how those terms came to be. Perhaps it was done to lend a certain cachet to the profession, coming from some misguided belief that the profession needed more gravitas than it was thought to have.

    And on top of all that, what they teach in “computer science” classes is a far cry from what I actually do. Computer science classes spend a lot of time teaching theory, algorithms and the like. They don’t teach how to write a good bug report, how to perform a decent code review, or how to follow proper branching techniques in source control. Much of what I do every day is not taught in computer science courses.

    So what am I, then?

    Well, let me tell you a story. When I was a young man, a group of folks from my church went to a run-down part of town to help a young pastor restore an old church. We weren’t skilled, but we could handle the basics. We put up new dry-wall and cleaned up the lovely hardwood floors and the beautiful but old pews. We painted the walls and finally, near the end, one of our group hung a new pair of front doors on the church.

    He was one of the guys that we looked to for leadership throughout the day. He was a professional home builder and a skilled carpenter. As the rest of us wound down our work and he began to hang the front doors, it soon became apparent that while getting this right was quite tricky, he was up to the task. More than up to the task. He was hanging the doors with such skill and expertise that we all ended up stopping what we were doing and watching him work. It was a joy and a pleasure to observe such a master craftsman at work.

    And it occurs to me that this is what I am — a craftsman.

    ‘Craftsperson’ is defined as “someone skilled in a particular craft.” A ‘craft’ is defined as “an activity involving skill in making things by hand.” Not to put too fine of a point on it, but I do make programs with my hands — I’m typing right now, for instance.

    The term craftsperson also implies creating works of art. What is art? It’s “the expression or application of human creative skill and imagination.” The fourth definition also applies — “a skill at doing a specified thing, typically one acquired through practice.”

    So, craftsperson seems to be the closest word that defines what it is I do.

    In addition, you can become a skilled and admired software craftsperson without having ever gone to college or even graduating high school for that matter. Many craftspeople do apprenticeships or attend a trade school, but there is no requirement to do so. Glassblowers don’t, as far as I know, require a license to create beautiful works of art.

    Similarly, you don’t need anyone’s permission to write a world-renowned software project. Anders Hejlsberg wrote Turbo Pascal at age 19 without any official accreditation. He just did it. Anyone can.

    There’s no shame in being a craftsman — quite the opposite. We all admire the capabilities of, say, a carpenter that uses their practiced skills to build beautiful furniture or cabinets. I certainly admired my friend who hung that church door with such mastery, creating great beauty with amazing expertise.

    And isn’t that what we software craftspeople do?
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第522期:《细节 one-python-craftsman》

    19 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《细节 one-python-craftsman》
    今日推荐英文原文:《Front-end frameworks: What is important right now?》

    今日推荐开源项目:《细节 one-python-craftsman》传送门:GitHub链接
    推荐理由:一个在 Python 编程中用得上的小技巧合集。这些编程技巧每一个都没有覆盖到太多的地方,而是专注在一些在编程中经常出现的细节——例如函数返回和循环等,可以作为参考来优化一下自己的代码。
    今日推荐英文原文:《Front-end frameworks: What is important right now?》作者:Siw Grinaker
    原文链接:https://medium.com/@siw_grinaker/front-end-frameworks-what-is-important-right-now-f1e80b0f5c69
    推荐理由:判断一个前端框架好坏的一些推荐因素

    Front-end frameworks: What is important right now?

    Front-end frameworks determine the logic, structure, design, behaviour, and animation of every element you see on-screen when you interact with websites, web applications, and mobile apps.

    For instance, buying something online today is a different experience than 10–15 years ago. In the past you would be sent to different confirmation pages during the process, while today the emphasis is more on a better user experience. Now smooth transitions characterise the various stages of the buying process and you generally get a more app-like feeling, with more actions happening on the same page.

    An important piece of your digital experience like a front-end framework should not be left to the mercy of mere chance. That’s why we have compiled a short and essential summary of what factors are the most important right now and-accordingly-in the future.

    Selecting the right front-end framework

    If you have browsed through several front-end frameworks already, you might be confused about exactly what framework you should choose, or what features you should prioritise in the first place.

    As a remedy, here is a quick reference to what is most important when contemplating on selecting a framework that is right for you, your team, and your organisation:

    Learning curve

    Your preferred front-end framework should not have a very steep learning curve, as this can not only put you off-it can demoralise any co-workers in your organisation that also must work with it. Be sure to pick something familiar to you and your colleagues, or something developer-friendly-i.e. a programming language that is loved by developers.

    Built-in toolbox

    A great way to kickstart your developers in a new front-end framework is the presence of a built-in toolbox. A toolbox may include a build server, web server, asset caching, etc., enabling your developers to get started fast.

    Documentation

    Imagine being tasked with baking a specific type of an advanced cake, but not being provided with a recipe. Or being given the task to maintain a hydroelectric dam, but without getting your hands on the operating manual.

    The same principle goes for a front-end framework. Having access to good documentation is important to give your developers an overview, a reference guide, a troubleshooter guide, or information on any technical detail they may ponder.

    Tutorials

    Just like having access to comprehensive documentation, the availability of tutorials is a must for getting your developers up to speed. Even though your developers are knowledgeable, they might still get tips to smart operations and methods within the front-end framework through a well-executed tutorial.

    Community

    Finally, the front-end framework should be well embraced by an engaged community who can help out should you have any questions.

    Most popular front-end frameworks

    In addition to consider the factors above, it might be useful to see what front-end frameworks are popular with the developer crowd. According to Google Trends, React and Angular are the most popular frameworks when it comes to interest on the search engine the last years.

    However, and perhaps surprisingly, jQuery still holds the torch as the most used (although not most loved) web framework out there. Vue.js has increased its popularity, but most importantly 2018 was the first year when React jumped ahead of Angular in the framework popularity contest. React has been ahead as more loved for a few years already.

    The golden child: JavaScript

    Modern front-end frameworks mostly rely on three core technologies: HTML5, CSS, and JavaScript (JS). Not surprisingly, JavaScript frameworks thus have the most traction today and in the foreseeable future. Among these we find the usual suspects-the already mentioned React, Angular, and Vue.js, as well as Ionic.

    The trend right now is to run a JavaScript framework in both the front-end and the back-end. This way you can deliver rendered markup from the server and hand it over to the client-which means better user experience with smoother transitions and faster loading.

    When considering a full-stack web framework, Express currently has a very good traction. It is built on top of NodeJs, which means it is robust but lightweight. Furthermore, Express has built-in features like routing, caching, redirect, and more.

    Pro tip: Use TypeScript to strengthen your front-end

    If you are looking for tools to make your front-end more robust, use TypeScript. This is an open-source, strict syntactical superset of JavaScript, and adds optional static typing to the language, giving the ability to define classes, interfaces, and modules as known from languages like C# and Java.

    With TypeScript it is easier to refactor without errors and easier to test-especially for larger projects.

    Other frameworks

    There are other types of front-end frameworks in addition to the mentioned ones which are based on JavaScript. In this category you can find Bootstrap, Semantic-UI, Foundation, Materialize, Material UI, and more. KeyCDN has compiled a list of top 10 front-end frameworks, giving descriptions, pros, and cons.

    The differences between these frameworks and the JavaScript frameworks are illustrated in this simple comparison:


    In essence, one of the most important things to know about front-end frameworks today and in the immediate future is that JavaScript frameworks continue to grow in popularity-especially React. Assessing crucial factors like learning curve, built-in toolbox, good documentation, and an active community is also important, as well as considering helpful tools like TypeScript. Also make sure to understand the difference between frameworks based on JS versus HTML/CSS.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第521期:《欧拉 chrome-power-jojo》

    18 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《欧拉 chrome-power-jojo》
    今日推荐英文原文:《Helpful tips to become a better developer》

    今日推荐开源项目:《欧拉 chrome-power-jojo》传送门:GitHub链接
    推荐理由:这是一个可以让你的屏幕变得非常热闹的项目——当你在 Chrome 里输入字符的时候,屏幕上就会显示出像 JOJO 漫画里的拟声词一样的效果,如果接连不断的输入字符的话屏幕很快就会变得极其喧嚣……尽管没办法在工作中发挥作用,这些轻松有意思的项目依然可以为生活增添色彩,而这也不失为一个开始了解 JOJO 的大好机会。
    今日推荐英文原文:《Helpful tips to become a better developer》作者:Gawd Desir
    原文链接:https://medium.com/@travisgdesir31/helpful-tips-to-become-a-better-developer-26aa3aa37cb0
    推荐理由:在作为开发者不断精进的过程中用得到的技巧——思考和行动方面

    Helpful tips to become a better developer

    1. Remind yourself how much you have to learn

    The first step in learning something is recognizing that you don’t know it. That sounds obvious, but experienced programmers remember how long it took to overcome this personal assumption. Too many computer science students graduate with an arrogant “I know best” bravado, a robust certainty that they know everything and the intense need to prove it to every new work colleague. In other words: Your “I know what I’m doing!” attitude can get in the way of learning anything new.

    2. Stop trying to prove yourself right

    To become great — not just good — you have to learn from experience. But be careful, experience can teach us to repeat poor behavior and to create bad habits. We’ve all encountered programmers with eight years of experience … the same year of experience, repeated eight times. To avoid that syndrome, look at everything you do and ask yourself, “How can I make this better?”

    Novice software developers (and too many experienced ones) look at their code to admire its wonderfulness. They write tests to prove that their code works instead of trying to make it fail. Truly great programmers actively look for where they’re wrong — because they know that eventually users will find the defects they missed.

    3. “The code works” isn’t where you stop; it’s where you start

    Yes, your first step is always to write quality software that fulfills the spec. Average programmers quit at that point and move on to the next thing.

    But to stop once it’s “done” is like taking a snapshot and expecting it to be a work of art. Great programmers know that the first iteration is just the first iteration. It works — congratulations! — but you aren’t done. Now, make it better.

    Part of that process is defining what “better” means. Is it valuable to make it faster? Easier to document? More reusable? More reliable? The answer varies with each application, but the process doesn’t.

    4. Write it three times

    Good programmers write software that works. Great ones write software that works exceedingly well. That rarely happens on the first try. The best software usually is written three times:
    • First, you write the software to prove to yourself (or a client) that the solution is possible. Others may not recognize that this is just a proof-of-concept, but you do.
    • The second time, you make it work.
    • The third time, you make it work right.
    This level of work may not be obvious when you look at the work of the best developers. Everything they do seems so brilliant, but what you don’t see is that even rock-star developers probably threw out the first and second versions before showing their software to anyone else. Throwing away code and starting over can be a powerful way to include “make it better” into your personal workflow.

    If nothing else, “Write it three times” teaches you how many ways there are to approach a problem. And it prevents you from getting stuck in a rut.

    5. Read code. Read lots of code

    You probably expected me to lead with this advice, and indeed it’s both the most common and the most valuable suggestion for improving programming skills. What is less evident are the reasons that reading others’ code is so important.

    When you read others’ code, you see how someone else solved a programming problem. But don’t treat it as literature; think of it as a lesson and a challenge. To get better, ask yourself:
    • How would I have written that block of code? What would you do differently, + that you’ve seen another solution?
    • What did I learn? How can I apply that technique to code I wrote in the past? (“I’d never have thought to use recursive descent there…”).
    • How would I improve this code? And if it’s an open source project where you are confident you have a better solution, do it!
    • Write code in the author’s style. Practicing this helps you get into the head of the person who wrote the software, which can improve your empathy.
    Don’t just idly think about these steps. Write out your answers, whether in a personal journal, a blog, in a code review process, or a community forum with other developers. Just as explaining a problem to a friend can help you sort out the solution, writing down and sharing your analysis can help you understand why you react to another person’s code in a given way. It’s all part of that introspection I mentioned earlier, helping you to dispassionately judge your own strengths and weaknesses.

    Warning: It’s easy to read a lot of code without becoming a great programmer, just as a wannabe writer can read great literature without improving her own prose. Plenty of developers look at open source or other software to “find an answer” and, most likely, to copy and paste code that appears to solve a similar problem. Doing that can actually make you a worse programmer, since you are blindly accepting others’ wisdom without examining it. (Plus, it may be buggier than a summer picnic, but because you didn’t take the time to understand it, you’ll never recognize that you just imported a bug-factory.)

    6. Write code, and not just as assignments

    Working on personal programming projects has many advantages. For one, it gives you a way to learn tools and technologies that aren’t available at your current job, but which make you more marketable for the next one. Whether you contribute to an open source project or take on pro-bono work for a local community organization, you’ll gain tech skills and self-confidence. (Plus, your personal projects demonstrate to would-be employers that you’re a self-starter who never stops learning.)

    Another advantage of writing code for fun is that it forces you to figure things out on your own. You can’t leave the hard stuff to someone else, so it keeps you from asking for help too soon.

    Pro tip: Don’t choose only personal projects where you never fail. You need to fail! But you do probably don’t want to fail at work or when you have a deadline.

    7. Work one-on-one with other developers any way you can

    It helps to listen to other people. That might mean pair programming, or going to a hackathon, or joining a programming user group (such as the Vermont Coders Connection). When you contribute to an open source project, pay attention to the feedback you get from users and from other developers. What commonalities do you see in their criticism?

    You might be lucky enough to find a personal mentor whom you can trust to guide you in everything from coding techniques to career decisions. Don’t waste these opportunities.

    8. Learn techniques, not tools

    Programming languages, tools, and methodologies come and go. That’s why it pays to get as much experience as you can with as many languages and frameworks as possible. Focus on the programming fundamentals, because the basics never change; pay more attention to architecture than to programming. If you feel certain that there’s only one right way to do something, it’s probably time for a reality check. Dogma can hamper your ability to learn new things, and make you slow to adapt to change.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
←上一页
1 … 128 129 130 131 132 … 262
下一页→

Proudly powered by WordPress