Life Update: I’m Officially a Developer

It’s been awhile. I promise my absence has been for good reason though, not because I fell off the coding wagon. Actually, quite the opposite. As the title says, I got a freakin’ job as a web application developer! I was hired on back in September and have been there for about 3 months now. Since then coding has been apart of my daily life more than ever before so my blog updates have sort of taken a back seat. 

I do apologize about the long hiatus though. From the interviewing process (which was quite brutal for someone of my novice skill level) to the job itself , life has been super draining. Don’t get me wrong, I’m learning loads of stuff each and every day but I now know this is where the real journey starts. Getting the job was just the beginning.

I definitely intend to give a full recap about the interview, personal struggles, how I overcame certain obstacles and ultimately landed the job but in the mean time I wanted to let everyone know that I’m alive and doing well. Until next time, happy coding!

Learning Code While Working a Full Time Job

 

This is about my journey of learning how to code while also maintaining a full-time job. Spoiler, its hard as hell and the burn-out is super easy. Though I’m here to hopefully shed some light on what’s worked for me and how I maintain my sanity…

1. Make coding your hobby

I’ve talked a bit about this in my previous posts but I think it’s worth reiterating. I haven’t had success in the past attempting to balance work, social activities, hobbies and learning code. There’s just not enough time in the day to do everything I wanted so I had to prioritize. I used to come home after work and get online with friends to play games. As hard as it was, I’ve had to cut that out of my life temporarily. Anyone who’s ever played online games knows that its a sinkhole for time. One moment you’ve promised to just play one 20 min game of Overwatch and the next thing you know it 3 hours have passed by. So it was imperative that I put a halt to this if I wanted to progress in any sort of fashion. I’ve also been cooking less than I used to. That’s something I didn’t want to see diminish but cooking can take me a whole evening of preparation, so I usually just opt for the simple sandwich or omelet lately (my girlfriend is upset by this side-effect). The point is, if the majority of your day is taken up by your day job then you’re going to need to make major sacrifices. Its just the nature of the beast but a necessary step if you’re wanting to progress.

2. Have a long-term outlook

This isn’t going to come to you overnight. With the influx of these coding ‘bootcamps’ that promise to get you job ready in 3-6 months, the realistic expectation for people has been massively skewed. This is a bit like weight training, your muscles can only strengthen so much in a given period of time. If you’re bench-pressing 95lbs today and some guy promises to train you up to 225lbs in 6 months, it’s just not physically possible for most people to achieve this. Your brain is like a muscle, you can only train it to absorb so much in a given day before you just burn out. So I’ve adopted the slow and steady approach. I don’t cram 5-6 hours of coding in after work because that is a recipe for disaster. In fact, I recently spent the weekend trying to cram as much coding as I could in to get this Weather Application built and quite frankly, I was miserable afterward. I find an hour or two of coding each and every day to be much healthier than just doing these cram sessions. Plus it gives your mind time to process what you’ve learned in much more manageable chunks. If you haven’t been to my Daily Coding Log then you might not have seen this quote:

“Continuous improvement is better than delayed perfection.” – Mark Twain

Just keep at it each and every day no matter how little you do or learn. Just keep chugging.

3. Start a Coding Log

With the long-term approach, it’s sometimes hard to remember where you started and just how much you’ve progressed. Even though I’ve only had my coding log for a few months, I have gone back a few times and looked at my notes on Git and Javascript basics and it makes me feel really good to know how far I’ve come. I’ve also named it “Daily Coding Log” for a reason, so I commit to myself to code daily. It basically doubles as an accountability tool when there’s no one else there to make sure you’re keeping up.

4. Code in the mornings before work

This was probably the hardest one for me to adapt to because I have always been a night owl. I started off coding after work but found my attention span to be much less and often found myself getting distracted often since I was usually at home. I just didn’t have the energy after work because I’m mentally exhausted by the evening so pushing more information into my head just didn’t pan out. One day I forced myself out of bed at 6am and got to work just before 7am so I could get 1 hour of coding in before 8am rolled around. Turns out, my head was much clearer without the clutter of the day fogging up my mind and I was able to focus a lot easier (this could also be because of the coffee). This is now my go-to time of day for coding since the distractions are minimal and I’m able to start the day coding with a clear mind.

5. Make friends with smart people

