My First Week as a Developer

So on this past Monday, I started my first week as a Rails developer at CrateBind. Needless to say, it’s been a rollercoaster ride of emotions from Monday to Friday filled with peaks of well written functioning code to valleys of doubt and insecurity with every character I type. My entire week could be described as filled with excitement and terror!

excited

Fortunately, the work environment is fantastic. Everyone is super friendly and always willing to answer all of my questions or just chat for a little bit. I really feel like the environment is suited to foster the growth of all employees, which is fantastic and makes me feel right at home.

workplace

I can sometimes set very high standards for myself and I recognize that has been the source of a lot of my stress this week. However, despite being hard on myself, I learned many important things this week:

  • I don’t know everything about programming, and even more importantly, I’m not expected to. I’m a beginner/junior developer and in addition to contributing as much as I can, my goal should be to learn as much as possible!
  • As hard as it is to see right now, I don’t suck, I’m just not experienced.
  • Ask questions, ask questions, ask questions! This one was a hard lesson for me. Everyone is busy working on features, bug fixes, or are starting new projects and sometimes I would hesitate asking a question for fear of bothering or pestering them. What I’ve discovered is that is indeed NOT the case and people are super willing to offer help.
  • Don’t give up. Be persistent, but at the same time, don’t beat your head against the wall trying to solve a problem. Take a break. Give your brain some time to rest and internalize the situation. It’s called Passive Learning. When you come back to the problem, try approaching it from a different perspective! This has worked almost every time for me.

I am extremely excited to be where working at where I am and I’m looking forward to more lessons in the future. In the mean time, time to prepare for week two!

prepared

“Don’t Call It A Comeback”

back

It’s been awhile since my last post but I’m excited to be back! A LOT has happened since I last gave an update. Here’s a quick summary:

  • Completed the MEAN stack and earned a Red Belt
  • Got a 15 inch Macbook Pro! (May my PC rest in peace…)
  • Completed the Ruby on Rails stack and earned a Black Belt
  • Updated my resume! (This was fun…)
  • Worked on several projects to beef up my resume/portfolio including learning React Native! (Woot mobile development! Btw, click HERE to check out my portfolio!)
  • Started attending several tech meet up around the DFW metroplex and met many really cool developers from all backgrounds (Even music!)
  • Apply for jobs, apply for jobs, and apply for more jobs…
  • Go on my FIRST developer interview!
  • Apply for more jobs…
  • Speak to many recruiters about different positions
  • Apply for more jobs…
  • Not get a call back from my first developer interview!
  • Apply for more jobs…
  • Go on my SECOND developer interview!
  • Apply for more jobs…
  • Go to more meet ups, meet more awesome people, work on more projects, and speak to a few more recruiters, and apply for more jobs! (I lumped these all together because at this point it felt like all of these things were happening  simultaneously)
  • Go on my THIRD developer interview and receive an offer!
  • Accept offer and now I start my new profession tomorrow!

All caught up??? GREAT!

self_five

Seriously, this has been a crazy month since graduating from the bootcamp in early July. I’m grateful for all of the support from my family, friends, and especially my wonderfully optimistic girlfriend. I absolutely cannot wait to start this new profession!I know I still have so much to learn but I’m very eager to get started.

Here’s to tomorrow!

It’s a new day.

 

 

Week 5 – Day 6 (Saturday)

This week leading up to the exam has been action packed. The good news is I’ve learned A LOT about myself during this whole process. I’ve discovered what I am capable of and my limitations.

work

Also that asking for help is NOT a bad thing as obvious as that sounds. I wanted to learn coding and not be told the answers but sometimes, especially when doing something completely new, it’s not a bad idea to ask for guidance.

help

On to the exam. Just FYI, “Black Belt” means scoring at least a 9.5/10 or higher. So Coding Dojo has this to say about their exams:

“Know that many of our black belt students had to take the belt exam two or even three times. These exams are NOT easy. We give these exams to those that apply to join Coding Dojo staff as an instructor/consultant, many of whom have 5-7+ years of experience, and 70-80% of them fail the exam.

Do NOT get discouraged, and even if you fail the first time, take it again until you can earn your red/black belt. We believe that all of our students can get belts. It’s just a matter of time and perseverance.”

 

hard

Now, with that all said, the exam was hard but I think it was doable! Without getting into the details, it involved the concept of database tables and self join. Kind of a tricky topic for someone who is just learning but I started with what I knew and went from there. All in all, I completed the exam in just under 5 hours. I turned in what I had and sat in my chair for a few minutes just to decompress.

decompress

While I was sitting, I had a thought. A little over a month ago I had absolutely no idea how to code. In just 5 week I have learned to create a simple but functioning website that is actually deployed on the internet for anyone to see/use…

