Wednesday, April 30, 2014

Two skills needed to learn how to code: Grit and fun

There's a statistic that says 33% of people who start learning to code, give up before getting everything installed in there dev environment. I know from personal experience having hundreds of people email me, and tell me they are going to learn to code. I would say 50% or better give up 30 - 60 days later from when they started.

The ability to be resilient, to have enough grit to be tough and keep on when the going gets tough I think is one of the "must have" qualities of learning to code. If a new person can keep studying hard for 2 months then they can go the whole distance in my opinion.

I think one key besides being tough. Is also always being able to find a way to stay curious with what you are learning and to find some fun in what you are learning.

Without the ability to find some joy in what you do even the boring mundane or completely hard abstract concepts. You will eventually burn out. There is a book by @jamesmarcusbach "Secrets Of A Buccaneer Scholar"   (and no I don't make any money from this) in it he talks about basically following your own unique "learning rhythms" which I used to think was really just a cop-out for people who couldn't buckle down and study.

Now though I think if you really want to learn to code, it's more important to keep on learning over a long period of time then to simply crash and burn in the short term. I'm all for pushing hard, but I think if you can keep your "coding passion" with a long term focus you will stick with it and not give up and fade away. I really want to help people realize their goal of becoming a developer, and not just dream about it.

I feel bad for not blogging consistently, I promised myself I would always "write back" to let others know how things are once you actually do get hired. I am 2.5 weeks behind getting back to people's emails.

I am making a course that I will hopefully have up on Udemy or Skillshare in July that will hopefully change the way people go about learning to code, I'll let you know more as time gets closer.

I am still working on a book that will make understanding and learning programming easier for people not from an IT background. In my spare time I am still learning Node.js and Javascript which is helping me to understand coding more and not just in Ruby.

What else? Oh, hire my friend Dan who I mentioned last post you can email him and make him an offer or grill him on his coding knowledge at 6ftdan@gmail.com.

Other then trying to keep my head above water, I've been taking my boys to the park by the lake, eating dinner, making a fire and eating delicious s'mores.

Life is good, keep coding and enjoy it peeps :-)




Thursday, April 17, 2014

Hire this guy!....My Interview with a Daniel P. Clark

I thought we'd switch it up for a change and have an interview with my friend Daniel Clark. I first met Daniel a couple years ago at the Global Code Retreat the same one that I met my soon to be mentor David Bock @bokmann. Daniel was miles ahead of me then at coding and still is :-)


Daniel also knew a lot of Python besides just Ruby and had already made several Ruby Gems that had been download several thousand times. I was always shocked that he didn't go out sooner and get hired as a Ruby developer.

Well after talking over the years and coding together atseveral Meetup groups, that time has now come and Daniel is fresh on the market and ready to get hired as a junior developer. Finally!!!

 ANY company would be a fool not to beat a path to Daniel's door and hire him tonight, tomorrow might be too late =-)

Here is the interview I had with Daniel, I hope that it inspires and encourages others along the path to becoming a developer and one day getting hired as well, I hope you enjoy it! Feel free to leave some comments for Daniel, follow him on Twitter and check some of his cool stuff on Github, I always love sitting down and seeing what he's working on :-)


ME: 
"Tell us a little bit about your background, what got you into wanting to be a developer?"


Daniel:
"I'm a bit of a jack of all trades kind of guy. Growing up I always dreamed in adventures. In my dreams I'd always be running towards something, or away from something, but I never knew what. I love to be curious, and I love solving mysteries. 

Not mysteries as most would think of them. While I was still a toddler, to my mom's surprise, I found a screw driver and took apart the dining room furniture. I've always enjoyed taking things apart to understand them better.

My dad is an excellent computer programmer. He introduced my to qBasic when I was in 5th grade. I grasped a very basic concept of 'functional programming'. I was gifted an old computer around that time and the curiosity drove me.

I learned computer systems with hands on experiments. Break it, fix it, repeat. I was very interested in programming, and I so wanted to learn Java. Java was this amazing language that worked on everything. It seemed like the way to go. 

Well when I first started learning it I became very frustrated. Too many lines of code for simple things, it was object oriented and I only understood functional programming at the time, and I simply didn't have fun figuring it out.

