I was asked a very odd question recently: "How do I be a developer?" I'm sure many of you read this and think either "Gee, that's easy, buy a book," but we all know it's not that simple.
So how do you be a developer? How do you be anything?
Jean-Paul Sartre, a French existentialist philosopher popular in the mid-20th century, famously stated "Freedom is what you do with what's been done to you." With that in mind, ask yourself: Why be a developer? What is it about the profession that draws you to it? Are you good at it without even trying?
Most people have a strong misconception that developers are programmers. There is another misconception that all programmers are imprisoned in cubicles for days, mindlessly pounding away at the keyboard, bored out of their skulls. This assumption is intransitive. So who are these coffee-drinking, pun-loving developers?
- Developers are creative technical people.
- Developers solve problems and they do it damned well.
- Developers often use their left brain more than they should.
- Developers often use their right brain more than they should.
- Developers think on both the small scale and the large scale at once, regardless of whether they will let you know that.
- Developers are not "just" programmers. Developers often find themselves doing architecture, testing, business analysis, networking, infrastructure, and more. It is the responsibility of the developer to realize a business objective through software.
Cool, I Want To Be A Developer, So Please Just Tell Me How To Be A Developer
Microsoft used to be famous for puzzling interview questions. Check out that informal list and see how many of them you can answer, just for fun. While you can easily be a developer without correctly answering any of these questions, you should find yourself analyzing your thought process. Why would you approach a problem a certain way? What kind of creative thinking strategies do you employ? This goes for interviews with just about any technical company, by the way. Think creatively.
When you finally settle on the career path of the mighty Developer, where do you start? If you have no experience, hopefully you have some form of degree or certification in some kind of computing field. If you don't have that, you should really consider getting one first. Computers are pretty hard to explain.
1. Choose a platform to learn on
.NET. <G> Well, whatever you are comfortable with. Interoperability is so big these days that you can get away with mastering any modern language. Knowing the C/C++ syntax paradigm is extremely helpful when learning new languages, but C/C++ programs are not very interesting, so I'd start with C# since you can ramp up with it very quickly. Buy books. Read them always. Write sample programs.
2. Start small
It's very important to understand that reading books and writing Hello World will not make you a good developer, especially not when compared to all the aces and rockstars in the workforce today. Write as many programs as you can once you are familiar with the language. Write programs to solve daily problems in your life. Start small with things like a lottery number generator, or an HTML generator for image tags. Then begin to build on your expertise.
3. Focus
You may have found yourself checking out some articles on the Internet about game development, web development, PC development and so on. Whatever you are interested in the most should be a focus area for you. Between your small practice projects, try your hand at managing a longer term project. Sit down and figure out what you want to try to build, then give yourself a timeline and some resources. For example, if you want to build a game, open up Excel (or if you're savvy, Microsoft Project) and start laying down a timeline. Week 1, do concept art & storyline. Week 2, download free development tools (XNA Game Studio 2.0). Weeks 3 & 4, learn how to build a game in XNA. Week 5, begin development. You get the idea.
Then, go implement your plan and see how you do. It won't be perfect the first time, and you will spend a lot of time on ... ahem... Live Search... dumping newbie questions into the search engine and that's okay.
4. Document
If you get to this section after spending the months or years that it really takes to get to the end of #3, you might be trying to remember what in the hell you actually accomplished and why it was important. Always do postmortem reports on your completed projects. Explain why certain things were designed a certain way. Justify any odd design choices you made, and cite any lessons you learned. More importantly, be able to take reasonable criticism from yourself and others. The ability to step away from a project with an objective synopsis of what you did is crucial when it comes to evaluating yourself for a job (and showing others that you are a capable, responsible person who takes pride in their work).
5. Secure Employment
You might not get the best job at first, but the point is to get experience that others will respect. Consulting companies are great places to start because many of them will farm you out at low rates to their customers, resulting in "decent" pay for you but experience that is much more valuable. In consulting, you can get exposure to a wide array of vertical industries such as retail, healthcare, manufacturing, consumer products and more. Having industry specific experience can prove very helpful when you go hunting for a more longer-term career.
If you're a student, please take note of the fact that Microsoft has launched a new job site called S2B that connects you with tons of internships and entry-level jobs within our partner ecosystem.
When looking for work as a "new developer," always be sure to highlight your passion and the individual projects you've worked on. If you're not passionate about development, do something you are passionate about instead because this industry demands excellence.
Conclusion
So there. How To Be A Developer In Five Easy Steps. The book I never wrote. The truth is, becoming a developer (or becoming anything for that matter) is not something that can be done overnight or in any amount of time that doesn't involve a concerted effort and commitment to make something of yourself. Try, do, learn. As you get better, integrate yourself into the local community by attending code camps, bar camps, student groups, etc. Become a well-known face and an eager learner and you will be a developer.
As you launch yourself into the tech industry, always remember to pay attention to your family and home life. Work-life balance is another issue entirely, but commit to yourself when starting your career that you will strive for work life balance. As our good friend Jean-Paul Sartre once said, "one cannot become a saint when one works sixteen hours a day."
That's all for now. Happy Developing!