Wednesday, July 23, 2014

Getting Hired After Camp - Part 3

Time to wrap it up! We've talked about most of your pre-work already - your online presence, your resume, and your projects.  We'll finish with some tips based on my experience with finding quality job leads, dealing with recruiters, and the all important interview.

Fair warning - this post got really long. I would have split it up but the rest of my week and weekend are super busy, so I'm just going to plough through tonight until this is done.


#1. Where to find a job (that you qualify for):

There are a TON of Web and Software Developer jobs out there. The trouble is, when you first start looking, it seems like they are all for Sr. Devs with ten+ years of experience. Do not despair - the job for you is out there.

I probably submitted somewhere between 30 and 40 applications before I received two interviews.  Both interviews resulted in official job offers. Some of my classmates had to submit far more applications, but also got hired in the end.

You should certainly be looking for Junior level positions. But you absolutely should also be applying to Mid level positions, and even Senior level positions, as long as they are looking for skills that you posses. Senior Java Developer? Probably not for you (unless you happen to know Java). Senior MVC/Javascript Developer? That's something to look at and possibly apply for.

You are very rarely to never going to see a job post for a Junior Developer job that requires no experience.  You will see far more "Jr." Dev postings asking for 5 or more years of experience. Do not let this discourage you. For one thing, after you finish Coder Camps, you actually have very strong coding skills in current technologies. And you have a ton of practical experience. Also, a lot of those "years of experience" requirements were written by HR folks that have no idea what the Engineering Department really needs.

Pay more attention to a good fit in terms of desired skills/languages rather than years of experience. Thats what the savvy employers are doing, you should to.

Okay - where to find jobs?

The obvious: LinkedIn, Monster, Indeed, and Dice. All the other various online job sites.

Put your time in on all these sites. Applications are time consuming, make sure you set aside a few hours a day for this.

Where else to look? Check out Reddit, and Craigslist. One of my classmates turned me on to Craigslist when I complained about having a hard time finding Jr level jobs on the big job sites. I found at least as many good opportunities on Craigslist as I did on Monster, Indeed, and Dice combined. One of the two offers I received came from a company that I applied to after reading their Craigslist ad.

Recruiters - more on these people in a moment, but you should be using them, and their websites. All the large recruiters have company websites with job postings. You can easily google who the top recruiters are in your area.

Network! Have you been blogging? Talk to your family, friends, and former work colleagues - make sure they know what you are doing - odds are a few of them know people in the software industry that they would love to introduce you to. I received a few leads from family and friends - none resulted in a job offer but I made some good contacts, added some folks with serious credentials to my LinkedIn network, and got some valuable advice about the local job market.

#2. Recruiters:

If you have followed the plan this far you have already started getting calls, emails, and LinkedIn invites from recruiters. If this is not happening for you, go back and read parts 1 and 2 again and see what you missed or what you can tweak. Make sure your resume has been uploaded to the major job boards and is searchable.

Recruiters can be difficult. The typical (bad) recruiter contact reads something like this: "Hi, I checked out your resume and you sound like a perfect fit for this Senior Developer position I have that needs 15 years of experience! If you are interested please send me your resume."

That said - you need to respond to all recruiter contacts. If you get something like that, send them your resume and say something like "Sounds great, I might be a little green for this position but take a look at my resume and let me know if we should more forward on it, and please let me know about any other positions you think are a fit for me."

Odds are you won't hear back from that recruiter again, but you never know.

The good recruiters will actually read your resume before emailing or calling you. They will ask you questions about your experience, about camp, and about what you want to do, and how much money you want to make. If they are local they may want to meet for coffee or lunch. Do it! If nothing else, free food!

If you can, reply to a good recruiter by phone rather than email. Return their call or email promptly, and be ready to sell yourself a little bit. This will help them sell you to prospective employers.

I really can't stress this enough, you can't know which lead will eventually pan out, so you have to treat them all as if they will. The job I ended up accepting came to me through a recruiter that saw my resume online and just called me up one day. Guess what, the job posting was for a Senior Developer position. But the recruiter said I appeared to have some strong skills so lets give it shot. I figured nothing would come from it, but I applied anyway.

Well the recruiter had a very strong relationship with the company and they did a great job of selling me. It got me a phone interview. The company was not looking for a Junior Dev but they liked me and trusted the recruiter so they told me they would talk to the rest of the team and see if they had capacity to mentor someone green like me. They said I'd get an in-person interview if they did, otherwise, I would not. Again, I figured that would be the end of things. But no, they called back and scheduled the in-person interview!

I ended up getting hired as a Junior Dev (Software Development Engineer I) when they had posted a job opportunity for a SDE III (Senior Dev) and weren't even looking for a Jr. Dev. 

Last thing on recruiters - don't just wait for them to contact you - you should have a bunch of other Coder Camps folks in your LinkedIn contacts - check their contacts - some of them will be recruiters - reach out to those recruiters yourself. Search for reputable recruiters in your local area and contact them through their websites or over the phone.

#3. The Interview.

This is a subject people write books about. So I think the best thing I can do is offer you my impression of what worked for me and a few tidbits of advice.
 
First of all - talk to the folks at Coder Camps (Dave is not that scary!) and ask them about their interview experiences.

When you go for the in person interview(s) make sure to ask about how to dress - you need to balance being real with dressing for success. For example - I was told to wear "strong business casual, a tie and or sport coat are appropriate." I wore dark grey slacks, dress shoes, a fitted shirt, and a tie. I did not wear a sport coat - its just not me, I never wear them and I would have felt uncomfortable and fake. Turns out that was a great decision - everyone that interviewed me was dressed in shorts and t-shirts or other casual wear. I rolled up my shirt sleeves but kept the tie on - it looked good. I made sure to let them know I appreciated the casual dress policy.

Over dressing for an interview is as much a problem as under dressing for one - everyone is looking for people that will "be a good fit for the team" - that means they want you to be the kind of person they can see themselves going out to have a beer with after work.  You will need to dress the part, which means asking on the phone what to wear to the interview.

Be ready to code! Some places do an HR style interview and then after a second technical interview. My company just goes all out and has you meet with 6 developers over the course of 4 hours all in one day. I was asked to code two different problems at people's desks. I ended up doing one in Javascript and the other in C# - make sure you are keeping up on your coding after camp - do NOT get rusty! Do some coderbytes - they are great practice.

Make sure to talk! They want to know, not just that you can code, but also how you think - you need to describe what you are doing and thinking out loud as you work on a code challenge. In fact, if you do this, you can often get advice from them, "well I'd probably do it this way...or like this...right?" - nobody knows all the answers - asking for help will be a part of your daily life as a Dev - its okay to do a bit of it in the interview.

Oh, don't forget to use your tools! one problem I had to do required some nested loops. My output wasn't quite what I expected the first time I ran it (or the next 4 times but whatever, I got it done eventually). As soon as I set a breakpoint in Visual Studio the guy watching me started nodding his head vigorously - I had done the right thing - I showed him I knew how to use a tool!

Be prepared for trick questions and riddles. Not all interviews will have these but they are pretty common. I was shown some code that was semi-advanced syntax - stuff I had not seen before, and I was asked to explain what the results would be. I talked through the parts of the code I did understand, and made an educated guess based on that - explaining honestly that I had not used that particular structure before and so my answer was based on what I could infer from the part I did know. I didn't get the answer right, but they didn't seem to care - it was a trick question anyway and by showing my thought process they were able to see what they wanted to know about me.

I also had to answer some logic puzzles. Again, talking it out, and showing your work on a whiteboard are your friends here. It's not so much about the getting the answer right as is it being able to explain your thought process and having a logical way of attacking the problems. That, and, show enthusiasm for it! Odds are, they want to hire someone that thinks its fun to work through a hard challenge they don't already know the answer to.