So that kept me away from programming for a while. Around 10th or 11th grade I'd discovered a language called Python. And it was perfect. It looked like English, and it was very friendly with my functional programming style. 

To accelerate my learning with it I challenged myself to design an open source video game for school. So I wrote a game called PyC4 which is a Connect Four game. I won a first place for that entry in the Science and Technology Fair. From there I was hooked. I could do anything."


ME:
 "What has been the hardest thing about learning to code?"

Daniel:
"The hardest thing about learning to code has been thinking anything is difficult. To think that really turns your brain off and makes everything harder to grasp. There are often many ways to solve a problem.

It is most helpful to learn the tools you have at hand and use them in creative ways. If your process of deduction isn't continually improved then your brain isn't as sharp as it can be. It is how you think, your method, that needs to be improved. You don't need to know the answers to the world, you just need to know how to find the answers when you need them."


ME:
 "What do you like most about coding?"

Daniel:
"What I like about coding is it's always fresh. I love a good mystery, a good challenge, and the process of problem solving. I also like the difficulties to overcome.

Yes... when the code just doesn't work and you don't know why... What do I know when that happens? Well these are the times that I can improve my process and become a better programmer for it. The process is the most powerful part of programming. Having my mind become stronger
for the difficulty is worth those moments."


ME:
 "What has been the coolest thing you've built or helped to build so far?"

Daniel:
"I have written many things that I've been proud of. I mainly have developed small projects and scripts. I've written some web automation, including YouTube, Twitter, and search engine optimization scripts.

I've written many system scripts for handling, and processing, videos, images, and audio. I was also contracted for a script which paid out teachers for an educational media site through PayPal.

As for cool, I kinda like my random YouTube video script which grabs three dictionary words and gives you the first YouTube video response. Yes that's silly. But as a 
programmer you need to have fun now and then ^_^. "


ME:
 "What advice would you give someone who is just starting out wanting to learn how to code?"

Dan:
"I highly recommend beginners to be a bit relaxed when starting out. Don't ever assume something is hard or difficult. Knowing where to go is really key to progressing quickly. 

Fortunately in the programming world Google search results generally provide very good answers. This seems true for the more popular programming languages. For any particular questions you can head over to https://stackexchange.com It's wonderfully easy to use for Q&A and for all things software development."


ME:
"Knowing what you know now, what would you have done differently with your path to learning how to code?"

Daniel:
 "Deadlines. Starting out having deadlines for accomplishments really drives efficient progress. I say that because the school project had me learn a huge amount to accomplish the game.

 The thing about deadlines is it indicates a commitment to complete the task at hand. This largely helps prevent any idea of giving up, or abandoning it. Also find a competitive partner. Some one who's willing to challenge and push you further. 

This will open up whole new worlds before your eyes. If you need something to compete with then websites such as https://projecteuler.net provide excellent challenges."


ME:
"Where do you see yourself as a developer in 5 years? 10 years?"

Daniel
 "In five years I see myself as a community organizer and leader. I can see myself involved in the 
development process and growth of a company. In ten years I can easily see myself as a founder of one, or many companies. I can also see myself as being heavily involved in helping the community in so many ways."


ME:
 "What are some long term goals that you have?"

Daniel:
 "I have many. I have always wanted to own my own software company. I want to be a lead singer of a band and have the band stay together. I want to found a music label as a non-profit ministry. I'd like to be part of a video ministry. I want to master several languages. And I want to be a great athletic runner and a master of parkour."


ME:
 "How do you feel about your development skills?" 

Daniel:
"I feel I'm capable of some of the greatest achievements yet to be. I am able, I only need to hone my ability in on target and all will be well. This is how I feel about my skills. Do I know everything? Not even close. But I am as capable as anyone else on this earth. I can chose many different paths. Which do I truly want to be a master in? Yet another mystery. I look forward to the future."


ME:
 "What is your favorite language?"

Daniel:
"I love Ruby and I love Python. I like Ruby as a powerful language to accomplish things to the finest details. And Python I like for beauty and consistency. Python has a game development library PyGame, and an amazing network protocol library Twisted.

