10 ways to spot a good coder
Some coders are really good. How can you identify them?
You gotta know how to read a stack trace. I know this is a pathetically low bar, but I have seen countless developers just stare in wonder at a stack trace. So even this low bar will eliminate a bunch of people.
Know your tools Know your IDE. Know your editor. Know your operating system. Select the right “power” tools and make them serve you. (An interesting corollary is that if you code on Windows then you have to use Cygwin to be a good developer.)
Know your language If you have things to say in code, then you need to know how to talk. Learn every part of your language syntax. Get a broad understanding of the libraries your language offers.
You have to be able to download a 3rd party package, get the source code compiling, make some changes to the source and get the hacked library working. Maybe they even have to use a decompiler to get the source.
Know how to use a debugger.
Know how to use a profiler. At some point the code is too slow and you need to know why. A good developer can bust out a profiler and get an answer.
Read a spec. Sure every developer will read the spec before coding. Good developers read the spec when they are done coding… then they code up all the stuff they missed.
Read code. Writing code is more fun, but a good developer reads someone else’s code, understand it, and make sensible changes to it.
Work from the command line. Yeah GUIs are great, but you are doing way too much manual work if you don’t drop down to the command line and script out what you need.
Create the build script It’s easy to find a good developer on a project. Find the guy who made the build script. He is the one who actually knows how the stuff works.
So what is the common theme here? The bad developers are faced with something new and they stare in wonder at all the meaningless symbols in front of them. Whether it be a stack trace or someone else’s code, or the confusion of buttons in our tools, or the build script. The good coders are filled with the same wonder, for a moment, but they apply their brain to gain understanding. They dig in, read, understand, learn. Programming is a knowledge business if there ever was one.
Comments (0)Resolio is live
I have been working on Resolio, a web tool for making online resumes. It is now live. Check it out if you want to make a nice looking web resume without a lot of work.
Comments (0)Career advice from Larry Smith
Career advice from Larry Smith:
http://economics.uwaterloo.ca/smithdat/career2.html
“Conduct your career as your business”
Make a plan for yourself. Don’t allow yourself to be simply carried along by the currents of the day.
“You never let your employer have full control of your mind’s agenda. Control of the agenda is control.”
Develop yourself uniquely as a product offering:
“The goal is to be unlike others, to be premium priced, to have distinctive function. And there is only one way to do that… Your ideas make you distinctive.”
Market your offering broadly:
“When employed, you distribute your ideas as broadly as possible…”
“You create a resume of distinctive accomplishment. You do not describe routine duties, letting the job title speak for itself. Rather you describe what exceptional work you did…”Comments (0)
Resolio signup
Resolio, our tool for making web resumes, is marching forward towards launch. If you want to be one of the early users then signup to be notified when the service launches.
Comments (0)Marketing for geeks: 3 easy steps!
If you are a techno-geek the word “marketing” brings to mind a smarmy guy telling lies or a high powered executive playing mind games with the masses. Marketing is a subject that you don’t want to touch, you don’t know anything about it and you don’t want to be associated with it. This article is for you. This will give you a definition of marketing that you can claim as your own. After reading this, in casual conversation you can mention your “marketing plan”.
Your marketing plan is all about your story. This is the brief statement of why somebody would want to pay you money. The three step plan is:
Get your story straight
Make your story true
Tell your story
Get your story straight
The first step is to determine what your story is. Some criteria to apply in developing a story.
Truth
True stories typically work better than lies. Of course, there are also intangibles to consider.
Usefulness
The story you tell, the thing you offer, it needs to be useful to somebody. Being an expert video gamer is not much use. Knowing how to generate spam is not much use. Knowing how to design a data warehouse for managers to run their business… useful.
Profitability
Are there people who will pay for your story? Are there enough people who will pay for your story that you can find one of them? Are there places on the web where you can find such people? Can you compete with other providers?
To help answer these questions look at the job postings and rates on RentACoder and oDesk.
Distinctiveness
Don’t come up with the story that you are “generally a really smart coder”. Generally speaking, nobody hires generalists. People hire specific people who can do specific things to solve specific problems. So you need a specific theme for your story: database development, or maybe even database optimization. The more specific the story, the more memorable you will be. But don’t forget the need to be useful.
You may be afraid that a specific story will eliminate you from contention for jobs outside of that specialty. That is true. But it is better to remain a noteworthy contender for some projects rather than be lumped into the indistinguishable pile of people who are not particularly well suited to any job.
Passion
There needs to be some passion in your story. The story needs to be about a topic that you care about. Maybe it won’t inspire others, but at least you need to be interested in it. The reason you need to care is because your passion will saturate what you say in many subtle ways; ways you won’t even be aware of. This passion will attract people to your story.
Richness
Real life things are rich in details and substance. Maybe the richness of your story is the breadth of your different work environments you have been in. Or maybe it comes from the depth of your experience.
There are other ways to enrich your story. Maybe there is a personal detail that you can weave into your story, not as a centerpiece, but as a highlight. Consider Microsoft. Part of their overall marketing is the tale of the Bill and Melinda Gates Foundation. The fact that Bill is generous is not a central aspect of deciding to buy a Microsoft product, but it does add a touch of flavor to the overall story.
Don’t go overboard with this idea. Most people don’t have a really interesting personal story to mix in. On average it seems that most people are about average. But maybe you do have something to share, maybe you were bored and spent a summer cycling across the country and you can weave this into your story.
Arc
Your story needs an arc. This is a thread that is played out through all the parts of the tale. These are the stories that are told across the episodes in 24 or many of the other soap-opera like shows from the latest television fad.
For example, if you are a development manager the the arc may be one of steady growth in software development leadership skills. This arc may be told through many small episodes: started working as a developer, led team of three people, project manager of three teams, then head of a software development department. The arc is the story of increasing leadership responsibility across many episodes.
Make your story true
Do things that make your story true. Or more true. Or more completely true. I don’t mean that your original story is a lie. Maybe a key theme of your original story is that you are a unit testing fanatic. That may be true, but it may also be true that you don’t do it very well. It may be true that there are gaps in your experience and understanding. So let’s take that example. What could you do to make the story more true:
- practice doing it a lot so you get better
- contribute to the development of
unit testing framework - explore an area of automated unit testing you don’t have experience with (e.g. web page testing)
- track down the history of the practice to give depth to your understanding
- study a related topic (e.g. learn about James Bach’s Rapid Software Testing
Tell your story
Telling your story is not saying to someone “I am an expert in blah…”, rather it is telling them by making it obviously, visibly true to them. To continue the previous example, you could tell your story about being a unit testing expert by:
- blogging about unit testing
- publishing online videos that demonstrate the practices
- publishing reviews of tools
- building a testing gizmo and making it available
- volunteering to speak at local user groups about the topic
Look back over those lists and imagine a project sponsor looking to hire a developer who was passionate about automated unit testing. When they stumble on your resume or web page it will be obvious to them that you are what they are looking for.
I presented the steps in this order because it is a logical order, but often the first step comes last. Instead of deciding on a story to tell, we look back and in retrospect understand our story. And really they are not distinct steps at all, they are all part of a more complex process. For instance, the very fact of doing something is often the best way of telling people what you do. Similarly we go through cycles of deciding what to do and doing it. Which leads to my final point.
The story you are telling is really just one aspect of your life story. And, for better or worse, you are one of the principal authors of your life story. So not only do you need to look back at what you do and sell that, but also look forward to the story you want to tell and make that story come true.
Comments (0)Build a prototype instead of a proposal
When you first start working on an application you can create an end-to-end working system in a remarkably short time. I don’t just mean a false demo that provides screens that don’t work. I mean a real working application. Now it will be very short on features. It will be an anemic application. But, it will be a working end-to-end system.
Some developers will not deliver a working end-to-end system quickly. Instead they will write specification documents, build data models, create architecture diagrams, build frameworks, construct development environments, do UI design, create detailed estimates, etc.
Some developers are scared to show sponsors a working system early, because the sponsor will never understand that the application is not finished, it is merely started.
Use the fact that you can create a working application very quickly to your advantage. Use this to win business. Use this to win real engagement with your sponsor.
If you are bidding on a project, instead of producing a proposal, produce the first version of the application. Imagine the buyer comparing a written proposal with a working app.
If you want to really engage with a sponsor and get them excited about the project, then show them a working prototype instead of a proposal.
And don’t just do this once, keep doing it. If you deliver new features that the sponsor wants every week then you will become an ally of the sponsor rather than an antagonist for them to fight against.
Comments (0)Resume advice from Joel
If you are applying for a job and you want to increase the chances of getting noticed then read this. Don’t just bookmark it, don’t just read it, but read it and compare what he has to say with your resume. In particular evaluate your resume and introductory messages according to his standards of:
- Passion - Do you show that you are really excited about what you do?
- Pickiness - Are you particularly interested in this job? Or are you equally interested in all jobs?
- English - Not just do you know English well, but can you think clearly and express your thinking in well formed, coherent sentences and paragraphs? (Did I just fail that test?)
- Brains - What have you done that shows you are really smart?
- Selectivity - What tough, grueling challenges have you overcome that show you are in a select group?
- Hard-core - How have you dug deep into technology to really understand how things work?
- Diversity - What is unique about your background or experiences?
You will either have these things or you won’t. If you have them, then make sure you show them when you apply. If you don’t have them, then you have a long road ahead of you because they don’t come easy. But at least you know what you need.
Comments (0)Publish your resume in hResume format
Put your online resume into hResume format. This is an evolving standard describing how to put resume data in HTML. It is a chance to learn about one of the new buzzwords: microformats.
I expect there will soon be a variety of services that crawl the web looking for hResume documents. So, if you get yours out there in a standard format then you have a chance that it will be found by a project sponsor.
You can use the hResume Creator or if you have a WordPress blog then use the hResume plugin.
Alternatively if you are interested in hearing how a tool like the hResume tool is created, then read the interesting account of how a Texas entrepreneur made it happen.
Comments (0)10 things to put on your personal web site
If you are looking for development work on the web then create a web site for yourself. Very few of the developers in the market have web sites to promote themselves. So (although it is hard to believe considering how many useless web sites there are) this is a way to differentiate yourself.
And here is what you need to put on it:
- Include code samples .
- Include your story. Your elevator pitch for yourself.
- Write an essay describing the best way to successfully write code on a team distributed on the web.
- Write about how to write good code.
- If you have a enough to say then write a blog. But, if you are going to use it to market yourself then leave out the tasteless personal stories and the drivel about what you ate for dinner or what music you are listening to.
- Use a very simple style unless you can make something look good. This is not a time to be experimenting with CSS/HTML effects. A bad, out-of-date style is a strong turnoff to prospective buyers. Simple HTML is not a turnoff, it just looks utilitarian.
- Include a picture of something. Pictures are memorable. You want to be remembered so you will be hired. Include a picture of something. Not necessarily a picture of you. Maybe a picture of an app you built.
- Include a screencast with you describing a technical topic relevant to the field you work in.
- Write out the answers to the most common interview questions.
- Find a way to personalize it. This is dangerous because it might fail, but find something distinctive about you to put on it. People relate to people. People remember people. People hire people.
What programming languages do you need to know?
This post got me thinking. What languages do you need on your resume? For a general purpose resume it seems you need to hit all of these:
- C, C++ Shows you have paid your dues doing hard-core, real programming and deserve to be allowed into the club. I suppose some kind of assembly language can also be used here.
<li><strong>Ruby or Python</strong> Shows you are young and hip. Or that you value actually getting things done and getting on with your life.</li>
<li><strong>Lisp or CAML or some other weird language</strong> for smart people Shows you are smart.</li>
<li><strong>Java, .NET, Delphi, Visual Basic</strong> Shows that you are well grounded. You know what you need to do to make a living.</li>
<li><strong>COBOL</strong> Shows you lack the sense to market yourself well.</li>
<li><strong>Smalltalk</strong> You get bonus points.</ol></li>
NOTE: I kept trying to make this a more serious post, but everything kept coming out as these cheap cliches wth grains of truth in them.
Comments (0)















