I am a Test Automation consultant, I write and read code most days. Over the past 4 years I've done many different things with code:
I've written basic Rails applications - this is how I got hired at my first job as a junior developer
I wrote web scraper scripts and used Jenkins to automate them - At my second job - this is where I really started to get better at coding, I learned the basics of automating things.
I helped create an API web service test automation framework in Ruby - I paired with a senior Ruby developer for 6 months straight creating the framework. The code reviews and pairing took my coding skills to a higher level.
I don't know everything but I've learned a few things along the way that I would like to share with you:
Code reviews - be mean to the code, nice to the coder - alot of people still don't know this or use it.
I had a boss who would flip me off every morning and thought it was funny, after day 210 it starts to get very annoying. I have had about 4 developers who really knew how to do a great job at code reviews. Code doesn't have feelings, people do. When you are a junior level developer you are going to be getting tons of comments on your code reviews, this is a good thing as you will get better. Developers are notorious for lacking empathy, alot of code reviews suck because of it. My advice is to remember the humiliation and frustration when you have a *%$* reviewing your code, and to not do that to someone else when you start doing code reviews. Also try to not take anything the developer says personally ( even if they make it personal ).
Make it run, make it right, make it fast.
I used to want to make something or write a script and I would try to plot out the perfect path to make the code awesome before ever writing a single line of code. Instead, think about what you want to make long enough for you to be able to write a "first draft" that works, albeit it's ugly. Get your code working and then start making it pretty and start looking at how to really improve it. Lastly you should look at ways to improve performance before pushing your code up for review. For me this was a very freeing concept to start writing code and not just trying to have everything perfect in my head from the start. I think as you gain more experience you will be able to write awesome code right off the bat, I have seen very senior developers do this. I don't think most entry level tech people will be able to for several years.
The courses you take online are not really what you do in real life.
Courses are not geared to helping you land a job in the shortest amount of time, for the most part they want you to keep paying a monthly subscription fee. The real world trenches look very little like the clean beautiful courses you took online, which is why I recommend getting your first job as quick as possible, getting your wet and figuring out what it actually means to be a professional in the field. This may sound backwards, but I see far too many people who are waiting to get "good enough" coding in their parents basement's for 3+ years. There are many jobs out their with less qualified people filling them, I think the key is your passion and willingness to learn. If you have those you will grow your skills organically as needed, when "pain points" arise you will learn enough to get through them. Someone with 1 year of real world experience is far more hirable and productive than a 3 year "basement coder".
Algorithms are hardly used in the real world.
I have almost never used an algorithm in my professional job, I have only ever needed to know algorithms for interviewing purposes and other mind games. Real world coding is much more about these topics:
Writing methods that only do one thing
Creating separate classes to keep the code cleaner
Writing method names as verbs
Naming variable that make sense - tip: name it what the method is returning back, also make sure to name it singular or plural depending on what is being returned.
Reading code - this is the hardest thing that is almost never taught. It's hard to read other people's code, but that is 80% of your job. A good IDE helps.
Debugging - senior devs are amazing at this
NOTE: This has been my experience with web development and test automation, I think the more senior level a developer becomes that changes some.
Refactor organically - slowly as you go.
The last senior developer that I wrote the API automation framework with taught me this. Become aware of pain points in your code. When you are writing your code and start getting annoyed or frustrated with it, ask yourself why and how can you remove that pain point?
Simple example: Whenever you find yourself writing the same line fo code more than once - make a method. When you have to change your code and it takes forever or is confusing, figure out how you can make it easier. Don't be afraid to make another class to clean something up or break methods down further.
No one is truly TDD - bet yes, have tests - unit tests are amazing.
I hate writing unit tests and really don't like the whole TDD thing ( yes I know it is important ). I also realize that one reason Rubyists are so caught up with TDD is because Ruby is an interpreted language, and doesn't show compile errors. I have not worked with a single developer in real life ( not at conferences ) who actually wrote tests first. What I did see in real life was developers who wrote tests and checked their unit test coverage before pushing their code up for review.
From the QA side of things, whenever I found a bug, a good developer would instantly write a unit test ( where applicable ) to cover that "missed test". I will say from the QA / Test Automation side of things their is nothing better than seeing a ton of unit tests. Why? Unit tests are super fast and give a high level of confidence that the web app has been tested. Also unit tests are awesome to run every time you pull down a new feature branch from a developer. Nothing beats unit tests for regression testing.
Lastly unit tests will make QAs happier everywhere :-) So the moral of the story is yes, please write unit tests, whether or not you write them first, make sure you have some written.
In a nutshell how to write better code - think of others.
You could spend your entire life on just this subject alone, but since you have a real job and must write code now what do you do?
Writing cleaner / better code really comes down to one thing:
Thinking of others.
Someone is going to have to change your code in the future, how hard or easy is it going to be?
Keeping that thought in your mind while you are writing code will help you the most. When you are faced with the decision to write some code that will be easy to implement but hard to maintain, don't do it. You can write code as a first "rough draft" but you should never push the code up for review knowing it will be hard to maintain. Always take the approach that will be easier to maintain in the long run, even if it's harder for you to implement now.
Being okay with abstraction and not understanding how everything works
I used to freak out when I would be faced with a new code base or product if I didn't understand exactly how everything worked. The truth is sometimes you are given an object and you need to take it for what it is an object and figure out what you can do with it. Being comfortable with not understanding something is hard, I have gotten better with getting thrown into a new project or team and "rolling with the punches" until I figure out the lay of the land.
As a junior developer you need a really nice senior developer to take you under their wing.
You don't know what you don't know. I am a very driven person and always try to improve my skills, whether it be writing code, testing, pen testing, or data science ( my latest passion ). Finding a mentor will make you get better at a rate impossible on your own. I have worked with lots of crappy developers and testers, don't be one of those. You absolutely need a mentor, I can't tell you exactly how to get one, but you should always be on the lookout. Always be the best student and do the work required to grow. With my new endeavor ( Data Science ) I have several people who I can reach out to and ask questions whenever needed. Find someone who will be that for you. Pairing with the last senior developer for 6 months straight helped me grow more than I thought possible and gave me the confidence to learn my first compiled language C#.
All in all learning how to code is one of the most useful skills you can learn on the planet. You don't ever have to be a full blown developer, but learn how to write loops, variables, how to navigate / read code, make methods and classes. You will know how to code enough to get your feet wet in the tech field :-) You can do this peeps!
Friday, March 24, 2017
I am a Test Automation consultant, I write and read code most days. Over the past 4 years I've done many different things with code:
Saturday, March 18, 2017
Wow, thanks for the out pouring of advice and help. A special thank you to Ryan Herr who is a Data Scientist! Follow him on Twitter at @rrherr, I really appreciate the help!!! Whenever you are moving into a new field, one of the fastest ways to achieve your goal is to find a mentor. I know several people from work and online who are currently Data Scientists or have been in the past. Find people online who can be a mentor to you or who you can follow. Here are some basic things I am doing and recommend so far:
Listen to podcasts on the way to work:
My commute is 25 minutes each way so I should be able to get through all or most of these podcasts in a month without too much effort.
I have started Data Quest and highly recommend it, it's like an online Data Science boot camp. One thing I would like to note. I used to be supportive of coding bootcamps back in 2012 - 2014, I am no longer supportive of coding bootcamps. The reason being there is a glut of "junior developers" on the market because of all the coding bootcamps who constantly "churn" them out. In any new field which is in constant change, there is a huge opportunity for people who are less qualified to break into the field. This is what it was like from 2012 - 2014 with coding bootcamps, if you went to a bootcamp you could easily land a job afterwards. That is not the case anymore, there are literally hundreds of people all applying for the same junior dev job. Most with virtually all have the same story: "I attended a coding bootcamp". This is not a good way to stand out from the crowd anymore, in fact it almost makes you "unremarkable".
The reason I am doing DataQuest is that the data science field is still very new, and there are no clear paths on how to get hired as a Data Scientist. Basically in my mind the data science field feels very much like trying to get a junior dev job back in 2011 - 2012. It's hard because there is no clear path, but it's also very freeing because no one can tell who is truly "qualified" or not. This is why I am trying DataQuest, I feel like they have a pretty good path ( so far ) that gently introduces you to data science topics. I think 5 years from now there will be 100 data science bootcamps and everyone will be telling you to attend!
I have always thought and have done the following:
"Don't do what everyone else is doing. If everyone is doing something then do the opposite"
The whole key it to learn the basics of programming, once you do there are so many different opportunities for jobs out there! Spend at least an hour every day learning something new in the tech field, for me it is data science. Get moving peeps, you can do this!!! :-)
Wednesday, March 15, 2017
Tuesday, January 17, 2017
I received an email today from a guy in Winston Salem N.C. who is learning how to code.
I loved his outside the box thinking! He asked me if he could buy me lunch and "pick my brain". Mind you he will have to drive 100 miles EACH WAY!!! I've had this happen before, I had someone drive over 150 miles to buy me coffee at Starbucks :-)
Why do I tell you this...to brag? no.
Coding bootcamps are churning out fresh new coders everyday, thousands and thousands of new coders every year. Coding bootcamps are the solution to getting a job...except they're not. Bootcamps are having a harder and harder time getting they're students hired, I receive many emails that tell a similar sad story.
Attend bootcamp >> land job >> 3 months later laid off
I have some good news, there will always be jobs for people who know where to look, and who think outside the box. What do I mean by this?
College was a great way to get a high paying job back in the 70's - 90's
Bootcamps were an amazing way to get a junior dev job 2013 - early 2015
There is a new way to break into the tech field that I have touched on before, but the point is - there will always be jobs for people who don't follow what everyone else is doing. If you wait until everyone is doing something you are too late.
The best way to predict your future is to create it! When I was shoeing horses for a living I used that to my advantage to stand out from the crowd with my unique story. I needed help with coding but couldn't afford to go to a coding bootcamp, I met David Bock ( a very senior Rail developer ) for coffee, I had to drive 1 hour and 30 minutes to meet him.
Meeting with David helped me learn about the tech industry, and helped me meet people I didn't know. That relationship eventually helped me land my first tech job as a junior developer. I am constantly emailed and asked by people to give them personalized private coaching for free. Most of these people have not paid $10 for my book or course, they simply want my help for free with absolutely ZERO effort on there part.
That's what 90% of people ask who email me.
Guess what I say when someone offers to drive 100 miles and buy me lunch??? YES! I love helping people, I just can't personally help every single person do to the number of emails I receive.
I have 2 final thoughts:
Be different, think outside the box - don't do what everyone else is doing.
Buy me lunch :-) Think about it $10 - $15 to hang out and get my personalized advice for 45 - 50 minutes is a deal. It's the cheapest coaching program ever, if you ever are in the Raleigh area, feel free to reach out to me and I'll do my best to help you!
Sunday, December 11, 2016
The world is changing faster than ever! When I started learning how to code things were changing fast... now it's changing at warp speed! Things I have told you as a fact in the past, I am now seeing changing. You have to stay up to date or else get swept down the tech stream. I always keep my eye on emerging technologies, but the most important source I keep my finger on is tech job apps.
When they change, I change. If your goal is to stay employed you need to stay fresh with your tech skills. In my opinion there has never been a better time to get into QA than right now, this article backs me up as well:
I found this article very interesting for anyone wanting to get into QA:
One thing that is awesome about the QA field is that it is changing over to to automation at a rapid rate! What does that mean to you? If you are just out of a coding bootcamp and find the junior dev field crowed by a lot of other coding bootcamp students, than think about the QA field.
Test automation is at least 50% writing code, 50% manual testing. One of the best ways to learn more about testing and automation is to start listening to "test talks", I listen to them on the way to work everyday:
test talks podcast
What if you are a manual tester who can't write a single line of code ( many of QAs are in this boat )?I suggest you start writing automation, - doesn't matter what you automate,it doesn't matter how crappy the code, just start writing! Push all of your code up to Github so you can start building a little portfolio for potential employers to see.
As an example do what I did, while watching some Netflix in the evening with my wife, I wrote a basic script to automate the process of earning points youlikehits.com site. I don't need the script, don't really care about the script. The point is to practice writing code and slowly improving your automation skills over time. Check out my script...laugh... cry, write better code than I did and send me a pull request :-)
I am learning to write my scripts more organically as of late. I start writing the basics of what I want to the script to do, I start refactoring as the script starts to annoy me and starts getting painful to work with.
Instead of sitting and staring at a blank text editor and trying to write perfect code from the start, simply start writing and pay close attention to the "pay points". NOTE: this is not good advice if you are a full blown developer. I am speaking about people who are new to writing code. When I follow my own advice I find myself feeling more free to actually just start and enjoy the process of writing code.
Isn't that the whole point? I mean if you hate writing code and stress out every second you are working, why do it? Let me know what you think of my script :-) Next up, I might try and write a script to automate a job on Fiverr! Give me some ideas, tell me something that is painful for you.
UPDATE September 2016: We are now inundated with bootcamps and it's getting harder to land a junior developer position. I created a co...
Yes, obviously Free Code Camp is popular. It's supposed to make things easier for you to learn how to code. My problem is the length of...
I have always promised honesty and transparency with this blog. Last time I gave a review about Free Code Camp, I wasn't super supporti...
You need a Regular Expression to validate a phone number or a user's email address, so what do you do? Go onto StackOverflow and copy so...
What up peeps ! I feel like every day gets better and better, I just gotta' say life is good, No brag, just fact :-) I thought I woul...
- ▼ March (3)
- ► 2016 (16)
- ► 2015 (41)
- ► 2014 (24)
- ► 2013 (115)