Be honest about what you don't know - and emphasise what you do. I don't know all the theory that a candidate fresh out of a 4 year CS program knows. I could not answer any of the theory related questions I was asked. I didn't try to fake it, I just explained that my education was focused on application - how to solve problems by writing code, but I still ad a lot I wanted to learn on the theory side of things. My interviewing actually said "yeah, for an entry level position, we can either hire someone that knows a lot of theory, or someone that knows how to write code." They know it, you know it, just acknowledge your gaps, remind them of your strengths and move on. Do show an interest in filling those gaps though!

My final advice - have questions ready for them - about the company - it's products and it's future, about the Dev team - how does the team function, how do they divide up work, how to they communicate, what's the culture like, and about the position - what are they looking for in a candidate, what traits do they find people that are successful in this role share? You will almost certainly be given several opportunities to ask questions. If you fail to do so you are saying you don't really care about the job, or you haven't done your research.

Oh, ok, one really final thing - Do your research. Before you go in to the interview study the company website, understand what they do and what you will be working on. Read the company profile and reviews on Glassdoor.com. Look for recent news stories or press releases about the company. There will be opportunities in the interview for you to use this knowledge and it will reflect very positively on you.

Wow, well if you read all that in one go, good for you. I wish you luck but you really don't need it - the jobs are out there and they need you. Put in your work at camp, and put in your work in the job search and you will find the job for you. And don't settle! I told you I got two offers. Well the first one was for $23k a year LESS than the second one. I only had to wait an extra day for that second offer to come in, but I was nervous. Turned out I didn't have to be. If the offer or the company is not right, do yourself a favor and wait for the one that is, it's probably right around the corner.

Tuesday, July 22, 2014

Getting Hired After Camp - Part 2

In yesterday's blog we covered several key aspects to preparing for your job search: your blog, LinkedIn, online portfolio site, portfolio projects, and GitHub repos.

Today I was going to finish up by covering your resume, talking about where to find jobs (that you will qualify for), recruiters, and the interview process. However it turned out that resumes are a pretty big topic; one large enough to have an entire post devoted to it. So tune in tomorrow for Part 3 - where to find jobs (that you will qualify for), recruiters, and the interview process.

Please keep in mind that everything in this blog is just a suggestion. These are tips that worked for me, but it's always a great idea to think outside the box and come up with unique strategies of your own.

Disclaimer - Let me start by saying that my resume is by no means perfect. Specifically, its lacking in proper description of projects I worked on in Camp. More on that below. Also, I am not a designer - there are many templates out there you can use to make your resume visually more attractive than mine.

Disclaimer aside, you can see my resume here: LWalden Resume.

Length:

The first thing to know is that you can throw out the old rule of fitting everything on one page. Yes, ten pages is excessive, but overall, if your resume contains the right content (and ONLY the right content), length is largely unimportant.

Customize:

Before you attach a resume to a job application you need to review it and edit it to match the requirements of the job posting. Most job postings include a bullet list of key skills and/or duties. Your resume should speak directly to as many of those bullet points as you can (while being honest about your skills and experience) - if possible use the exact same phrasing as the job posting.

Yes, it is a lot more work to tweak your resume each time you send it out, but it is well worth it. The HR rep that reads your resume has no idea what "Linq to SQL" means. They just know that they have a list of requirements they are looking for - you need to use phrasing that matches their list to get your resume moved on to someone that can make an informed decision.

Your resume should contain several key sections:

Contact & Bio:

Your name, phone number and email to start. Then add URL's for your LinkedIn profile, GitHub account, online portfolio, and your blog. You do not need to include your snail mail address - in fact this information can only hurt you if a potential employer thinks you live too far away.

Skills:

You have learned a lot at Coder Camps - let people know! This is the most important section in terms of getting recruiters to contact you, as they often work with keyword searches. Include programming languages, frameworks, IDE's, etc. Avoid including non-coding related skills such as "MS Word", "Powerpoint", or "Sales".

Experience:

This is one area that will be very different from a "typical" resume. Odds are you don't have much, if any, experience as a Developer. That means you can't just do the typical list of  previous job titles, dates of employment, and bullet points detailing duties and accomplishments.

Instead you need to list projects and describe what technologies you used and how you contributed to the project.

Bad: (and yes, mine resume looks a lot like this)
Full Stack Developer - Coder Camps - x/x/xxxx - x/x/xxxx
Created dozens of Apps using Javascript and C#.
Worked as part of an 8 Developer team on a real-world application in an agile development environment.

Good:
Full Stack Developer - Coder Camps - x/x/xxxx - x/x/xxxx
Project: Twitter Clone
Designed and developed a working SPA twitter-clone client including a UI with profile management, asynchronous AJAX calls to a restful API, connection to a NoSQL database, and the ability to communicate with clients developed by other developers at Coder Camps. Utilized Javascript, AngularJS, Firebase, HTML5, CSS3, and Bootstrap 3.

Project: JrDevs.co
Used C#, Entity Framework, and SQL to add back-end support for job posting and job seeker skills functionality. Used Javascript, CSS3, and AngularJS to add frontend UI for the same skills functionality. Redesigned site forms and added client-side validation using AngularJS.

You will want to use technical language in this section and highlight your contributions to group projects (rather than the scope of the entire project). Keep listing projects until you have covered as many of your skills as possible.

I did not do this on my resume. I received feedback from several recruiters that this would be helpful. When I applied for the job I have now the recruiter asked me to give them a word document that basically described several of my projects in this format. They attached this two-page document to my resume for me - it didn't look good - the formatting was totally different from the rest of my resume, but you know what? I got the job!

Do yourself a favor and just include a list of your projects on your resume now.

What about previous jobs?

You should include SOME of your previous work history from other career fields. Include any job you held for 2+ years - the HR team will like seeing that you can stick around. Include anything that shows you can successfully work as part of a team. Include anything that shows you have critical thinking skills, or have done creative work in the past. Include any promotions you received, or times when you made significant contributions to the success of a company you worked for.

Beyond that, the rest of your work history can be cut if your resume is getting lengthy. If you have ten years of work experience, there's no need to go back and list every job back to the beginning. At the least, consider removing any bullet points or description of job duties that will be totally irrelevant to what you will be doing as a Dev. Just be careful to avoid creating the appearance of large gaps in your work history.

Education:

Include Coder Camps! Keep in mind that code boot camps are still relatively new - so its a good idea to include a short description of what camp is, what you learned, and the amount of time you invested. Rather than just saying camp was 9 weeks long, consider how many hours you spent on the pre-reqs, in class, on homework at night and on the weekends, and in the Masters section if you attend it.  Add it up - it's going to be between 600-1000 hours of intense instruction and application of current best practices and the latest in demand technologies in today's development environment. That's information you want to communicate to potential employers.

References:
Do not include references on your resume. Do not say "references available upon request" This is a waste of space. The exception: as you customize your resume for a particular job post (which you will always do as part of applying!) you should include references if the job post specifically asks you to.

Where to post your resume?

Once you have your standard resume ready (please have several people proof read it!) you need to post it online. At a minimum you should post your resume to Dice.com, Indeed.com, and Monster.com. You should also make it accessible from your portfolio site and LinkedIn profile. Reddit has sub-reddits for jobs by city/region that you can post in, and there are probably hundred of other places you can post your resume online.

Cover Letters:

Writing a cover letter is one of the most hated parts of applying for jobs. Fortunately, writing a cover letter for your first Dev job is a little different, and not quite as painful.

First - pay attention of the requirements in the job posting. Often they will give very specific instructions for how your cover letter should be crafted. Follow these instructions. It's a test. To see if you can follow instructions. Pass the test.

