How to Become a Good c# Programmer

Published on March 2017 | Categories: Documents | Downloads: 83 | Comments: 0 | Views: 553
of 16
Download PDF   Embed   Report

Comments

Content

 

LearnItFirst

How to Become a Good C# Programmer  by Scott Whigham Whigham

I n this w hite hitepa pape perr , Lear Lear nI tFir st founde founderr Sco Scott tt W hig ham talks talks about about how you can be beco come me saboth gooda(or better bette r ) C #sy prstem ogr amme ammer r . Thiass w hitepape perir n-dep is long 15scuss pag e pag s - of buteach but it i n-step. cludes clude step-b step-by y -step to follow follow w hitepa ell as an n-depth th -di15 i on each step. I f y ou follow thi s 13-step 13-step sys te tem m ( w i th a bonus 14th step) step) , y ou can’t can’t help help but become become a  g oo ood d C# C # dev elo eloper per ! 

© Copyright 2004-2009 LearnItFirst.com LLC. LLC. All rights reserved. All trademarks remain the property of their respective owners.

 

TechUrbia: A LearnItFirst Blog

How to Become a Good C# Programmer By Sco Whigham

I get quesons through email (through the LearnItFirst.com website) all the me from people who watch my .NET training videos asking things like this recent email: Hi Sco   I really like your C# training course and would like to ask you if you have any t  ps on how can I become become a be er er C# developer? 

Along with this type of email, I also commonly get quesons like this: I’m a student at university and would like to know how to become a good programmer pr ogrammer.. What’s the best way to learn to be good C# programmer? 

I think I can help - and in a prey standardized way that just about anyone with any aptude for computer programming can follow.

My System to Help Anyone Become a Good Programmer Let’s get the bad news out of the way: this isn’t going to happen overnight. It probably won’t happen in under a year and it might take 2-3 years depending on how much me you put into it. But if you follow the steps below, below, I believe that you will become what you ask for: a good C# tprogrammer. You may not become a great programmer but I do believe that anyone who diligently follows this system can become a good programmer. programmer. Let’s take a look at the (long) list of steps: 1. 2. 3. 4. 5. 6.

Pick a language Pick a pet pet project project Buy a few starter-level starter-level books or take a few online classes that that are on your chosen language Begin reading the book/taking the class Implement your project project while you are reading/taking the class Post your quesons in an online forum dedicated to the language

7. Find some sample apps wrien in your language and review how they did things diff erently erently 8. Finish your book/class and buy another another book/class that is speci specific to your language of a beginner/intermed beginner/intermediate iate level 9. Begin answering other people’s quesons in forums 10. Pick a new pet project project and implement it 11. Review some open source apps wrien in your language 12. Contribute to open source source apps 13. Write a few arcles on subjects you enjoy 14. (Mystery bonus step step listed at the end) And while I’m sure that any suffi ciently advanced developer could add several items to this list, in my opinion as a professional developer and educator of developers that, if you follow this system, you will be able to start from scratch and become a highly paid, successful C# developer. developer.

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 3

 What You Do N ot  Need  Need A lot of people think that they need to have a Computer Science degree to be a good programmer but I disagree. I don’t have such a degree and I fancy myself a more-than-able developer. developer. Computer Science degrees are wonderful things but they aren’t required to be a “good developer”. developer”. Will it help you be a be er   developer? Yes, I think that having such a degree would make anyone a beter  developer? ter developer. developer. But I don’t think it’s it ’s a requirement to be a good or even a great programmer. programmer. Now don’t misunderst misunderstand and me: I think it’s great to take computer science classes but I don’t think that, in 2009/2010, having a computer science degree automacally makes you a “good programmer.” You could, I suppose, make the case that a So fware Engineering degree would fill that gap and I might be more inclined to agree. I also see people wondering about whether they have to be math gurus and again I say, “No.” “No.” It helps to know complex mathematical structures but I’ve made a career out of being a programmer and I failed Trigonometry Trigonometry three mes (well, “failed” is perhaps the wrong word - “dropped out”, “stopped going to class”, “couldn’t get up in me” all might be more appropriate). “Yes, but Sco you don’t need Trigonometry to be a good programmer; you need to know Calculus!” Oh. Okay, if you say so. I’ve never taken a Calculus class so I wouldn’t know. know.

Let’s Get Started My “system” is easy - it’s 13 steps with an op onal “bonus” 14th step (to be revealed later).

Step 1: Pick a Language This is the most obvious first step and, since you’re reading an arcle tled, “How to Become a Good C#  Programmer”,   Programmer”, it’s safe to assume that you’ve chosen your language. And it’s a good choice incidentally - C# C # developers in the US in 2009 made anywhere from $60,000 - $120,000 on average according to hp://www. payscale.com/.