This one might sound kind of weird to you, you might be thinking “what do my friends have to do with this?”. There have been a bunch of times where I’ve hit a brick wall and there wasn’t a single Stack Overflow document on the entire web that could have helped me. This is where having a friend whose very well versed in programming comes in. I’m very lucky to be friends with multiple programmers all of whom are very good at what they do. I’ve reached out to a few of them on occasion when I was losing all hope and just getting 10-30minutes of their time can be immensely helpful. Having someone right there to show you the process and how to go about doing even the littlest of things has been one of the most helpful learning resources for me in my coding journey.

6. Go to local coding meetups

So you just read tip #5 and are thinking, “Wow cool Bennett, you’ve got smarty pants friends, great freakin’ job. But I don’t know anyone who programs. What do I do?”. Well, you could go online and ask random internet people for help, which is useful OR you can go to your local coding group’s meetups. This place is great for getting to know other local programmers and networking for when you’re job-ready. Having trouble finding a coding meetup?

Try here: www.meetup.com/topics/computer-programming/

If that doesn’t work then do a little searching around on Facebook. My local coding group, Acadiana Software Group, isn’t on meetup.com but they have a Facebook page so give that a shot.

Conclusion

Those are my 6 tips for all of my fellow aspiring developers who are struggling with the 8-5 grind. These tips are just what have worked for me so if you’re stuck in a rut, give them a try and let me know how they worked. If you have any of your own tips you’d like to share, please leave me a comment!

Building My First App: The Process

A ton of beginners believe that they need to learn an immense amount of code before they can ever build anything useful. I’ve felt like that before, hell I still get that feeling of extreme self-doubt but its less frequent than before. I’m here to prove you CAN build an app that serves a purpose with very limited programming knowledge. There’s a few prerequisites that you must have that are not even coding related before you decide to build just anything. I’ll list the ones I find most important:

  1. Do you really want to solve problems and build things that make a difference for people?
  2. Can you identify a need or want that you have a desire to solve?
  3. Are you willing to put aside leisure activities to solve this problem?

I find the most successful programmers are not the people with the best coding skills, its the people who want to genuinely make a difference.  If you’re still struggling with those aspects then you maybe need to re-look at the whole reason you are in this game.

Ok so if you’ve got those 3 questions above answered, then we can move on. Just as a little background, I currently work at a marketing agency and we use a program called Google Adwords to setup and deploy advertisements. Without getting into too much boring details, we use these things called ‘keywords’ to basically figure out who we want to show the ads to when people search for things on Google. There’s a few modifications we can make to these keywords to alter their properties. For example, I can take the word “find a plumber” and change its properties in 3 different ways, like this:

+find a +plumber

“find a plumber”

[find a plumber]

I used to manually adjust these keywords one by one so it took a stupid amount of time to complete. I knew there had to be a better way, so I searched around and found this cool website called Keyword Toaster. This was great because I could now save a ton of time by just copying/pasting my chunk of keywords here and have this website convert them for me. Though, there were a few problems I identified that I feel could be improved:

  1. Prepositions shouldn’t be include for modified broad keywords
  2. I had rather edit the keywords in the same window as Adwords

So it dawned on me, what if I just made a Chrome Extension that fulfilled these needs? All the app is essentially doing is taking a string, altering it, then returning the altered string in an output box. Easy right? Well, kinda…

I looked into what it takes to create a Chrome Extension and found that I should primarily be using Javascript. One thing that made me go with a Chrome Extension is A) I could use the extension in the same window as Adwords and B) No backend/server-side coding needed. I rarely see anyone suggest creating a Chrome Extension to newbies but this was the easiest, most straightforward platform to launch my simple app to the world.

Alright so, I had a minimal amount of JS knowledge beforehand but I knew I really needed to brush up on the basics. So I went through a highly recommended course on watchandcode.com that taught me these essential concepts:

  • How to read Javascript
  • How to debug
  • Functions/Arrays
  • Basic DOM manipulation

The course basically teaches you how to create a simple Todo app in your browser. This is perfect because all a Todo app does is take an input and display an output. If you think about it, that’s almost the core function of most applications at a very basic level. So what I did was run through the whole course once, then a second time. During the second pass of the course, I essentially took what was being taught and applied to to the concept of the app I was trying to create. I was able to take 80% of the code taught and use it in creating Keyword Modifier. The only real difference in this case was altering the output, which I accomplished with a little REGEX.

To live test the code I was writing I used glitch.com. This made it super easy to see my changes in real time for an app of this size. I wasn’t overly worried about CSS so it looked pretty fugly but all I cared about was the core functionality. Trust me, I make it sound like this was a simple process but even though most of the code I used was from the Watch and Code lesson, I had to reach out to people on different Slack channels and refer to Stack Overflow countless times for help.