Next - If there are not specific instructions, but they do ask for a cover letter follow these guidelines:

  • Be real - Speak in your own voice, don't be overly formal.
  • Be honest - If you don't meet all the qualifications, don't lie about it.
  • Sell yourself - You don't meet all the qualifications, sure, but you are still a great candidate - tell them why they should hire you anyway - communicate your passion, dedication, and talents.
  • Keep it short! - One paragraph is fine. Three is way too long. (again, unless the job position has specific guidelines.)
  • Do not use a form letter! You might have a template to start with, but you had better customize it using the information in the job posting you are responding to.

Finally - If the job posting does not ask for a cover letter:
Cover letters often go unread. If they didn't ask for it you can consider simply not including one. Another way to go is to just include a couple well crafted sentences that speak to your passion for development, and refer them to your blog, online portfolio, and resume to learn more about you. "My resume contains links to my blog, LinkedIn, and online portfolio so you can truly gauge who I am, and the quality and productivity I will bring to this position."


That's it for resumes! I'll try to wrap things up tomorrow with where to find a job (that you quality for), recruiters, and the interview.

Monday, July 21, 2014

Getting hired after camp - Part 1

One of my favorite things these days is watching as my classmates from Coder Camps announce their new jobs on LinkedIn. Afterall, that's why we all decided to invest so much time, effort, and money into this process!

The experience of being at camp is intense. You are learning so much, so quickly, it's hard to focus on anything else. But before you know it, camp is over and it's time to start looking for that first Dev job. Will you be ready? It's easy to let that moment sneak up on you unprepared.

So with that in mind, here are some tips for current campers, to help you prepare yourself to land that first job.

Today I'll be covering your blog, LinkedIn, online portfolio site, and portfolio projects. Tomorrow, in part 2, I'll cover your resume, where to find jobs (that you will qualify for), recruiters, and the interview process.

But first - when should you start?

Your blog and LinkedIn need attention while you are still doing your pre-work. You will update these resources on an ongoing basis as camp progresses. When to go live with your resume, portfolio site, and portfolio projects is up to you but I highly recommend you have them all ready to go at the same time. Week 5 or 6 is a very good target. You can always add additional portfolio projects later, but have at least one ready to go when you start sending out those resumes.

You will be very busy at camp. You do not have time to work on these things during the week. So that means these are weekend projects. I know that doesn't leave much time for rest and relaxation, but you do want a job as a Developer, right? Put the work in NOW, rest and relax when the paychecks are coming in.

#1. Blog With Employers In Mind.

Did you create your blog, like Coder Camps recommended in your pre-work? I hope so. The absolute best way to get a job is through networking. The people that read your blog know other people. Some of them work at companies that hire developers. Make sure your network knows what you are doing!

I know how easy it is to let the blogging slide, but you should be posting at LEAST once a week. Share each blog post on social media - Facebook, google+, LinkedIn, etc.

When you write your blog posts, you should assume that each post will be read by all potential future employers. That means check your spelling, maintain a professional tone, and most of all, be positive.  This is where you can show an employer that you love what you are doing. It's not the place to vent about how overwhelmed you are.

Try switching off between posts that are technical in nature - speaking about the technology you are learning, and what you are able to do with it - and more casual posts that non-coders will be able to understand - speaking to the experience, how you are growing personally and professionally, and just what's on your mind.

#2. LinkedIn

Okay, you have your blog. Have you set up, and/or updated your LinkedIn?

This one's a little more straightforward:
  • List Coder Camps as part of your education.
  • Put a link to your blog and your online portfolio (more on this in a moment) on your LinkedIn profile.
  • Make sure your profile is public!
  • Send invites to all of your classmates (including those ahead and behind you!), and to the Coder Camps staff.
  • When you get to phase 3, include the group project in your work history - this is a real-world application you are building, and an important part of your work experience.
  • Accept invites to connect from any and all recruiters (they will be sending them to you).
  • Add skills to your profile as you obtain them throughout camp.
  • Endorse your classmates skills. They will endorse you back!
#3. Create an online portfolio.

Next, it's time to create an online portfolio. You can do this for free on GitHub, or on a host of other online platforms. This is a great chance to practice your HTML and CSS skills (and Javascript if you want to get fancy).

Your portfolio should link to your blog, LinkedIn, your resume, your GitHub, and any other online presence you have that's code-related. Besides this, you can highlight the skills you've learned at Coder Camps, and link to at least two projects you are proud of (more on this next).

Here's mine, as an example: lwalden.github.io
And, a quick guide to hosting simple websites on GitHub: lwalden.github.io/HostingOnGitHub

#4. Host projects online.

The most important part of your portfolio is linking to at least two projects you have created. These can be projects from class, or something you've developed on your own. I am not talking about just linking to a GitHub repo (but do that too). You want to have these projects hosted on the web. They should be polished inside and out. By that I mean the app should look good when you browse to it (outside) and the code should look good when someone checks out the source (inside).

That might mean refactoring your code, leaving useful comments in your code, using Bootstrap or Foundation, avoiding the use of HTML table elements as structure (except for tabular data) and similar best practice no-no's, and making sure you are following standard casing conventions for the languages you use.

Ask one of the Coder Camps counselors to check out your projects and give you feedback. If they give you suggestions, implement them!

As already mentioned. you can host frontend apps on GitHub for free. There are also ways to host apps that showcase your C#, MVC, and SQL skills but that can be a more complex process so give yourself extra time to work out the details if you choose to go this route.

#5. Don't Sweat Your GitHub.

Finally, an easy one! By the end of camp your GitHub account is likely to be a mess. Don't worry about it. As long as you have a few polished apps that you can refer potential employers to (ideally hosted!) the rest won't matter. There's no need to delete those early apps that you may not be super proud of by the end of camp. The people looking at you GitHub will fall into two camps - those that don't understand what they are looking at, and those that have their own collection of half-baked apps stored someplace. Either way, you don't have to worry. You may also find some of that code useful to look at down the road!

That's all for today. Tomorrow in Part 2 I'll cover your resume, where to find jobs (that you will qualify for), recruiters, and the interview process.

Wednesday, July 2, 2014

End of the road.

It's been several weeks since my last blog post and I'm happy to report, I had a very good reason for the delay. After making the very questionable choice to drive 2400+ miles (including wrong turns) from Houston, TX to Vancouver, WA in 53 hours, stopping for sleep only once; I spent the next few days job hunting. This resulted in two interviews and, more importantly, two offers the next week!

I ended up accepting a position as a Software Development Engineer I at a great company. I started work a week and a half ago, and I'm loving it.

The decision to travel more than halfway across the country and spend 10 weeks away from my home, family, and friends in order to attend Coder Camps turned out to be one of the best I've ever made. Everything about the experience, from the coursework (which has ALL been relevant to my new job), to the support fellow students and the instructors (amazing!) helped greatly in making this life-changing career transition possible. (Not to mention the support of family, and especially my wife, Dina!)

If anyone reading this is curious about learning to become a Programmer, or about Coder Camps, please contact me; I'm happy to share my experience and answer any questions you may have. It's not for everyone, but it's also far more attainable than most people think. If you didn't know, for the last 15 years, I've worked almost exclusively as a call center agent, supervisor, or manager. The pay was decent, and I had some great co-workers, but it is an emotionally taxing, unstimulating, uninspiring, unrewarding, and an all-around generally unpleasant thing to do. On a good day.

Whatever you are doing for a living, if that sounds familiar, I challenge you to do your homework, search your soul a bit, get ready to sacrifice, and then JUMP! Take a risk and pursue something you really enjoy. It might not be Programming, it doesn't matter what it is. As long as it's something you are passionate about, it will be worth it.

 I started this blog to chronicle the experience of going to Coder Camps and of starting my new career. That part of the journey is done, and therefore it's also time to say goodbye to this blog. My journey has a long way to go, and perhaps I'll start another one in the future; but for now, just keeping up at my new job is enough to take all my focus.

