书摘>>How to Become an Expert Software Engineer (and Get Any Job You Want) by Brown, Bruce Cameron

Book Title: Brown, Bruce Cameron - How to Become an Expert Software Engineer (and Get Any Job You Want)_ A Programmer’s Guide to the Secret Art of Free and Open Source Software Development

 

Excerpts:

Proving your proficiency in a skill is far more valuable to an employer than simply stating the number of years you’ve spent doing it.

 

As software engineers, we give computers new purpose every day. We bring them to life by imparting pieces of our intelligence to them, we create whole new worlds and ecosystems governed by laws we enforce in our code, but most importantly, we love what we do.

 

In his book: “Drive: The Surprising Truth About What Motivates Us”, Daniel Pink narrows motivation down to 3 key elements: autonomy, mastery, and purpose.

 

Although the origin is greatly disputed, it is generally accepted that Confucius was the one to say: “Choose a job you love, and you will never have to work a day in your life”. This quote has taken a lot of heat, but I think it’s just misinterpreted. The emphasis should be on the words: “have to”. If you choose a job you love, you will want to work every day of your life.

 

A lot of people associate the words: “hard work” with feelings of displeasure. To many of us, the word: “work” is reserved for the stuff we do at our jobs; work we tend to see as benefiting our employer more than it benefits us. When we have this mindset, the harder we work, the greater the gap seems to grow between our employer’s benefit and our own. We need to break out of this way of thinking. Sure, hard work is not necessarily fun, but it should always feel worthwhile. If your job does not leave you proud after a hard day’s work, you need to find one that does.

 

Why do we insist on seeing our dream job as only a dream? Why does it feel so out of reach and intimidating? Well, my theory is: because all jobs require some level of experience; experience in the work you will only be doing once you actually get the job; experience you almost never have due to a lack of overlap in the work you do at your current job. It’s a tricky “chicken and egg” situation, and is why so many of us tend to stagnate on the technologies and domains we started with at our first job. So how do we break from this stagnation? Get back to programming for fun! Your aim should be to eventually land a job doing what you love, and a good indicator of whether you will actually love the job is to see how motivated you are to do it after hours. Jobs are real, and they exist to be filled. Nobody has ever been turned down for a job because they were perfect for it. The trick is to find a job that will be a perfect fit for you, then get to work on making yourself perfectly fit for it.

 

There is a famous quote by Linus Torvalds that goes: “Talk is cheap. Show me the code”. Simply stating that you possess a skill, or even a good idea, doesn’t mean much until you can actually prove it with something tangible. Enter open source software. What better way is there to prove a skill in coding than with code itself? For each new skill you seek to acquire, and for each pre-existing skill you wish to showcase, you should be writing software to demonstrate it, and making the source freely available online.

 

In his book: “The First 20 Hours: How to Learn Anything… Fast!”, Josh Kaufman sought out to determine how long it takes for us to learn new skills. It takes around 20 hours of deliberate practice to learn almost anything and reach a decent level of proficiency, and any time spent practicing beyond that will make you better and better at it.

 

Sorry to break it to you but spending 5 years doing busywork at a software company will not make you an expert software engineer. I can’t stress enough how valuable it is to possess experience you can actually prove to have earned. Writing free and open source software not only allows you to prove that you have put in the hours, it allows you to showcase the result of your practice in the form of real, working software.

 

The only valuable form of experience is the kind you’ve worked for and can demonstrate.

 

Unlike other fields of engineering, we have the convenience of being able to release product updates to every one of our clients with the simple click of a button. We should appreciate how powerful this benefit is, and use it to our advantage.

 

The only variable force in software development is scope.There are four major forces at play in the development of any software solution: budget, time, quality, and scope. While all four limits are typically expected to be fixed, often the reality is that eventually one of them has to give for the others to be met. When developing free software, think of the budget as your energy. Instead of the traditional time and money expenses, you’re spending time and energy on your project. Time and budget are usually directly related to each other, and are fixed. In our case, if our development drags on for too long without results, our enthusiasm for it will eventually run dry. Clearly we do not want to compromise quality, so we’re left with only one variable force: scope.

 

As software engineers, the problems we face are naturally complex, if they weren’t, there would be little need for us in the first place. By definition, a complex problem is a system of smaller interconnected concerns that combine to form one intricate issue. In order to conquer a complex problem, we must first identify the subproblems it’s made up of, then divide the work into smaller, manageable tasks that we can tackle one by one.

 

It is better to read just enough about something to start practicing it, than it is to procrastinate on theory.

 

When it comes to something as pragmatic as software engineering, the theory can not be fully appreciated until it is practiced.

 


Links and Resources:

I can’t say that I specifically favour one site over the others here, or that I am aware of any particular sites you should avoid, but some of the most notable job search engines are: CareerBuilder.com, indeed.com, LinkUp.com, Monster.com, SimplyHired.com, and again, LinkedIn.com

Evidently, there is nothing stopping you from creating multiple pages for your project across more than one of these sites. For example, my choice of VCS at the moment is Bazaar, so naturally I post my projects on Launchpad.net, but as I’ve pointed out before, I really like the wealth of features and visibility I get from SourceForge.net, so I also post my projects there with a link to the source code on Launchpad.net. Two of the most useful features on SourceForge.net are: the user review system, and the highly detailed download statistics. These will allow your users, and eventually your employers to quickly and easily measure the success of your projects, and hence, gauge how skilled you are at developing good software.

First you will need to select a web hosting plan. Currently, there are three really great free web hosting sites available: Neocities.com, Pages.GitHub.com, and Sites.Google.com.

For a list of free, high-grade programming books see: GitHub.com/vhf/free-programming-books. Once you have a pretty good grasp of the theory, and you’ve moved onto writing code, I recommend bookmarking StackOverflow.com as a good launchpad for any further issues you may encounter during development.

From experience, I can recommend that you begin by posting your project on Softpedia.com. This service is both clean and very popular, so through it, you will inevitably reach a lot of people, and by people I also mean other websites. Once your software picks up a bit of momentum here, you will start to see it popping up all over the web. Adding a project to Softpedia.com is fairly straightforward: just browse to their home page, find the “Submit Applications” link, and fill in the form.

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值