I then compared it to my first month of teaching and how new everything was and how things seems to be flying by at 200 mph. Now compared to year 7 of teaching, there are always going to be challenges, but I feel like a much stronger teacher than I was my first MONTH of teaching.

I haven’t even been coding for a year. I haven’t even been coding for 6 months! Just the thought of the potential for growth and experience a year from now really gets me excited about programming.

I got up from my chair and walked over to my instructor and asked if she could grade my exam today instead of over the weekend. She was happy to do that. I then asked if it wasn’t too much trouble, could she go over it with me and point out the things I could improve on this weekend. She seems to really like that idea. So much so, she asked everyone to stick around after the exam to go over it together.

I made a 7.95/10. Coding Dojo requires a minimum of 8/10 to pass. I’ll be taking it again on Tuesday of this next week.

Now on to the good news, I spent all this morning basically “taking” my exam from Friday again. I studied fixed the things that deducted from my overall score and made it completely functional. I sent it to my instructor to review and she was happy I was working on it this weekend. She told me the exam we took was really hard and that now I should have no trouble with the next exam because it’s slightly easier.

I am looking forward to taking the next one on Tuesday!

P.S. – Post exam, a big of group of students from the dojo invited everyone to meet at a mexican restaurant downtown for food and drinks.

mexico

I almost didn’t want to go because I wanted to come home and start working on redoing my exam but then I remembered: One of the most important things for me while I was teaching were the people I worked with. Having that connection with people you see almost on a daily basis makes a HUGE impact. It ended up being something I would look forward to each day and those co-workers ended up being my best friends.

best_friends

I decided to meet up with the group and it was a really good time! It’s cool when a group a people from all different backgrounds can come together with the same purpose; to learn programming.

Week 5 – Day 3 (Wednesday)

The past few days have been FAST and FURIOUS. Django has been a touch mountain to traverse but I feel like I’m about to see the summit. Today, I had a huge breakthrough. I officially deployed a website to the internet today. LIKE A REAL WEBSITE. WITH A REAL ADDRESS.

It was crazy y’all. Something I made was actually on the net for anyone to see. Anyway, just been wrapping up concepts and assignments this week before the belt this Friday. I am SUPER nervous about this belt. Instead of worrying, I’ve decided to make a strong push to the end of the Python stack. I’ve been averaging about 13-14 hours of coding each day this week.

Tomorrow is the belt review all day. I’ll update again on Friday after the Belt exam.

Week 4 – Day 6 (Saturday)

Wow.

It is CRAZY to think that it has almost been a whole month since joining the Dojo! I am essentially a little under one-third of the way through the entire program. Two weeks of Web Fundamentals and two weeks of Python sure makes the time here seem like it’s flying by.

time_flies

On Monday we will be joined by a new group coming to the Dojo for the first time. I am pretty excited about this. I have no idea if it’s going to be a small class like us or a huge one like the ones before us. Either way, it’s always fun meeting new people and sharing in the same experience. I feel like there’s a unique bond that is created when we all endure coding hardship together!

struggle

I find myself always being the one asking for help and maybe this will provide an opportunity to finally pay it back and offer up some help to the new guys. Kind of on a selfish note, I REALLY miss teaching! I am hoping this will satisfy my desire to help others understand coding and that you have to struggle a lot to get a little.

Something else on my mind is next Friday is our Python belt exam. It’s the culmination of everything we know so far put the test. A four hour test. While I typically feel like I am a good test taker, this one has me a little nervous. I think it’s because most of the test is going to involve creating a website using Django (which we just started yesterday) and deploying it (which I don’t know how to do yet). So far, I like Django, but I am hoping to take this next week to become more comfortable with it.

studytest

Last thing on my mind are algorithms. I feel like I should be better at these. Each morning is a little bit of a struggle. I’m going to revisit the algorithm platform Coding Dojo provides and possibly check out outside resources like HackerRank or CoderByte. I’ve heard that solving algorithms on a whiteboard is a HUGE part of the interview process.

P.S. Rockets play this Sunday in the first round of games against Minnesota in the playoffs. To sum up my feelings, see below:

 

Week 4 – Day 1 (Monday)

It’s the start of a new week! Actually, today’s Tuesday…I forgot to update last night 😐

However! After this past weekend, I feel energized, revitalized, and ready to go! We moved on to mySQL yesterday which is how we are going to be doing databases. I downloaded mySQL Workbench which is a GUI to help visualize how to structure your database. I like it because it’s got a visual aspect that’s a little different than coding. Here’s a picture of what a simple database can look like:

mySQL

This is pretty HUGE because now we have all of the parts to make a working website! We’ve learned the front-end/ client side with HTML, CSS, and Javascript. We’ve touched on Python and used it as a server-side language to set up our routes and run our web pages. Now we have the database that can store loads of info such as log-in or registration credentials, orders and shipments, user accounts. Pretty much anything that is data we can store and access later. Like I said, huge.