Thank you for reading, this and my other posts. I really enjoyed seeing the page-view count rise over the last few months - it made being away from home a little easier as I knew most of those page-views were from people I know.

And as always, I can't wait to see what I don't know tomorrow.

Friday, May 30, 2014

Last day at Coder Camps

It had to happen; today is my last day at Coder Camps. Yesterday I gave a hand-off presentation to the next troop that will be taking over work on the App we worked on during the group project phase. Today I demo the App to the rest of the school.

I also added a new portfolio project yesterday - Conway's Game of Life. You can see my whole portfolio here.

My time is divided into three areas - looking for work, working on my portfolio, and learning new skills. The next few days will be a break from that routine as I drive back across the country from Texas back home to Washington.

Coder Camps was an amazing experience that taught me a great deal about web development, equipped me with the knowledge to use today's most in-demand technologies, and gave me the opportunity to work on real world projects in a team environment. Importantly, Coder Camps also gave me a solid foundation on which I can continue to build.

The Coder Camps experience isn't about copying code, or just following a template. Its about mastering the basics, then learning by doing, thinking, planning, testing, and doing some more! Now, if I want to learn a new framework like knockoutJS I've got the confidence and know-how to just dive into the documentation and figure it out. Thanks Coder Camps!

Monday, May 19, 2014

Week 8 is underway

It's week 8 at Coder Camps which means I'm in the middle of our group project. We're working on getting a beta version of the app ready this week, and possibly as soon as tomorrow. Saturday I participated in a Hack-a-thon at Coder Camps, where I built out the backend of an online feedback app. I also wrote a short guide on setting up GitHub Pages this weekend.

The group project is going well. In the last 8 days we've studied the code, the business requirements, and the wireframes. We've been introduced to Team Foundation Server for version control and project management. We identified a list of bugs in the code passed to us, and resolved half of them. We've also made significant progress on adding more details needed for the beta goals to be considered met. Today I worked on making sure all forms on the page implemented solid client-side validation. I also re-wrote some code so that users will now be prevented from sending duplicate AJAX calls to the API when submit buttons are clicked multiple times. Good day :)

The Hack-a-thon was a lot of fun. I worked on a five person team to create an app that would allow multiple users to log in at once, create feedback suggestions and comments, with voting, and some administrative functions. We used jQuery, KnockoutJS, C# MVC, and SQL. I got to write the backend Web API, repositories, a database seeder, and several of the POCO classes. This was the first time I'd had the chance to write a Web API top to bottom. We ran into some issues trying to get full CRUD operations going with the client side but resolved them and learned some new things about authentication along the way. All the functionality is not there yet, but we are close. A roommate of mine at the Hack Shack and I are planning to spend some time finishing it this week.

And then last night I put together a little one page guide on hosting content on GitHub using GitHub Pages. I realized today I should add another small section dealing with issues that come up when trying to host a project started as a solution in Visual Studios, so I'll be probably work on updating that later tonight.

That's pretty much everything that's going on right now. Oh, I did see Godzilla yesterday. But other than that, its all eat, sleep, code.

Sunday, May 11, 2014

Portfolio Page is Up, Coder Camps Final Exam Done, and Group Project About to Begin

Lest I forget to mention it, I've been working on my portfolio page - more work to be done later today (including adding a few more project links) but its at a stage where I feel I can show it off. Take a look here - lwalden.github.io

Okay, now time for another update from Coder Camps. Last Friday my troop took the final exam covering the full stack. This was the most rigorous exam we've had here, but the hard work, long hours, and quality instruction paid off. I scored 98.96% on the final, bringing my average for all exams up to 98.63%.

Tomorrow we begin working on our group project; which will consume the next three weeks of my life. My group elected me as Team Leader, which is both an honor and quite a responsibility. We'll be working on a real-world application - a Jr. Devs job site. The project has been worked on by four separate troops before us. With luck my troop will be the one to finish the project and I'll be able to see the site go live on the internet when I graduate from Coder Camps.

We will be starting with several days of just reading through the existing code and documentation, understanding the business requirements, and planning our next steps. We'll be fixing known bugs, finding new ones, completing some functionality that the previous troop started on, and also breaking new ground: building the site's Admin tools.

The App is a single page application built on Angular and MVC 5 and a SQL database. If working on something like this sounds intimidating, just remember, at the start of camp I had never touched any of those tools. And now I can't wait to dive in.

Tuesday, May 6, 2014

A Drop in the Bucket.

Coder Camps update time.

This week my class is being led by David Graham, the founder of Coder Camps. All my instructors here have been excellent and David is no exception. Yesterday we focused on Interfaces and Adaptors / Repos, as well as covering things like N-Tier architecture, reviewing access modifiers, assemblies, oh and lest I forget, we also learned about Extensions!

Despite fifteen years of experience in software development, David has said that, if all programming knowledge were the water in an olympic sized swimming pool, he feels like what he knows is about a coffee cup's worth.

And thats why I'm doing this - to get started in a field I care about, am excited by, have a talent for, and that offers me unlimited learning potential in the future.

Thursday, May 1, 2014

Doing it the hard way

Good morning from Pearland, TX. So how have things been going here at Coder Camps this week?  Awesome!

We've been using SQL, Entity Framework and LinQ this week. This has given me access on the backend to functionality I already learned how to use on the frontend. For me, this is actually very exciting. Yes, I'm different, I know.

There's a persistent pattern at Coder Camps - learn it the hard way first, then the easy way. We don't learn JQuery here, we learn how to manipulate the DOM with plain vanilla Javascript.  We don't learn how to query Firebase with their ready-to-go API calls, we how to code out RESTful AJAX calls in Javascript first. With SQL we learned how to do our queries in SQL first, then learned to use LinQ.

The first few weeks of this pattern can be frustrating, especially if you know there's an "easier" way that you just can't touch yet. But there is a method to the madness. Programing goes deep. I won't pretend we're diving all the way down - this course is designed to make you job ready, not to make you an expert on the vast oceans of knowledge that are Computer Science systems, algorithms, and theories.

But we don't just live on the surface either. If all you can do is use JQuery, or use someone else's APIs, then programming must feel a lot like magic. And what do you do when your magic wand breaks? Writing out AJAX calls the long way in Javascript gave me a much better understanding of what happened when the browser communicated with the database. So when I got to use Angular's $resources, I knew what it was doing. Likewise, setting up tables and queries in SQL made using a Code-first approach much more intuitive for me.

There are a lot of different ways to learn to code. Coder Camps won't be where my learning experience ends (it won't ever end, that's one reason why I picked Programing as a career), but its been a great place to start!

Saturday, April 26, 2014

“Whether you think you can, or you think you can't--you're right.”

Time for another update from Coder Camps!

To recap, this week we've been focused on server side programing, using C# to create MVP apps. For the first few days we could only send information to the browser. Then we learned (all over again) how to get information back from the user, but we had nowhere to store it. Refresh the screen; or just navigate to a different page on the same website and the info was gone. Yesterday we learned about Singletons - which can sort of serve as a way to preserve state, and therefore retain the user's info. But even that is still a temporary measure. Next week, with SQL I get full functionality back!

Aside from the frustration that came from not having all the cool frontend tools I'd learned about available to me, it was a great week. I learned about the differences between how frontend and backend programing work, more about the MVC concept, and so much more. I hit some personal limits in terms of my endurance (aka my ability to go without proper sleep) and adjusted accordingly. Despite all the learning I've done, this is just a drop in the ocean of what's out there to know and understand.