Step 2: Pick a Pet Project The idea here is that you find some lile project that you want to build and you build it. At the end of building it, you have given yourself some praccal programming experience and learned quite a bit along the way. It’s not quite “trial by fire” but there’s an old computer programmer axiom: “The compiler doesn’t lie.” Your Your program either compiles or it doesn’t. You will learn right from wrong the old fashioned way: by screwing up and having to learn how to fix it (a.k.a. debugging). “But Sco - what should I choose as my pet project?” project?” Easy queson actually - something that is “ moderately ambi t  tous.   us.” I suggest you be go for something substanal: afer compleng o your pet project, you want to have a prey, well-made applicaon that, if you were asked during a job interview to talk about the architecture and show it to the interviewer, interviewer, you would feel a sense of pride. In fact, they will o fen ask you to bring/share copies of sofware you have wri en (or at the very least show example code). Here are a few suggesons to get you started: • • • • • • • • •

Password manager Contact Manager FTP app RSS reader Font viewer MP3 player Note tracking app Chat client Time tracking app

Noce I didn’t say “Hello World” should be your pet project. You’ll need to do such an app but it is far below the standard of a pet project.

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 4

Your App Will Suck Here’s something you should know early on: you will do it wrong. The architecture will be wrong. It will not be fast. It will be Here’s buggy if put to the test. And, if you follow all the steps of my system, you’ll look back at this app and laugh at how silly it is a year from now. But you know what? All beginning programmer-level programmer-level pet projects are that way and, since you have to start somewhere, this is just what you do. Don’t get in midated by the sheer magnitude of what you need to learn in order for this pet project to become “great”; chances are that, by the me you know all the things it takes to build great apps, your mind will be on to much more excing applicaons. Just consider it a rite of passage. As Guy Kawasaki so famously said, “Don’t worry worry,, be crappy c rappy..”

Learning About Scope Another thing you should start learning early on is the concept of scope and how important deadlines and priorizaon are to sofware engineering. Scope out your your project like this: 1. Get a pen and paper and write down the top 25 features your app should should have o Spend some serious thinking me away from the computer here to come up with cri cal features o Next, load up (or review) some similar apps and see what you’ve forgo forgoen or where you have added value with your feature list 2. Pick a date that you’d like like to have your applicaon finished by o Yo You u want to give yourself enough me to finish the app but not so much me that you lose interest in the app because you have advanced beyond it o If you can devote 2-4 hours hours per day five days a week, it should likely take you 2-4 weeks to complete 3. Decide what to cut out of your list of Top Top 25 features o Separate the items into into three categories: categories: * Critcal - must exist for the app to be considered a [insert type of app] app * Important - these features generally exist in most of these types of apps * Like to have - would love to have them but, if they aren’t there, then it’s okay o Assign melines to each task in the “Cri cal” category * Have you met your date from #2 above? If so, that’s it - go to the next secon * If not, assign melines to each feature from the “Important” category and go through the same roune The key takeaway from this exercise is that you need to learn how to design and implement features in applica t ons ons. Generally speaking, the first version of an applicaon has far fewer features than version 2.0. Most of the me, the main features in version 2.0 were originally thought of prior to shipping version 1.0 but, due to priorizaon and me constraints, they got bumped to version 2.0. And don’t worry - you’ll get this wrong too (even seasoned pros get this wrong ofen). I’m terrible at this personally!

Learn to Ship On Time One of the most famous and o f-quoted lines regarding developers developers was penned by Steve Jobs (of Apple fame): “Great arsts ship.” In other words, you can draw up the most elegant of applicaons but if you don’t release it (i.e. ship) then it’s nothing. Have a deadline and work like #### to make that deadline. There may be delays - there are almost always delays in so fware - but ship quickly. Again: you will mess up and it won’t be pre y. Get over it and just ship it!

Databases Are Everywhere You’ll noce that, in most of my suggesons, there is persistent data storage required - i.e. each me you execute the app, you want access to the data/stat data/state e you previously entered. Do not shy away from this! It ’s hard to write applicaons today that do not, at some level, just persistent data storage storage whether it be in the form of cookies, XML files, or a database of some kind (like SQL Server,, MS Access, Oracle, etc). Step 3 will help you with this... Server

One Final Suggeston Although you could make your pet project a web applicaon, I’d advise against it for the me being.

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 5

Step 3: Buy a few starter-level books or take a few online classes that are on  your chosen language As the founder of the web’s greatest greatest video training company, I’m obviously biased towards video training classes. In fact, I have what I believe to be a very good C# training class for Visual Studio 2005 (and a Visual Basic version as well) over at h p://www. learnit irst.com/. irst.com/. However However I also love, love, love reading books. So pick up a video class or a book - just one for the me being though. I’ve found that if I buy too many books when I’m first learning a language that I get overloaded and it makes the process of learning a language more di ffi cult. However, what works for me may not work for you so don’t just do what I say because I said that it works for me!

What to Look For in a Starter-Level Book or Online Video Class Obviously you want good coverage of the topics that will help you build your pet project. This includes: • • • • • •