huge

That pretty much sums up yesterday. There weren’t a bunch of assignments. Most of it was just readings and exercises to understand SQL. I finished up the lesson around 2pm and spent the remainder of my time finishing up two previous assignments from Flask.

Sidenote: Post class today having a much needed Bros night! Really looking forward to that!

bros

End of Week 3 – Day 7 (Sunday)

Well, I haven’t updated in a few days. The Wednesday – Saturday were a BLUR. So much information was thrown at us this week. I am really struggling to retain it all. For the first time since the bootcamp started, I really questioned whether or not programming was really the path I wanted to pursue.

After learning the Python basics on Monday/Tuesday and Object Oriented Programming on Wednesday, we were introduced to Flask on Thursday needed to complete all assignments by Friday. Needless to say, I got behind in my assignments.

What is Flask? I’m glad you asked. Here it is directly from the Flask documentation:

Flask is a web framework. This means flask provides you with tools, libraries and technologies that allow you to build a web application. This web application can be some web pages, a blog, a wiki or go as big as a web-based calendar application or a commercial website.

Well, that’s great. Seems simple enough. Right?

flask

That’s Flask for me. Ugh…

The two windows on the right are HTML and CSS. Those languages I am familiar with and I know how to manipulate. The window on the far left is Python. No so familiar with. The challenge is getting Python to speak to HTML. This is where Flask comes in.

Long story short, I took most of Saturday to clear my mind and relax. I barely touched my laptop. In fact, my girlfriend and I went to go check out the Deep Ellum Arts Festival which was SO GOOD! I can’t tell you how much I miss music, art, creativity, and essentially the right side of my brain! It felt so good to walk around in that environment free of computers or coding  or technology. Heard some REALLY good musicians and saw some really beautiful art.

I really believe my soul craves balance. I DO like coding. I feel like I have the potential to be really good at despite recent setbacks. I like the challenge and I am capable of switching on my Type A persona and getting work done. At the same time, I need music. I need art. I need creativity in my life. Without it I feel hollow. Kinda emptied out. Almost robotic in a sense.

I realize this is just the beginning of my programming journey and right now I am “learning the foundations”. My hope is that in the future, I am able to combine the ability to program with my creative drive and compile some really cool projects.

Well, this post took an interesting turn. Didn’t really talk about much in terms of specifics. I’ll spare you guys this time! Tomorrow we begin a new subject: SQL (pronounce like sequel).

P.S. – Tonight was steak night. Cheers!

SteakNight

Week Three – Day 3 (Wednesday)

Just a short update today since I forgot to do it last night!

Started off as usual with algorithms and then we talked about Object-Oriented Programming. This is a HUGE topic in the world of programming. OOP basically allows you to create a “blueprint” for different things/situations with different attributes and it allows you to do/create things with different methods. Classes are the the blueprint and objects (a.k.a instances) are the product or the result.

An example would be, for instance, creating an operating system. Imagine a typical window on your computer. Most windows share certain attributes, such as they all have a close, minimize, and maximize function. Additionally, they all have titles on the top bar. They all, possibly, share a certain style or design. OOP helps us achieve this in a super efficient way! We can have a class (blueprint) for every window! The class will have attributes for EVERY window so they look the same and , additionally, it will have methods so that they  function (minimize, maximize, and exit) the same.

The alternative to OOP is hard-coding line by line…by line..by….line….AND on top of that you would be repeating yourself often! Totally the LONG way to do it.

After OOP, we were told that there was a graduation ceremony on Friday for one of the older cohorts. We were also asked if anyone from our cohort would like to volunteer to present a past project at that graduation. I don’t really have much of a working product to present but I volunteered anyway. I’m not sure how many people are going to be there or how it is even organized but I am looking forward to the opportunity to share  what I learned so far with other people!

Week Three – Day # 2

alarm
Replace 6:00am with 5:30am

Today was an EARLY one. I was the first one there again. I think I’m starting to like the calm right before everyone arrives. It’s pretty similar to when I was teaching. Loved getting to school an hour before sectionals to work done. I am hoping to adopt the same habits with coding!

Before it was time for algorithms, I was able to complete half of the Python Fundamentals in the learning platform. Our algorithm this morning was interesting. The goal was, given an array and a min and max value, find all values between min and max and move them to the front of the array while removing the values outside of the min and max. Seems simple enough! A good .pop or ought to take care of those values we want to remove. EXCEPT, we weren’t allowed to use an built in array methods…

crap
My exact reaction…