You can look at a fact like that in two ways - you could be daunted by the vast size of the unknown, or you could be excited by it. More than anything else, I think it's which of these attitudes a person adopts that determines their success in becoming a developer. Coder Camps has reinforced my belief in my own ability to learn and grow. And with that ability, theres no problem I can't solve in time.

There was a quote on a door in the old Coder Camps office:

“Whether you think you can, or you think you can't--you're right.” 
― Henry Ford


This is a very true thing.

Wednesday, April 23, 2014

The Halfway Point

I'm now officially past the halfway point at Coder Camps! At least for the main 9 week segment. After that I may be staying for the optional 3 week Masters program to work on a personal project.

The first three weeks was front end focused, learning Javascript, Angular and how to use AJAX calls and API's to perform CRUD operations (Create, Read, Update, and Delete) to a remote Nosql database.

This week and the next two we're back-end focused, using C# and a SQL database. We're working with Visual Studios and MVC 5, we'll also be incorporating Entity Framework.

After this phase is over my troop will spend three weeks working on a real-world App. At that point I decide whether to stay an additional three weeks to work on a personal project. I've got several ideas for projects, but honestly, it will come down to where I'm at in my job search.

I've already acquired a huge amount of knowledge; with even more still to come. Every day I create multiple apps and I spend at least ten hours either coding, learning to code, or learning best practices. In the last ten days I've entered into a constant state of semi-exhaustion.

Eat. Sleep. Code. That's the Coder Camps credo. What they don't tell you is that you may also dream about coding - which I've been doing lately. So it's really been Eat. Code. Code.

There is nothing more frustrating than dreaming about solving a coding problem. You feel like you are working hard, but its a dream so it really makes no sense and you never get anywhere. Still, it means my brain is working hard to incorporate all this new information, so I'll take it.

At the end of this experience I'll have spent 700+ hours dedicated to programing.  Will I be an expert? By no means. Will I have acquired many in-demand and job-applicable skills? Absolutely. Will I still have a lot to learn? Oh my, yes. Will I know how to learn what I don't know? You had better believe it!

Monday, April 21, 2014

Thank you Coder Camps!

The blog is back! We had a long weekend at Coder Camps and the timing could not have been better. I didn't take the entire three days off from coding and studying but setting asidethe blog, and Visual Studios (for the most part) really helped me to recharge and get ready for phase 2.

Speaking of which, today was the first day of backend development. We dove into C#, Razor, and .Net MVC. Talking about the differences between Javascript and C#  also led us into a discussion about interpreters, compilers, and CLR.

Today was another great example of why a place like Coder Camps is worth the money. Last year I was teaching myself some C# and I learned quite a bit from youtube tutorials and hacking away at my own projects.  But there are so many concepts that you can't fully grasp, or can't understand the importance of without the benefit of an experienced teacher giving you context and direction.

A quick and very simple example - I had seen the term namespace before, but I didn't really understand what I'd do with it. I was able to put together apps that worked just using classes, so what's a namespace good for?  Well I wasn't building web apps back then, and I certainly was not using MVC. Today, when we put a simple MVC app together the benefit (or at least one of them) was obvious from the start.

I doubt there's anything I'll learn at camp that I couldn't have learned on my own from the web and a few good books - but the time saved is tremendous! What I learned in the last three weeks would probably have taken me three months or more of self directed study.  Probably longer as I would have been doing so many things the hard way without knowing there were better methods available.

So thank you, Coder Camps! Without your program my dream of becoming a developer would still be just that, a dream. With you, its fast becoming reality.

Wednesday, April 16, 2014

Obstacles - opportunities in disguise

Tomorrow is the last day of phase 1 at Coder Camps. Here's a very quick video shows (most) everything we covered in the last twelve days:
Today included more Angularjs including factories and customer filters. In the last hour of the day I built up an app that yesterday would have taken me two hours, the day before that three, and last week I probably couldn't have made at all.

On day one, Coder Camps founder David Graham warned us our stress level at camp should be around an 8 (of 10) on a constant basis. The last five to seven days, mine sure has been.  Long nights, lots of coding, lots of learning, frustrating problems, gratifying breakthroughs, copious amounts of caffeine, and not enough sleep.

 And if I had to do it all over again, I wouldn't change a thing.

 Last night I breezed through most of the app I was building, only to get stuck on the last bit of functionality - building a feature where the user can select multiple items from a list and view them side by side in a comparison view.

I spent far more time working on that problem than I had on the entire rest of the build. In the end I had to surrender to the need for sleep, but not before I gained a much better understanding of how MVC controllers work than I had going into the project. I fell asleep thinking of different solutions I could implement the next morning. A couple of them were workable too; even though we learned a more elegant solution using an Angular factory today.

My point is, all that frustration and lost sleep was totally worth it - I learned more about Angular from trying to solve that obstacle than I had from creating two or three successful builds earlier. I can't wait to see what I don't know how to do tomorrow.

Tuesday, April 15, 2014

Just a little bit of Bytes.

Quick update today. We dove deeper into Angular, using filters, modules, and multiple views. This afternoon I wrote an app similar to ones we've created over the last few days - it took about an hour from start to finish which is a third of the time (or less) that it would have taken me without Angular. And the code we so short! 60 lines in my scripts.js file and only that long to enhance readability. Suffice it to say - Angular? I approve.

Last night I started my homework late, which wasn't good but did leave me awake at 2:00 am in order to see the awesome lunar eclipse.

Tonight I'll have my homework done early; still, staying up to get it finished last night was totally worth it - even without good sleep I was prepared for today's material and Angular is really clicking for me. Put in the work and your efforts will be rewarded.

Monday, April 14, 2014

Angular, MVC, and Game of Thrones

In the app - add a character and they are automatically added the to proper House, hovering over a character's name reveals their portrait.
Time for another update from Coder Camps! Last week we learned about communicating with a database and updating a web page without having to refresh the browser window using AJAX. Friday we learned how to using polling (and touched on websockets) so that a web app can check for database updates automatically without the user having to do anything.

To practice we made an instant messenger app that connects to any number of friends and checks for new messages every second. I sorted the messages by date, including my own, to form a message feed.

The homework over the weekend was to build out a Twitter clone with the following functionality:
Post tweets, maintain a profile, maintain a friends list, display a feed of friend's tweets that updates automatically, and display a list of your friend's friends that you can click to make them your friends as well.

I got all the major features up and running but late Sunday night I bogged down trying to get my app to upload a user's picture file (.jpg/.png/etc) to Firebase - the NoSQL database we were using. It was a good reminder that, whenever I'm spending a long time on a problem without making progress, I'm probably going about it the wrong way.  This morning I mentioned it to my housemates who then suggested the (in hindsight) very obvious 5-minute solution. And yes, storing your images in your database is usually the wrong way.

Today we got introduced to Angularjs and the MVC framework (although Angular is technically MV*). We built out a Game of Thrones page that lists characters by House - very similar to projects we did last week but with Angular the app was written in a fraction of the time and with a fraction of the lines of code.

Also for the first time we used AJAX calls from a library (Angular, of course) rather than using vanilla Javascript. Tonight for homework I'll be writing another similar app, including edit, delete, and search capability, using Angular.

Time is really playing tricks on me right now; because we've covered so much ground it feels in one sense like I've been here much longer than two weeks; simultaneously, because everything is constantly new and interesting, the time seems to fly right by.

That's all for today from Houston, talk to tomorrow!

Thursday, April 10, 2014

From proud, to humble, to excited for more

Yesterday I mentioned I was proud of myself for completing all the stretch goals from Tuesday. Of course, the next thing that happened was, I hit a wall. Last night's stretch goal included writing an anonymous call back function, amongst other tasks, with no more direction than what I just described. We've talked about callbacks before, and used one once or twice but its not a subject we'd really studied yet.