After many months, my first little application was born on the Chrome Web Store. Here is a link to the first version I had initially launched.: https://github.com/Beznet/keyword-mod . Its a little cleaner now after some refactoring and added functionality, so you will see some minor changes to it if you download it today.

The point of this whole article is to prove that if you have the desire to create and build, its going to carry you through the hurdles of coding regardless of how little you know.

 

If you’re reading this and currently struggling with your idea for an app, leave me a comment! I’d be happy to talk about your process and help you along.

 

Changing My Mindset: Coding is a Marathon

Photo by Robert Murray on Unsplash

I used to hold this idea that learning code was something that I needed to plunge full force into. Spend hours each day coding until I couldn’t stand to look at my screen any longer and get up to speed as quickly as possible. While Im sure this can work for some people, it sure as hell flopped for me. Only until recently have I changed that awful “sprint” mindset where I attempted to get the most done in the shortest amount of time. Although some blame should be placed on these coding ‘bootcamps’ that have been popping up all over the place promising to get you job ready in as little as 3-6 months. This propagates this ‘sprint’ learning mindset that many people then adopt as the norm for a code-learning timeframe.

If you’ve done any programming, you know that it is like learning an entirely different way of thinking. You’re essentially re-wiring your brain to follow an oder of operations that feels almost inhuman (which well, it is). For me to get my mind wrapped around a lot of these concepts it took time to let these concepts marinate. After trying and failing for many months to put in multiple hours of coding every day, I finally had a series of breakthroughs that changed my thought process on the whole thing.

1.) I realized that I will forever be learning how to code and that there’s no end-game to this. Once that reality hit, this learning time-frame which was arbitrarily short and ever moving forward was abolished. I now realized I can easily learn in little chunks every day and be better off than attempting to blast ass through huge concepts in record time.

2.) I surprisingly found out that Im most receptive and learn best early in the morning before work. This was mind-blowing because I’ve always been a night owl and have done any and everything after 5pm. Once I realized this I made it apart of my routine to wake up an hour early and code in my company’s cafe until 8am hits. I’ve tried coding at home and have a lot less luck than if I leave the house.

3.) Much like having a workout buddy in the gym makes you more accountable, having a coding buddy is just as beneficial. So every morning me and a coworker meet up to work on our own projects. My coworker actually isn’t even learning code, she’s just working on her own side project but the fact that we both set a goal to meet every morning helps keep us accountable and consistent.

There ya have it, those 3 changes above have made a world of difference for me. Ironically, the whole idea is to do less but do less more often. Its consistency that has been the driving variable of success these past few months. Lastly I want to mention that I’ve included a new portion of the site dedicated to my daily coding activities. I initially kept a log of what I learned/accomplished in a Google Doc but I figure might as well share it with the world.

Set Sails To … This General Direction!

Every aspiring developer has experienced this conundrum before:

“I sure do want to learn code! Hmm I wonder what language I should learn? My coworker said I should learn PHP, another friend told me just go straight Javasctipt, I think someone else mentioned emerald…or was it ruby? Oh and my great grandpa still swears by CBOL. I’ll just learn them all!”

Then there’s the suffocating realization about 6 Codecademy lessons later that its not going to be as easy as you initially thought. Unless your goal was to log ‘Hello World’.

I’ve gone through this gambit more times than I’d like to admit. Its only a recent phenomena that I’ve actually stuck with coding consistently but there was a lot realizations I had to come to grips with before I got to this point. I’m still kind of stuck in this loop because I initially started out 1 year ago dead set on JavaScript but recently found that PHP is actually going to be the language I personally have the best chance at landing a dev role with (this is purely circumstantial in my case).

While there are definitely some nerds destined to be strict C++ programmers from the day they were weened off their mother’s teet, most of us have to go through the hellish paradox of choice when it comes to languages. As with all the advice you hear, just pick one and stick with it. A lot of the principles of one language are universal to all languages. I’m still trying to imprint that advice in my own head as I’ve flip-flopped between 6 or so languages but its just now sinking in.

Another fear of committing to a language is, “What if this language is outdated by the time I learn it? Will I be able to  apply it a year or two from now?”.Do me a favor, go on Indeed.com and just type in ‘FORTRAN’ and look at the results. I rest my case.

Moral of the story is, don’t sweat it. Whatever you choose you will be just fine in the end. Its your persistence and perseverance that matters most so work on those two qualities and you’re set.