Without giving away the answer, my partner and I spent about 35 minutes working through it. The aspect I love most about solving algorithms is it’s good practice at problem solving. In fact, I approach algorithms very similar to how I approach teaching.

  1. Break down what the problem is asking. Don’t try to do too much all at once. Break it down to smaller parts.
  2. Create a road map to the solution; also known as visualizing. Don’t work out any details in this step. It is meant to be very general and broad but it helps to set you in the right direction.
  3. Time to code. If you have no idea where to begin, start with what you know. Just get SOMETHING down on paper…er…computer. (Actually, when working through algorithms, we aren’t allowed to use computers. We are discouraged from googling and testing code in the console. Instead, we do all of our work on the whiteboard with a dry erase marker.)
  4. If you get stuck (more like WHEN you get stuck) don’t give up or get frustrated. Make a comment and move on. Leave it and come back. This was the hardest step for me to follow. I am very accustomed to making sure all of the pieces are in place before moving on to the next thing. Unfortunately, when coding, I wouldn’t get very far if I did that all of the time.
  5. Once you have written all of the code, it is time to test your algorithm and find any breaks or crashes in the code. If you find a break, start at step 1 and break it down.

You could take the steps I have listed above and literally apply them to ANY situation or problem you might encounter in life.

I LOVE this about coding. It forces you to be a problem solver.

solved

After algorithms, we had another short lecture this morning. Before the lecture, however, our instructor gives us an opportunity to ask any questions about homework assignments from the previous day. I always feel like I’m hogging all of the questions during this time…but I feel like if our instructor gives you an opportunity to pick his brain, you should take it! We continued with the lecture and we were introduced to Python functions and dictionaries. Functions in any coding language is a group of code then can accept parameters but it isn’t required. Functions also provide a means of reusing code without having to rewrite or copy code. Helps to keep your code “DRY”. Dictionaries are used to store information based off key-value pairs. When you wish to get some info, just call on it’s key to obtain the value.

The rest of the day was spent working on assignments until about 2:30pm. After that, we had a short group activity over dictionaries. When working in a group, we utilize “popcorn coding”. It involves only one computer and we all write a few lines of code and then switch out to the next person. This method of coding ensures that everyone has something to contribute to the final product. It also provides opportunities to learn from your peers if someone gets stuck or codes something incorrectly. I think it’s a great tool.

After the group activity I spent the last part of the afternoon finishing up my assignments for the day. Planning on staying ahead and reading the next module over Object Oriented Programming with Python!

Wow. This was kind of a long post and it probably wasn’t very interesting to read. I am still trying to figure out a balance between just throwing all my thoughts/experience in here versus creating an entertaining read for anyone subscribed. Let me know if you have any suggestions! I would love to hear from y’all!

Off to do more studying!

study

 

 

Start of Week 3: Python Stack

Today was HUGE. We started our first full stack, Python. Just some quick info about Python:

  • It’s an interpreted language, which means it doesn’t need to be compiled
  • Python is frequently used in data science and machine learning
  • Python is simpler to read and write in terms of syntax. It doesn’t require curly braces like JavaScript and instead uses indentation to create different block groups.
  • Python functions very similar to JavaScript.
  • There are A LOT of built in method and functions to use with Python

Before starting with Python, we received our scores for the second Web Fundamentals belt exam. I surprisingly did better than I thought. 9.9 out of 10. Still aiming for that elusive  10 out of 10…

nerd

After getting our exam scores, it was time for the daily morning algorithm. This one involved a given array and value, with which we needed to move the value to the first index of the array. Simple enough? The catch was we were NOT allowed to use any built in methods like .push() or .shift() and .unshift(). This made things a little more tricky. I developed a solution but couldn’t figure out how to write the code for it. After about an hour, we presented different group solutions. After seeing the first solution, I realized that I still struggle with overthinking the problem and finding the most complex way to solve these algorithms. The first group simply created a new array and immediately added the given value as the first index. From there it was as simple as just iterating over the given array and moving those values over to the new array. Simple, right?! Haha.

facepalm

Moving on to Python, We started the morning with a real quick lecture. We went over the differences between Python and JavaScript and then talked about some Python specific attributes. After the morning discussion it was time to download Python. I was a little surprised we were going to be working with Python 2.X instead of Python 3.X but it was explained in a way that actually made sense. Long story short, Python 3 isn’t backwards compatible with Python 2 and  a lot of businesses and web developers still utilize Python 2. If one did need to move from 2 to 3, it would be an easier transition than working backwards.

I had some memory issues with my GitBash. It would keep giving an IO Error anytime I ran a large loop. I asked one of the instructors for help and he couldn’t quite figure it out either. I decided to use both the Command Prompt and Windows PowerShell. Fortunately, PowerShell uses the same command-line interface commands as a Mac or Linux system.

computer

The next few hours were spent working on assignments that involved variables and conditionals to get us used to working with the Python syntax. I left the Dojo a little later than usual today. I spent a good 12 hours there today! My goal is to increase my weekly hour total to 70-75+ hours per week. I’m averaging 60-65 hours right now…

Tomorrow is more Python functions, dictionaries, and tuples!