I did not complete the stretch goals. I did learn several ways in which you cannot write anonymous call back functions (or rather several ways you can write them if you don't mind them not functioning as expected).

Today we covered the subject in depth and I learned how to make use of them (and when not to make use of them) to make code more readable, flexible, and to help with separation of concerns. I also got to see some new approaches to DOM manipulation I had not thought of previously. We also learned how to write some helper functions that reduced our need to query the database for as much information, and as frequently was we were doing earlier in the week.

Finally, we started working on a 4 day project making a Twitter clone.  Each student in my class will create their own App including individual databases and UI's that will include our own profile, our tweets, a friends list, our friend's tweets, and the ability to see friends of friends and add them to our own friends list.

Our App should also allow us to edit our own profile, as well as edit and delete our own tweets. This one's going to go in my portfolio for sure. I can't believe how much ground we have covered in under two weeks!  Next week we dive into Angular.JS and the week after its time for backend and C#, which I can hardly wait for!

Wednesday, April 9, 2014

CRUD, AJAX!

This week at Coder Camps we've been working with AJAX to communicate with a NoSQL database. We're doing "Coder pushups" - creating a series of similar apps, adding functionality each time in order to practice the process and master the concepts. The screenshot above is of the app I made last night.

It's a simple list of monsters. You can add a new one, edit or delete an existing one, and sort the list. The list is stored on a Firebase database and uses a RESTful AJAX method to GET, POST, PUT, and DELETE from the database; the code then rewrites the table without refreshing the browser. I used Bootstrap for the (minimal) CSS styling. There's one line of JQuery that makes a Bootstrap modal function, otherwise this was done in straight Javascript, including the AJAX - we are learning the hard way first so we actually understand what's happening - no use of firebase.js either. We will be learning the faster ways to code this functionality in the near future.

Have to say I'm a little proud of myself, in class we saw examples of a GET and POST method, and at home I was able to figure out DELETE (and yes, I did delete the entire database on my first several attempts to get it working) and PUT based off that; then merged the four options into one function. Full CRUD achieved 2 days after my introduction to databases.

Tonight I do it all again, adding another couple interesting pieces to the mix.

Today in class we also got better at laying out a project ahead of time, separating out and documenting View and Model before touching Visual Studios, talked about abstracting functions, and learned how to GET just what we actually need from a database rather than retrieving the entire thing.

If all this sounds like a lot of work, it is, the last two days I spent 4 to 5 hours each day on homework, after a full 9-to-5 days in class. But if you put the work in, it pays off.



Tuesday, April 8, 2014

I'm famous!

Okay, actually, I appear for about 1.5 seconds in this youtube video.  But Coder Camps should be famous!

Week 2 is on!

It had to happen eventually. Yesterday was the first weekday since I started at Coder Camps that I didn't blog. Yesterday I literally lived the Coder Camps mantra "eat. sleep. code."

So here's the make up post.  What did we learn yesterday? In the morning we covered Bootstrap. Learning what it is (that much I already knew), how to install it on a Visual Studios solution, what its dependencies are, and of course, we got in some practice using it.

In the afternoon we talked about object constructors and prototypes. This was another example of how expert instruction really helps. I've used both object literal notation and object constructors before (and a little bit of prototypes) but I only had a partial understanding of how to computer treated them differently.

Yesterday drove home how, especially when dealing with large numbers of objects, using prototypes to define common methods can result in significantly less memory being used. The trade off is that that call of that method on any given object will execute slightly slower. For client side code this is a bargain of a trade off as the speed difference will, general speaking, be undetectable to the user, while the memory difference can be significant.

On the server side, where speed is a larger factor you might create the object at need with methods including, foregoing methods in prototypes to obtain the more efficient execution, then destroy the object as soon as you no longer need it to manage memory.

Lest I forget, we also had an aside on JSON and XML.

Next we practiced as a group, creating a simple app to implement CRUD*, using object constructors.  Our homework, and the reason I had no time to blog last night was to finish the app - it still needed delete and sort functionality, and more CSS styling when class was done for the day. Then create another app on our own that did essentially the same thing as the first one ("code pushups" per our instructor).  Oh, and reading on API's and AJAX.

Not bad for day one of week two of camp huh?


* CRUD: Create, Read, Update, and Delete. Four essential functions of a web app.

Friday, April 4, 2014

What I learned in high school, that I use every single day of my life.

Week one completed at Coder Camps! Today we moved into the new office space at Coder Camps, and as always learned a huge amount of information. Instead of the usual daily recap, tonight I'm reflecting back on my high school computer science courses.

I took Computer Science all four years of high school. We coded in BASIC (freshman), turbo Pascal (sophomore and junior), and C++ (senior year). More importantly, we learned to use algorithms and to problem solve. People often complain about learning things in school they'll never use in the real world but with Computer Science, application is everywhere. Right now I'm pursuing a new career path as a software developer, but I've used the principles and modes of thinking I learned in those classes in all aspects of my life, and in jobs that had nothing to do with coding.

Today at Coder Camps an exercise referred to "stack" and "queue."  These are just ways of organizing lists of things.  A Stack is like a stack of plates.  The last one you put on the stack is the first one you take off when you need a plate.  A queue is like the line at a movie theatre (or if you are from the UK, a queue is... just a queue). The first person in line is the first one to get tickets and get out of the line.

These concepts can be referred to as LIFO and FIFO - "Last In, First Out" and "First In, First Out." Can you tell me if a Stack is LIFO or FIFO?  What about a Queue? Think about the analogies I mentioned for a moment and you'll get it!

In Computer Science class these were important things to know if you wanted to understand how to tell the computer to store, access, sort, and otherwise manipulate data. At the time, I didn't have the life experience to see how these or any of the other concepts I learned would apply to anything else. But it's valuable to remember that computers are tools - they help us accomplish certain tasks more quickly, more easily than we could otherwise. We take advantage of their vast memory and lightning speed but aside from these advantages of scale, they can't do anything that you or I couldn't do ourselves given sufficient time and effort. Okay, yes, computers allow us to do many things we could never, from a practical standpoint, accomplish, but that doesn't mean those things would be impossible without computers, just impractical.

All that is to say - every day in life we face and need to solve problems, on our own, with the help of others, and with the help of technology. And Computer Science teaches you to be a better problem solver. There's no end to the value that adds. So thanks high school, you really did teach me something really and truly useful!

Thursday, April 3, 2014

What's more important: knowing what? or knowing how?

So what did we learn today at Coder Camps? As always, quite a bit!

We worked with multi-dimensional arrays and discussed objects. We went over object literal notation and started a new project to put the new knowledge to use. Oh, and more Coderbyte problems as well. Today one of the problems required (well, I'm sure there are always other ways, but they wouldn't have been pretty) the use of a recursive function call in order to push all the possible combinations of one array of numbers into a new array.

There's a difference between knowing what you need to do something and knowing how to do it. Fortunately, we don't have to program in a vacuum and really, its the former that's the key skill in coding. There will always be new problems, and you'll never memorize every possible method and technique out there - yes, the more you know the faster you can work, but the most important thing is to know how to think through a problem and break it down until you can see what resources you'll need to solve it. Then, finding and applying those resources becomes much easier.

After a day like today (hard but good!) I'd like to say thanks, first and foremost to my paired programing partner - bouncing ideas off each other and catching each other's bugs makes us both better coders and problem solvers.  Also on the "thank you" list - Google, your search algorithms make my life so much easier, and Stackoverflow - you're up there as well.

Wednesday, April 2, 2014

Never Just One Way To Code

Time again for my nightly recap. What did we do today at Coder Camps?

After reviewing yesterday's codebyte projects, and our morning stand-up; we talked arrays. Shift and unshift for adding and subtracting from the front of the array, push and pop acting likewise for the end, and splice and slice for manipulation anywhere in the array.

Then followed more coderbyte problems to solve in pairs; switching off frequently to practice version control with Git. Either these are getting easier or we are getting better! Actually, they both are true, they were overall easier challenges than the first ten, but we're also learning a huge amount every day.

In the afternoon we started working on a simple To Do List page that has a text input and submit button. Submit an item and it's added to a list. Click an item on the list and you can toggle a strikethrough effect on it. My partner and I also worked on adding buttons to each list item so the user can delete the item, shift it up the list, or down. (you can see our code on GitHub here)

It's nothing fancy but its our first in class project that integrates Javascript, HTML, and CSS, requiring all three to function properly.

Oh, also we learned our Fourth Rule of Javascript - Always define your functions like this:
    var myFunc = function() {}. 

There are (that I'm currently aware of) two other ways to declare your functions. And, of course, this is our rule, not the rule, there are other viewpoints on the subject. However, this is a very safe way to code your functions, which may result in fewer bugs than other formats. And I'm all for that.

One thing I notice every day is how many different ways there are to solve the same problem. And rarely is there a "best" way. One way may be easier to read, another more efficient for the computer to execute, while still another way makes the code more flexible when you have to modify it in the future. Right now I'm just enjoying seeing all my classmate's different approaches - helping me realize new ways of approaching and overcoming problems; which is what it's all about. Awesome.

Tuesday, April 1, 2014

Rules of Javascript, RegEx, and more, oh my!

Another day at Coder Camps, another huge upload of info into my brain.

What did we learn today?

The first rule of Javascript (at least for us) - Use "use strict"; in all your functions.

We actually learned the second rule yesterday - Always declare your variables at the top of your function.

And the third rule - Always define your functions before you call them.

But wait, there's more!

We discussed the Agile mentality, including a warning that the paradigm has been somewhat diluted in recent years, and had our first stand up meeting.

We talked about RegEx a little early - in working yesterday's coderbyte problems a couple of us, self included, found some RegEx code on stackoverflow that helped us solve the challenges - so even though this might be a bit "advanced" for our level, we got a quick overview and got links to some resources to learn more.

Then we went over version control a la Git and connected Visual Studios to our github accounts. Which transitioned nicely into discussing licensing.

Next it was time for more coderbyte problems (6-10 in the easy category) and pair programing. Which, of course, was a perfect way to practice commit, push, and pull with github. Later on in the program we'll also cover Team Foundation Server.

Oh, not to be forgotten, we went over how you can return a function and thereby gain access to it's scope outside of the normal boundaries set by Javascript. My first question was - okay you return the function and assign it to a variable, then you change the value of a variable inside the scope of that original function, then call the function held in your new variable to access that variable. Will you get the value that existed when you assigned the new variable, or will you get the current value assigned in the meantime? Answer - you get the current value.

Okay, if you don't code, you probably didn't follow that. My apologies, but translating concepts like this into day to day english may take me some time, more text than I'm prepared to write currently, and may not really interest you if you don't like to code. Suffice it to say - its a concept I wouldn't have thought of on my own, and yet, given that functions are first-order objects in Javascript, it makes perfect sense once you see it.

Homework is done for the day, well almost done, I just realized when writing this that I didn't follow the first rule of Javascript when I wrote my functions today, so a few quick edits to make then maybe I'll look into RegEx some more &&/||* read some javascriptissexy.com.

* - && = "and" || = "or"

Monday, March 31, 2014

Day one is done!

Day one at Coder Camps is in the bag. And what a day it was! The focus today was a lot of Javascript with a little HTML5.

We covered scope and hoisting in Javascript, including concepts like shadowing, closure, and higher order functions. Talked about encapsulation, callback functions, and the unique nature of Javascript compared to other programing languages. No classes, and all about the functions.  And functions can be parameters of other functions! - very cool.

We discovered anonymous functions - which makes you take a double take at first, but then you get it and suddenly there's another tool in the tool bag. We created our first libraries, got an intro to pair programing, and learned how to work debugging in Visual Studios.

Then lots of practice problem solving and writing functions.  You can't believe how much you can learn this quickly until you do it. I had classmates that took programing courses in college that said they learned more doing the Coder Camps pre-work than they did in their college programing classes. For anyone on the fence about learning to code by going to camp - DO IT! I learned more today than I could have in a week of independent study.

Plus, there was pizza and swag.  Great day.

Sunday, March 30, 2014

On the Road, Part 3

End of the road! Made it to Houston earlier today and got moved into the "Hack Shack."  Met my housemates, and now just waiting for day one of Coder Camps.  Class starts tomorrow, and after four days of nothing but driving I'm anxious to get back to coding.

My future posts will be of a more technical nature as I report on what I'm learning and projects I'm working on.

To finish up with the road trip portion of this blog , here are some facts (and opinions) from this trip:
  • Route: Vancouver, WA to Pearland, TX via Oregon, Idaho, Utah, Colorado, and New Mexico
  • Total distance traveled: 2,229 miles
  • Cheapest gas - Twin Falls, ID $3.42 (premium)
  • Most expensive gas - Clovis, NM $3.73 (also premium)
  • State with the best roads - Idaho
  • Most scenic state - Utah
  • Highest speed limit - Utah - 80 MPH
  • Best gas mileage - From Moab, UT to Albuquerque, NM: 40.00 MPG
  • Worst gas mileage - Vancouver, WA to La Grande, OR: 29.22 MPG
  • Avg. gas mileage - 33.92 MPG
  • Most courteous drivers - Texas
  • Least courteous drivers - Salt Lake City
  • Best non-avian wildlife seen from the road - Texas
  • Best avian wildlife seen from the road - Oregon

Saturday, March 29, 2014

On the Road, Part 2

Good morning from Albuquerque.

No wifi at the motel last night so posting from Starbucks this morning. There's always a Starbucks.

Coder Camps begins in just three days so my thoughts this morning have been turning to the programing and Web Dev skills I've already learned and what's to come.

Over the last few months I've learned a lot - The DOM model, common HTML5 / CSS3 elements and properties. How to structure an HTML document using a grid system. Bootstrap and Foundation. An intro to SCSS. Version control, specifically GitHub. Updated my command line skills. Learned a lot of Javascript, some Ruby, and intro to Rails, a good bit of C#, and brushed up on the concepts of Object Oriented Programing. I've done some work in Visual Studios and used Web Forms. Got an intro to AJAX, learned some Jquery, got an intro to Coffeescript, and learned to traverse the DOM. I've written functions, methods, and classes; and used enums, arrays, and hashes.

Absorbing new skills and information is coming easier and easier as I can relate new things to what I already know. The great thing is, there's always more to learn. Even after Coder Camps ends and I'm job-ready for that first Dev position, I'll have only scratched the surface.

I'm so grateful for the support of friends and family that has allowed me to make this career switch and go into a field where I can learn something (or many things!) new every day without end. Most especially, thank you to Dina Walden and Loyce Martinazzi - without your support I would not be here today.

As a reward to my readers, below are some pictures of the Salt Lake City skyline and the Wilson Arch in southern Utah. Bearing in mind that I haven't hit Texas yet and only traveled through a small corner of Colorado, I have to say Utah is hands down the most beautiful state I've traveled through on this road trip. You can't really understand the phrase "America the beautiful" when you travel by air - but by road - yeah, I get it now. And Utah certainly fits the bill. I didn't take theses - my camera phone really couldn't do the scenes justice.



Images sources: boomsbeat.com, woodchuckimages.com

Thursday, March 27, 2014

On the Road, part 1

Heading to Houston for Coder Camps.  School starts Monday! Drove from Vancouver, WA to Salt Lake City, UT today.This is a 3.5 day trip hence the "part 1" in the title.

The last few hours I've been listening to Blink by Malcom Gladwell (audio book version). Heard two stories of attempts to improve outcomes (in war and ER diagnosis) by using automated/ computerized systems. One worked, the other did not. The one failed because it flooded the user with to much information and required too much effort to manipulate that information. The other succeeded by filtering out all but the most essential information.

Too much data can be a very bad thing. Information overload leaves users unable to tell the signal from the noise. Users end up making essentially random choices and their brains make up a justification for the choice which feels valid but isn't. I have no conclusions to draw from this right now (must sleep soon), but it seems like an interesting and valuable thing to keep in mind as a Web/Software Developer.

Some things I learned today in no particular order:
  • You can buy fireworks year round in Idaho.

  • Boise lies at the foot of some very pretty mountains.

  • There are plateaus in central/southern Idaho.

  • The speed limit in most of Idaho is 75 mph.  That seems fast until you hit Utah where is 80 mph!  Oregon/Washington seem very tame now with our 55/65 mph speed limits.

  • The mountains in northern Utah are amazingly beautiful.

  • Idaho has really nice roads, but they need better signs. Thank you GPS.

  • Utah does not, apparently, believe in illuminating their freeway system. Very difficult to make out the lanes on a rainy night between Ogden and Salt Lake.

  • Driving fast does not hurt your gas mileage as much as going over mountains.  From Vancouver, WA to La Grande, OR I drove 65-70 (mostly 70), went through some major elevation changes and averaged 29 MPG.  From La Grande to Twin Falls, ID I drove 75 mph, had to adjust speed due to traffic more frequently than the first leg of the trip, but it was pretty flat the whole way; I averaged 33 MPG.

  • The traffic in Southern Idaho on I-84 is 40% semi-trucks.  It felt like 80% because that's all I was passing in my lane and I was not getting passed by many cars myself, but then I counted traffic in the opposing lanes and its 40%. (based on a survey on 50 vehicles on a Thursday afternoon).

  • When bored after a long day of driving I start counting cars and trucks in the opposing lanes of traffic.

Friday, March 21, 2014

Almost there!

Coder Camps pre-work nearly complete! Just one section left. That said, that one section includes 18 subjects and 360 practice exercises. Still, hope to have it done this weekend; leaving Monday through Wednesday for independent study before the road trip to Houston Thursday.

The pre-work we've been assigned has included some of Khan Academy's Computer Science coursework and the ebook A Smarter Way to Learn Javascript by Mark Myers. I was worried that after Codecademy.com, TeamTreeHouse.com, and several other basic programming tutorials I've been through in the last few months this was going to be a lot of repetition.

Not the case! Khan Academy took a very different (and graphical) approach to teaching JavaScript basics compared to any of the other online resources I've used.  And A Smarter Way to Learn Javascript is just fantastic. Each chapter is very short and very readable.  But what really makes it work are the practice exercises . After each chapter (89 of them in all) you head over to the book's website and work through 20 problems related to that chapter. They are structured so that you really do learn the material, and quickly!

In other news:

The new laptop (The End of an 8 Year Relationship... With My Laptop.) arrived yesterday.  Took about an hour to ghost and install the SSD. Man, that thing is fast! Windows updates (73 of them!) took much longer, but its ready to go now.

The car is also ready for the 2000+ mile trip ahead of it next week.  Just took alignment, two new ties, and four new spark-plugs. It's running smoother than it has since I bought it.

This weekend will be very busy - two going away parties, plus visits to relatives, a visit to Oregon Wine Country (can't leave without one last date with my bride!), and all the last minute planing and packing for the trip.

I can't wait to get to camp. All the self-taught stuff I've been doing feels like its really coming together. Now I get to add expert instruction on top and really dive into full-stack development. Ten days 'till camp - I feel like a kid on Christmas Eve waiting for morning to come.

Sunday, March 16, 2014

The End of an 8 Year Relationship... With My Laptop.


Yesterday I placed my order on Newegg.com  for my new laptop. Sometime this week a shiny new ASUS N56JR-EH71 will arrive at my doorstep, accompanied by a separate Crucial M500 480GB SSD, which I'll need to install myself.








And that means its finally time to retire my old Fujitsu T4020 Lifebook.

This was literally my first laptop, having only owned desktop systems previously.  I purchased it in January of 2006 to use when I went into real estate. Top of the line at the time, it came with Windows XP Tablet edition, 12.1" screen which rotated into tablet mode, a 2.00GHz Pentium processor, and 2 GB of RAM. Being a tablet hybrid it also had a stylus which I employed for signing contracts sans paper. (Which was both impressive and annoying to my clients.)

This thing has seem some wear and tear in it's day. My last stylus disappeared about three years ago. I've dropped it several times, onto both carpeted and hard surfaces.  The clasp that locks the screen into a closed position snapped off last year. The casing is cracked around the audio/microphone jacks. The LCD display for the battery life has a cracked section as well - which doesn't really matter since the batteries (internal plus expansion if you take out the optical drive) only last 15 minutes anyway. And when playing video or even loading a script-heavy web page, the long-suffering fan grinds its way up to max RPM's while issuing a surprisingly loud and gritty sounding groan of protest.

I once tried to disassemble it in order to clean out all the dust that is clogging up that fan unit.  I had to admit defeat after I still could not pry it apart with 27 screws out.

Admittedly, I pretty much only use it now when the TV is on and I need a larger screen than my phone affords me for secondary surfing. So not very often.  Still, to be in working (mostly) order without ever having a major hardware failure, and outliving Microsoft support of it's OS, I really have to hand it to that heavy little Fujitsu. You weren't cheap, but you gave me eight good years which is more I can say for any other computer I've owned.

I'll miss you buddy.

Thursday, March 13, 2014

Heading to Houston

Well it's official, I'm heading to Houston at the end of March to take part in Coder Camps. Twelve weeks later I'll be hunting for my first junior developer job.

Deciding which school to attend was a challenging proposition. First, if you don't know what I've been up to the last month or so, I've been researching and preparing to attend a code boot camp.  A what? It's a full-time 8-16 week experience where you focus on nothing but acquiring and practicing the skills needed to become a web developer.

I started by looking up every program I could find across the country. In the end I had a list of my top twelve programs, spread out from Seattle to San Francisco, to New York.  I changed my mind on which program was my "top choice" repeatedly. Repeatedly.  There's a good chance I'll find my first job in the same place I go to school, so location and cost of living were factors, then there was length of program, start date, cost of tuition, and curriculum, including which languages and frameworks would be taught. This school boasts great job placement outcomes, that school has awesome job fairs...I kept notes in a lengthy spreadsheet.

While most schools teach Ruby on Rails a few teach .Net / C# instead (virtually all camps include Javascript). For anyone lost again, these things, "Ruby" and ".Net", are tools used for building websites.  Ruby is a language gaining in popularity and is often the choice of start ups. C# is popular with large businesses and corporations. My research shows there are more C# jobs than Ruby in the Portland area, but it varies from region to region.

I applied to the top programs on my list, went through interviews, tests - both logic and coding, technical interviews, and even answer the question "What's the most challenging thing you've ever done?" Then it came time to make the tough choice.  In the end Coder Camps won out due to a combination of factors not the least of which were an impressive record of post-graduation job placement, focus on .Net, and Houston's very reasonable cost of living.

One little perk to finally knowing where I'm going is that I can, for now, cross Ruby and Rails off my List of Things to Learn About Today. Now its down to just C#, .Net, Javascript, HTML, CSS, SCSS, GitHub, Command Line, and... the list goes on.

Still, the 5 days or so I've focused heavily on strengthening my CSS skills mainly because I just didn't want to invest a ton of time into C# or Ruby only to later attend a school that taught the other. Now I can safely dive back into C#.

So I've got that going for me, which is nice.