Building GUIs Working with persistent data storage Working with files and folders Basic architecture Basic object-oriented object-oriented architecture and design (OOAD (OOAD - also referred to as “class “class design” in certain places) Chapters that can can be digested individually  o Yo You u don’t want a book/course that, if you skip an early chapter (say, (say, Chapter 5 for example), you can’t finish the rest of the book.

What You Don’t Care About Many beginner-level books include intricate sample projects that span mul ple chapters that are meant to replace Step 2 in my 

system (the pet project). You’ll recogniz e such books youI’m seenot marke on the front cover such as, “Learn how to build a Password Manager!” or,recognize “Build Your Own Webwhen Server.” a fanng forspeak two reasons: 1. I’ve never never once finished one of these long, mul -chapter sample projects despite reading more than ten books of said type 2. I think that you will learn faster  and  and retain more by having to learn how to implement your own applicaon without anyone there to “hold your hand” (i.e. by giving you the code files and step-bystep-by-step step instrucons) Sample projects have their place but intricate, mul-chapter sample projects can be detrimental to the learning process in my opinion. Again: look for books/courses that have decoupled chapters (i.e. chapters that can be taken independently).

Step 4: Begin reading the book/taking the class Obvious step - couple of things to note:

Just Because They Are the Expert Doesn’t Mean They Know Everything Speaking as both an “expert” and an educator educator,, I can tell you the inside truth: experts are experts in what they know . I know that sounds simplisc but it’s true: you can ask me tons of ques ons about things I know and I will dazzle you (maybe?) with my intricate knowledge of this or that par cular piece/funcon/method/facet/propert on/method/facet/property/etc. y/etc. But ask me quesons about complex topics that I have no real-world experience in and I’ll fumble around like anyone (and I’ll look very lile like an expert). Whenever someone tells you about a “best pracce” or you hear phrases like, “That’s “ That’s the way everyone does it”, it”, it’s a good idea to have a reality check and verify what they are telling you is true. At this stage of your development, you likely won’t have the knowledge to ask smart quesons so it ’s important to keep notes of topics/areas that you’ll want to cover later in your development. You may find that you will learn things later on in this system that go completely against what you learn in Steps 3 and 4. You Yo u know what? You will also misinterpre misinterprett many things and completely gloss over incredibly important topics. This is normal.

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 6

Keep a Notebook and Code Manager Speaking of keeping notes, you will have so many ques ons at the beginning of your adventure to become a be er C# programmer that you need a way to organize them. I’m a huge fan of OneNote and I think it’s cut down the me it takes me to learn and master a new language. Check it out: h p://offi ce.microsof.com/en-us/onenote/default.aspx In your notebook, you’ll want to have secons/categories similar to: • • • • • • • • •

Quesons I Have OOAD Data types To-do List Working with Databases Working with Files and Folders Code Snippets Tips & Tricks Best Pracces

In each secon/category on/category,, you’ll take notes and maybe even reference page numbers, videos, speci fic concepts, etc. Tip #1: A good technique for learning is to take notes on a sheet of paper and then transfer them to OneNote later. later. This allows you to physically par t  t cipate cipate in the learning process three t mes: mes: (1) when you read/heard the material [i.e. aurally], (2) when you physically wrote it down, and (3) when you physically typed it in. Tip #2: Use good SIPs (stat st cally cally improbable phrases) in your notes to make it easy to  fi nd nd topics later.

Step 5: Implement your project while you are reading/takin reading/taking g the class Don’t wait - get started quickly. I don’t expect that you’ll have the knowledge to begin unl you are a few chapters in at the earliest though so don’t just start with no knowledge; wait unl you have enough knowledge of C# OOAD to intelligently start. Generally OOAD is covered prey early on in any compendium on a .NET Framework-based language so that shouldn’t be a problem.

Start with the GUI This probably goes against the grain of much convenonal programming advice but hey - it’s my “system” therefore I can tell you what I think works best. I find that if I start with the visual v isual elements when first working with a pet project, I can visualize/think of the rest of the applicaon much easier. easier. It gives me a frame of reference if you will and allows me to quit thinking in uer abstract terms and lets me to hone in on accomplishing specific things (like what happens when a user clicks the Submit bu on). Later on in your career you will learn of diff erent erent techiques but, for now, this is an easy way to dive in. Don’t get too fancy here - start with the first screen that the user will see; it is okay to add fancy items like splash screens and product icons if you wish. The key thing here is not to get so bogged down in the architecture that you have to re-do too much work later on (called refactoring).

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 7

How to Design a GUI While everyone has their own way of doing this, let me off er er a suggested system for designing your first GUI: 1. Start with a pen and paper and write up what it should look like (i.e. where where the icons and buons go) 2. Connuing with pen and paper paper,, write up what menu items should be 3. Once finalized, move to a graphics editor and create a mockup. You can use fancy tools like Photoshop or Illustrator if you have the budget or free tools like Paint.NET to create your mockup. o Although graphic mockups mockups are not a necessity, necessity, I find them helpful. Others find tools like Balsamiq (hp://balsamiq.com/) or Mockup Screens (hp://mockupscreens.com/) more helpful. To To each his own! 4. Once you have the mockup, now it’s back to the Visual Studio to create create it! Use your book/class for reference reference on how to accomplish this. Tip #3: It’s okay to skip ahead/around in your book/class (from Step 3) to the sec t  t on on that talks about how to create GUI elements! 

Afer compleng the GUI design, you will have a prey applicaon (if you did the graphic design well) that doesn’t do anything.

Afer the GUI, Start with Events The next thing you want to do is start “wiring up” the bu ons and menu items. This is where your programming skills will begin to develop. GUI drag-and-drop at this stage of your career is ofen nothing more than drawing the mockup graphics/items onto the editor (at least it’s that way in Visual Studio). You can’t mess up and you can’t do it wrong  - if you do make a mistake, just delete it and drag-and-drop another item onto the surface. The actual work is done when you decide the applicaon’s response to things like: • What the app does when when something loads or unloads unloads (i.e. appears on the the screen and leaves the screen) • What the app does when a user clicks a buon or menu item • What the app does when the user clicks Maximize, Maximize, Minimize, or closes the applicaon As a C# developer, you’ll spend much if not most of your me determining what happens when an event  occurs.  occurs. Events, as your book/class from Step 3 will teach you, are what happens in response to something occurring (like what happens when a user clicks the “Submit” buon). Go ahead and get your events in place - you can add the actual func onality later on. Afer compleng this step, your applicaon will respond to events (i.e. clicks) but won’t perform any actual work .

Afer the Main Events, Do Your Class Design The reason I advocate pushing this step unl afer you have both the main GUI elements and main events in place is that, if you start with the class design and then do the GUI + events, inevitably you find how screwed up your class design was and you have to rip it out and start over! It will happen even by delaying the OOAD un l this point but the chance is that, by delaying this step unl you have semi-finalized your design and events, it will happen to a lesser degree than if you had just started with OOAD. Later on in your career you may opt to start with OOAD/class design but, for now now,, it’s just easier to start with the GUI, GU I, then determine the events you need, and finally to determine the OOAD. Afer compleng this step, your applicaon will sll respond to events (i.e. clicks) but won’t perform any work since you’ve only designed the classes, not implemented them.

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 8

Afer the Class Design, Implement Method Stubs Method stubs are a way for you to “kind of ” get your program working. When you create in this manner, manner, you will go ahead and a nd create your objects along with the methods and properes for each. What you won’t do, however, is to finalize the method/property code; you’ll put a stub in place instead. Think of a method stub as a placeholder for work to to be done in the future. In most cases, you won’t have the necessary knowledge to write each method/property yet so go ahead and create the stub as a placeholder. Tip #4: Use except ons ons to help you remember what is a method stub and what has been implemented  Tip #5: Use comments in your code to tell Visual Studio that this is a TODO list item: // TODO: This is a method stub!

Afer the Method Stubs, Write the Pseudocode Learning to write pseudocode is a cri cal skill. Pseudocode is how you write the “how” of what your method/property will do but you write it in a programming language-like format. I’ve seen very complex pseucode examples and I’ve seen bullet points on a piece of paper serve the same funcon. To me, it doesn’t ma er - use whatever helps you understand the goal of the method/ property. I’ve found many mes that, in wri ng the pseudocode, that my logic was completely backwards and that I needed to rethink how the applicaon worked. That’s awesome because it means that I didn’t have to spend a ton of me refactoring the applicaon!

Afer the Pseudocode, Code It Up Now more procrasnang - get to work!

Step 6: Post your questions in an online forum dedicated to the language While you go through the Steps 3-5, you will likely: • • • • •

Get excited excited about the the possibili possibilies that C# has to off er er Become dazed and confused Get uerly frustrated with how vast C# and the .NET Framework are Get uerly frustrated with how complex so fware engineering is Mess up royally by either either overwri overwring changes that took you hours to complete, forget to backup your files, or need a complete refactor

You Yo u know what? It’s all normal for you at this stage. Your life as a C# programmer will likely follow the Gartner Hype Cycle:

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 9

In the graphic describing the Garner Hype Cycle: • The “Technology “Technology Trigger” Trigger” is your deciding to learn C# or to to become a good C# programmer programmer • The “Peak of Inflated Expectaons” is what happens when you start seeing C# as the soluon to everything • The “Trough “Trough of Disillusionment” is when you realize that (a) C# isn’t the soluon to everything, (b) that C# is massive,(c) that wring sofware is hard, (d) that there is so much to learn, and (e) that this isn’t going to be as easy as you thought • The “Slope of Enlightenment” is when you start start to “get “get it” • The “Plateau of Producvity” is when you become a good C# programmer!

Your Goal: To Minimize Your Time in the Trough of Disillusionment Let me tell you: it absolutely sucks to be bierly disappointed with what you’ve chosen to do. “This is way too hard for me there’ss just so much to learn that I’ll never learn it all!” While you may not be able to “learn it all” there’ a ll”,, you can learn enough to be a good C# programmer, programmer, I promise you. There are several techniques to minimize your me in the Trough of Disillusionment, a few of which are listed here: 1. Read/study more (i.e. the the brute force technique) technique) 2. Find a mentor 3. Ask for for help If you have a friend to ask for help, then your life is made just a bit easier. easier. Most newbies aren’t so lucky - they may not know any programmerss or, if they do, the programmer programmer programmerss may be at their job and if the newbie lets on how much they don’t know, they could get in trouble at work. That leaves the internet!

Find an Online Forum and Ask Questons We “good “good programmers” expect you to do this and, if you don’t (or don’t follow forum equee), we think far less of you. It shouldn’t be diffi cult to find a friendly online C# forum - in fact, Microso f hosts one of the best over at h p://social.msdn.microsof.com/Forums/en-US/c .com/Forums/en-US/category/netdeve ategory/netdevelopment. lopment. And I can’t say this enough: learn how to post ! Learn how to ask quesons by reviewing how others have asked quesons. There are several good ar cles on nequee: • Tips for Posng Data and Code: hp://www.sqlservercentral.com/arcles/Best+Pracces/61537 • Tips for Posng Quesons in a Forum: h p://www.mozilla.org/community/equee.html   * features my favorite topic: “Don’t hijack the thread!”

You Will Get Stuck in Your Pet Project Ask quesons in the forum so that you get out of the Trough of Disillusionment and on the path to the Slope of Enlightenment!

Step 7: Find some sample apps written in your language and review how they did things differently  Chances are that, while compleng your class/book (from Steps 3 and 4) and your pet project (from Step 5), you will come across at least one sizable sample project wrien in your chosen language. Let me o ff er er a bit of advice: 1. Look for complete applicatons o In my experience, experience, complete applicaons tend to be beer veed, contain beer code, and have less errors than  just quick “How to” example code. 2. Check out the author(s) o Authors ofen contribute on mul ple projects so, when you find a good contributor/aut contributor/author hor,, check out what else they have that you can download! You also might wish to see if the author/contributor has a blog, a book, a class, etc.

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 10

For the Microsof community, CodePlex.com is generally the hosng site of choice for “sample” apps and general release apps alike. For many applicaons, you can download both a compiled version and the source (ofen in both C# and Visual Basic). There are literally hundreds of high quality sample applicaons to choose from - here are a few that have C# source code included: • • • • • •

hp://www. p://www.codeplex.com/ codeplex.com/ hp://twe p://tweety.codeplex.com/ ety.codeplex.com/ hp://imagemaster p://imagemaster.codeplex.com/ .codeplex.com/ hp://youdown.codeple p://youdown.codeplex.com/ x.com/ hp://indihiang.codeplex.c p://indihiang.codeplex.com/ om/ hp://tweetcraf.codeplex.com/

• hp://skypefx.codeplex.c p://skypefx.codeplex.com/ om/ • hp://terrarium2.codeplex.com/ p://terrarium2.codeplex.com/

CodePlex.com has literally thousands of apps Tweety - a C# Twier client ImageMaster (for managing .iso files) YouDown Yo uDown - download YouTu ouTube be videos IIS Log Analyzer TweetCraf - an in-game Twier client for World of Warcraf Skype Voice Changer .NET Terrarium

Just Be Wary Just because the code works and has pre y graphics doesn’t mean that it is well-wrien code...

What to Look For You’re really wanng to see the big picture - the “how” “how ” of why the authors/contributors did it the way they did. You aren’t so much looking for speci fic code examples as much as you are looking to see how professionals ship code. Look for things like: • How did they create create the solu soluon: one project or mulple projects? o If mulple projects, why? • How did they handle handle class design? o It’s ofen handy to pick a problem and try to decide how you would’ve designed the OOAD and then compare it to how the authors did it. • Do you get any compiler compiler bugs? bugs? o Can you fix them? • Did they do things the way that your book/class book/class author (from Step 3) showed you? o What is diff erent? erent? Don’t be surprised if you have much diffi culty answering the above quesons - afer all, the people who contributed to the sample app you just downloaded probably have several more years of experience than you do. But that’s okay - you’re well on your way to becoming a good C# programmer!

8: Finish your book/class and buy another book/class that is speci fic to begg i nner /in te terr me mediate diate level  your language of of a be  Step

You have two choices for con nuing your educaon afer you’ve completed your pet project and first C# book/class: 1. Connue with domain-specific knowledge (i.e. get another C# book/course) 2. Branch out to sofware engineering topics like OOAD or design paerns

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 11

Personally, at this stage, I think you’re be er off  going Personally,  going with op on #1: ge ng a C#-speci fic book/course. I know there are tons of folks who would disagree - and you might should listen to them! - but I think that, at this point in your career, it is quite diffi cult to wrap your head around abstract concepts for months at a me; instead I’ve found that people learn beer when they can apply what they are learning to their language of choice. There are plenty of Sofware Engineering cum C# books and courses out there that combine the two as well (“Head First C# Design Paerns” is a great one BTW). However, I would suggest you pick a next-le However, next-level vel book that helps you acquire speci fic skills that you can use to get a job. Learning design paerns in C# is great but they won’t open files, make web service calls, do type conversion, or teach you boxing/unboxing. Right now you should be 1-2 months into your C# career and, in my opinion, you s ll need to learn more of the basics of C# before ge  ng into topics like design paerns and OOAD speci fic topics. So focus on finding a beginner/intermediate level book that helps you accomplish something that you can get paid to do: • • • •

ASP.NET (now ASP.NET (now’s ’s a good me to start with web apps incidentally) How to to work work with SQL databases databases Working with Silverlight Pick up a comprehensive course/book on the .NET Framework

I’m sure that this advice is just “crazy” to some people but look: I’m just one guy who knows C# and knows training. By no means does that mean I know how to train everyone because not everyone learns the same way or at the same pace. Take my advice with a grain of salt. Does it make sense to you? Then I hope it helps. If it doesn’t make sense, don’t do it!

What to Look For Since Step 10 is coming up and it is all about a bout picking another pet project, pick something that can help you towards that goal.

Step 9: Begin answering other people’s questions in forums Now that you know a lile, you can start helping others. One of the most proven ways to learn is by teaching others. You may think you know how things work but trying to explain a tough topic to someone who knows less than you when you don’t fully understand the topic is tough for anyone! So help others - look for the newbies and try to guide them along. Make suggesons that reference books/courses/authors/trainer books/courses/authors/trainerss - people love that stuff . Just follow good forum equee!

Step 10: Pick a new pet project and implement it Now’s the me to move into ASP.NET, Silverlight, WPF, or whatever technology you want to work on. This should be an applica on that you take with you on job interviews and that, if it ’s good enough, you release as open source sofware yourself (maybe on hp://codeplex.com). Take your me, find something interesng to work on, and make sure that it highlights things you like. You’d be surprised at how o fen employers find job candidates in forums and in the open source community.

Suggestons for Your Final Pet Project • • • •

Take it serious seriously ly Use high quality graphics (spend a few bucks to to get them a la carte carte from a place like hp://istockphoto.com/) Embed your name on each source code page Have friends test it out

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 12

Learn About Usability Sofware developers are not renowned for creang great, usable applicaons by default; we have to work really hard to make our applicaons usable by people who didn’t write the code. Two book sugges ons: • Steve Krug’s seminal work, Don’t Make Me Think  • Janice Redish’s Le  ng Go of the Words

Final Thoughts on Your Final Pet Project There is nothing wrong with going back to your first pet project and implemenng more features...

Step 11: Review some open source apps written in your language This is similar to Step 7 in which you reviewed several sample applicaons. The diff erence erence here is that you want to go with a li le more “upscale” applicaons - more fully implemented apps and more apps wri en by a community community.. Here are a few:

Open Source ASP.NET Website Apps: • • • • • •

hp://www. p://www.asp.net/community/pro asp.net/community/projects/ jects/ hp://ww p://www. w.yetanothe yetanotherforum.net rforum.net// hp://cart p://cartrackr.codeplex.com/ rackr.codeplex.com/ hp://www. p://www.codeplex.com/Kigg codeplex.com/Kigg hp://ww p://www.codeplex.com/oxite w.codeplex.com/oxite hp://bugnetproject.c p://bugnetproject.com/ om/

ASP.NET Starter Kits are ASP.NET are a great resource resource for this stage stage YetAnotherForum is a quality ASP ASP.NET .NET forum site Car Trackr is an ASP ASP.NET .NET MVC app Kigg is an ASP ASP.NET .NET digg copy using the MSFT Enterprise Library and LINQ to SQL Oxite is an ASP ASP.NET .NET MVC CMS Bugnet is an open source, ASP ASP.NET .NET bug tracking system

Open Source C# Windows Forms Apps: • • • • • • •

hp://www. p://www.nunit.org/ nunit.org/ hp://sharpdevelop.cod p://sharpdevelop.codeplex.com/ eplex.com/ hp://code.google.com/p/ipho p://code.google.com/p/iphonebrowser/ nebrowser/ hp://xmlexplorer p://xmlexplorer.codeplex.com/ .codeplex.com/ hp://turtle.codeplex. p://turtle.codeplex.com/ com/ hp://terminals.codeple p://terminals.codeplex.com/ x.com/ hp://sourcefor p://sourceforge.net/projects/k ge.net/projects/keepass/ eepass/

NUnit is essenal for all Windows-based developers SharpDevelop (a.k.a. #develop) is a free, open source IDE iPhone developer developer XML Explorer turtle SQL helps you generate SQL Server database documentaon Terminals is a complete replacement for the default Terminal Services client KeePass is a combo C++/C# app

The two “biggies” for open source for the .NET Framework tend to be h p://www. p://www.codeplex.com/ codeplex.com/ and hp://sourceforge.net. CodePlex, because it is run by Microso f, is a more ghtly focused (and possibly more targeted) group of .NET apps whereas I find SourceForge SourceForg e to be a di ffi cult site to navigate and find something interesng.

Step 12: Contribute to open source apps You can’t just be a leech (i.e. someone who takes but provides nothing in return) - now it’s your turn to help out. Contribu ng to You open source applicaons has many benefits: • • • • • • • •

You’ll learn to integrate with a pre-exisng team Your knowledge and comfort levels levels will be expanded expanded You’ll learn the style of others others (everyone has their own own coding style) - example example You will be exposed to to technologies/techniques technologies/techniques that you would would not have otherwise seen You’ll feel good good that you helped make a product beer in some way You may receive receive a level of notoriety by being on the team Many companies will not hire hire people who have have not contributed contributed to open source source projects Being a developer developer on open source source projects is ofen seen as showing passion for development

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 13

Here are a few good resources as well: • How to start contribung to open source projects • How I got a job job at Fog Creek sofware

hp://www p://www.kegel.com/acade .kegel.com/academy/opensource.h my/opensource.html tml hp://hicks-wright.net/blog/howp://hicks-wright.net/blog/how-to-getto-get-a-job-at-f a-job-at-fog-creekog-creek-part-1/ part-1/

What to Look For in an Open Source Project You want an acve community and by “acve” I mean that you want to see a steady history of changes, new features, modificaons and so forth. Seeing a road map is nice too. Also, you want something that you care about. Look - we’re all volunteers in the open source world. If you don’t care about bug tracking then don’t join a bug tracking applica on - you’ll end up qui  ng or ge  ng booted out because you aren’t spending the me. Also, that road map I men oned earlier is important - if you see that the applicaon is due to take a turn into a technology that you don’t care to learn, then don’t join. I also would like to see that the tasks needed to be performed would interest interest me. If the task list is, “Provide documentaon for all classes” well, I might skip that one... Sure it needs to be done but I’m not likely to learn as much performing that task as I am performing a task like, “FTP download roune has a bug - find it and fix it”.

What Not to Look For Don’t look for polish everywhere - that’s not that important. I worked on YetAnotherForum YetAnotherForum (hp://www.yetanotherforum.net/) for literally years and, when I started on it, it was poorly documented, the SQL Server database was a joke, the class design was weak, and so forth - but I learned a great deal working on it. The guys on the project are great guys and they learned as they went too. If I was looking for polish then I would’ve looked elsewhere. However, However, what I saw was that this sofware did what I wanted, that I felt I could improve upon it, and that it was in an area that I had a passion for. So don’t get hung up on logos, pre ness of buons, great descripons, full-blown documentaon - look for places where you can add value.

Step 13: Write a few articles on subjects you enjoy  Remember back in Step 9 when I suggested that you start answering other people’s forum quesons because it helps you learn? Well this is similar: wring an arcle about a diffi cult topic will force you to spend a good deal of me on areas that you thought   you knew but, upon delving into them, you realize that you’ve only scratched the surface. Pick topics that you like - don’t worry if the topics have already been covered by others; your goal is to help yourself  learn   learn to become a good C# programmer, right? So write ar t  tcles c  les that force you to learn and that force you to simplify  complex  complex topics.

“Any fool can make things bigger, bigger, more complex, complex, and more violent. It takes a touch of t on”genius-and a lot of courage- to move in the opposite direc t  on”- Albert Einstein

You want to do one thing: make complex topics seem simple to the reader . Why? Because if you can do that, you have shown you have a deep understanding of the topic. Another great quote is from one of my musical heros:

“Making the simple complex is commonplace; making mak ing the complicated simple, awesomely simple, that’s creat vity.” vity.” - Charles Mingus

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 14

Other Reasons to Write Artcles At this point in your career, career, you likely either have a decent programming job or are eligible to get one. If you want to move up the career ladder as quickly as possible, you need great communicaon skills. Just like being a good C# programmer takes pracce, being a good author (or trainer) takes pracce. Wring comes naturally to some but is di ffi  cult for others. Here’s the truth: developers who have “the knack” for creang readable documentaon, succinct emails, and who can empathize with their audience will generally move up the career ladder faster than those who can’t. By forcing yourself to write arcles, you’ll not only learn things about C# and programming but you’ll learn how to communicate complex topics quickly and succinctly - and that will pay dividends over your enre career ca reer.. Wring arcles also gives you a public persona which can be a posi ve thing (provided that your arcles are quality). Potenal employers will do a quick Google search (ahem - or a Bing search) to see what you’ve wrien, what you’ve posted online, and generally to see what they can find out about you. Make it easy: provide them with links to your arcles in your resume. I’ve seen people who go so far as to put their forum user names in their resumes so that poten al employers can see their par cipaon!

Where to Publish Your Artcles I suppose “arcles” is a bit of an o ffi cious word - these could be blog posts if you wish. You have several opons: • • • •

You can create create your own blog and host host the arcles there (employers *love* this) You can find popular blog aggrega a ggregaon sites and post them there You might even be able able to post them here (just ask us over at LearnItFirst) LearnItFirst) You could publish them in printed printed magazines.

Personally I favor creang my own blog and pos ng things there. I’ve always been that way although I’m not sure its the best thing for you. Check out some of the popular blog sites and see what it takes to have your blog hosted by them. You’ll You’ll give up certain publishing rights yet you’ll be given an audience (and that’s that ’s important). important).

Step 14: The Mystery Bonus Step! If you’re sll wanng to know what it takes to be a good C# programmer, the final bit of advice I can o ff er er is to start your own business! Whether you want to sell commercial sofware, have an adverser-supported ASP.NET website, or do consul ng, having your own business is a great way to get be er er.. It forces you to listen to your users - if you don’t, they won’t pay you. And you don’t have to start full- me; most developers have side projects in addion to their day job. So start your own business - if you’ve followed the previous thirteen steps I outlined, you’ve got enough experience to design apps and to help others. You You likely don’t have the experience to be considered a “great” programmer but hopefully that will come with me for you!

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 15

Now You Have the System I believe that, if you follow the thirteen steps that I outlined in this ar cle, you will become a good C# programmer. You just can’t help but become a good programmer when you do things like learn from people with tons of experience (i.e. reading the right books, taking the right video classes, and reviewing quality developer’s code). It will take you me to become a good C# developer but, like all things worth doing, you will have a sense of pride once you’ve gone through these steps. And if you do Step 14 - the one where you create your own business - you might even be one of those people who makes their living from wri ng their own sofware (and that’s a great feeling - trust me). I wish you luck and I hope that you will share this ar cle with others so that, together, together, you and I can make someone’s life a li le bit beer er..

The Next Steps Inevitably everyone wants to know, “What now? I’ve followed the system and I’m doing well - where do I go from here?” Really it’s  just more of a “Rinse and Repeat” mantra: find some books/classes, contribute to more open source projects, develop more pet projects, read more books, take more classes, etc. You need me and “seasoning” to go from “good” to “great”. The good news is that even good programmers can write great programs, enjoy programming, and make a great living. In fact, it’s quite easy to just be a “good programmer” for your whole life. I hope you’ll go on to become a “great programmer” programmer” though!

 What Does Does It Take to Become a Great C# Programmer? Whew - big queson! It certainly takes years of experience - I think everyone can agree on that point. What else though? I think most people who list these aributes: • • • • • • • • • • • • •

High intelligence Training Tr aining on the right things (i.e. “perfect pracce” as opposed to “pracce makes perfect”) Exposure to many many systems systems and styles Passion for learning, developing Creavity In-depth knowledge of internals Ability to make complex complex topics topics simple Unit tesng knowledge Knowledge of paerns Ability to quickly solve solve problems problems Ability to accurately scope scope projects projects and provide provide accurate accurate melines Ability to hit deadlines Ability to to debug debug quickly and effi ciently

There are many more aributes and skills, of course, but these are de finitely in the ballpark.

How can you develop these skills? I wish I could say, “This one thing - if you’ll go do this one thing, you’ll become a great developer” but I just can’t - it’s not possible. In my opinion, some people aren’t born to be great programmers. programmers. Some people have all of the aributes except the ability to stay focused and hit a deadline - and they aren’t great programmers. programmers. Others become really great at a speci fic version yet allow their skills to age - they don’t update their skillset as new versions or technologies replace what they mastered. That’s where the passion for learning and technology comes into play - you’ve really got to love developing to put in the hours it takes to remain a great developer.

http://www.learnit first.com/ Sales & information: (877) 630-6708

 

How to Become a Good C# Programmer 

Page 16

TechUrbia: A LearnItFirst Blog

How to Become a Good C# Programmer By Sco Whigham

I’ll give you a few books that will allow you to help yourself (look them up in your search engine of choice): • • • •

a nyone serious about becoming a great developer The Pragmatc Programmer - a must for anyone Code Complete - techniques, design paerns, “life as a programmer” Head First Design Paerns - I think most developers have this book! The Mythical Man Month: Essays on So fware Engineering - You just thought you knew programming...

There are many, many more books worth reading - I’ve only focused on pure programming-related programming-related books. There are books that change your outlook on life, books that mo vate you, and inspiraonal biographies that can make you feel like a small, insigni ficant ant - all of which most great developers enjoy. enjoy. The one thing I’m sure of is that it takes a desire to learn and improve. Without that, the rest will not follow. I wish you luck on your journey!

About the Author Sco Whigham is the founder of LearnItFirst.com, one of the web’s most extensive video training libraries focusing on technical training. Sco  has recorded more than 1,200 training videos on topics like SQL Server, .NET, and more. You can read more from Sco  at: hp://www.techurbia.com/sco-whigham.html hp://twier.com/ScoWhigham

 About LearnItFirst.com:  LearnItFirst.com: LearnItFirst is a leader in the online video training for the Microsoft community. With nearly 400 hours of classroom-quality video training online, LearnItFirst has one of the largest online training video libraries on the web today. LearnItFirst’s LearnItFirst’s online courses are a cross between a “live” instructor-led instructor-led class and a “how to” book. Customers get the affordability and portability of a book and the “Watch and Learn” of having a live instructor. All courses feature full-screen resolution videos with high quality audio to ensure the very best possible training experience. LearnItFirst.com LLC LLC was founded in 2004 and is based in Dallas, Texas.

http://www.learnit first.com/ Sales & information: (877) 630-6708

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close