So for game development I clearly favor Python over Ruby. As far as web platform, I really like Django, which is a Python based platform. I fully believe the consistency of code between developers on this will help the code be easily maintained, and not a problem to maintain in the long run.

In Ruby you can have so many different ways of writing code that it can make for a more difficult time when working with other programmers. Think of it like people in Ruby have such extreme accents it's hard to tell what they're saying sometimes. But that's not a bad thing, it just keeps us looking up more details online and learning all the more.

My first choice to program is Ruby, but I'll quickly go to Python for it's well developed libraries if the task calls for it.I would like to say I'm open to learning many other languages. HACK, by the makers of Facebook, is one I really want to learn. I love web applications, and this looks like a beautiful language. A true programmer will continue to learn more languages."


ME:
"Do you like to do more front-end or back-end development?"

Daniel:
"I like whatever remains simple and beautiful. For front end development, everyone has a web browser on every device, and it's simple to develop for. So for me the best front end development is web development. But that's just aesthetics. I love mysteries remember? So give me the back-end problem solving code and I'll be on the hunt."


ME:
 "Tell us something that most people don't know about you. :-) "

Daniel:
 "I know that the mind is the best tool you can utilize. It is your 'way' of thinking that defines, or redefines everything. What I speak of is worldview(s). We often limit ourselves by believing before knowing. What this leads to is what I call “self-fulfilling prophesy’s”.

If you believe you will be poor all of your life, then you end up living in such a way that proves that. For example; some one who believes a jump won't hurt them, are more likely to make the jump. And one who is afraid of a jump, will most likely not jump and believe their fear to be fact. These are self limitations.

I believe that in all area's of thinking we can expand our worldview and become bigger and greater people for it. And so I help myself expand my worldview, and my understanding, by reading and studying patterns of good thinking. Author's that have helped me greatly are people such as Zig Ziglar, Jim Rohn, Dale Carnegie, Ravi Zacharias, and many others. There will always be more to read, learn, and grow from.

Lastly I root my understanding, and my foundation, in the Holy Bible and Jesus Christ, the risen Son of God. He provides reason for living, hope, meaning of existence, purpose, and lastly He gives us value. I love sharing and seeking truth, and I am open to all who want to talk on these subjects.

If anyone would like to take a look at some of my projects and code feel free to head over to my GitHub. "https://github.com/danielpclark And feel free to follow me on twitter @6ftdan




Tuesday, April 8, 2014

Everything is basically an API

I apologize for not writing, I am kicking butt trying to learn new stuff and loving it!!! I am getting one on one instruction 3 times a week for a minimum of an hour each session with our chief computer scientist so I am pretty stoked!

The only drawback if you can call it that is he has a WEALTH of computer science knowledge not to mention a PhD in computer science. The man is intelligent and knows so much that I think his hardest part is trying to dumb stuff down enough for me to understand it =-)

Basically I feel giddy with excitement. I mean think about it, I'm getting paid well to learn one on one about node.js and computer science in general from a PhD computer scientist with 40 years of experience. Can you feel the excitement, and the reason why I haven't had time to post lately?

I had to write today to let everyone know that it doesn't matter what your background is whether you are a: truck driver, painter, college student, construction worker, etc you can make the switch.  Which by the way I have received emails from people in all of the previously mentioned professions that are all trying to learn to code and one day live the dream.

The hardest part with learning to code is that it's easiest to quit when just getting started because everything is SO overwhelming, so much to learn & so many new concepts to decipher. Not to mention the verbage I mean COME ON! Why can't everyone just call a method a method or everyone agree to call it a function. NO! instead it can be called: 'method', 'procedure', 'function', 'calling', 'running', a 'subroutine' I mean my goodness not to mention all of the other computer science terms that make your brain hurt when you've never been exposed to them before.

One that confused me for the longest time was client, server and API relationships, how it all fit together. I'm not there yet but let me just say it's all making a LOT more sense, although I think it's too much to write in this post. Basically everything in computer science is all just layers and layers of abstraction all with an Application Programming Interface. It's almost like: 'OHHH...this isn't as hard as I thought kind of moment, it starts to all make more sense :-)

Well that's where I'm at right now, keep coding peeps!