Thursday, October 13, 2016

Wartime Lifestyle & Earning to Give

One of the main reasons I am excited about my transition from teaching to software development is that I believe that I can do more good in the world as a software developer than a teacher because of my skill set and interests. A key part of using my life effectively for the good of others is using my money effectively.

John Piper talks about the idea of living a 'wartime lifestyle'. Rather than maximizing our own comforts and luxuries now, the way we live should be "based on clear biblical passages of love and sacrifice and suffering in ministry and the brevity of life and the lostness of the world and the suffering of those around us." We should "move toward need rather than toward comfort and security, toward generosity and simplicity." All of this is based on the biblical commands to love others and share the Gospel to the ends of the earth.

It was probably over ten years ago that I thought about the idea of setting a certain income limit and giving away anything I made over that limit. There is so much need in the world and so many lost people, I feel morally obligated to limit my comforts to help others.

A few years ago I came up with the idea of giving away all of my income over 200% of the federal poverty level. This is something my wife and I have committed to doing.

The good thing about tying my income limit to the federal poverty line is that it automatically adjusts for inflation and family size. My income has yet to reach 200% of the federal poverty line but we may get to that point this year. In the meantime, I have been trying to give away 10%. Basically, my family is committing to staying at our current standard of living.

For a long time I thought that I should keep this plan a secret from others because of Jesus' command in Matthew 6:3: "But when you give to the needy, do not let your left hand know what your right hand is doing."

While my desire to give is rooted in my commitment to Jesus, I first started wondering about the benefit of sharing my giving plan with others when I read an argument from a secular perspective. A blog post from givingwhatwecan.org makes the case that talking to others about what you give and the benefits of giving can motivate others to give. This will lead to more people being helped. That blog post starts off, "A five-minute conversation has the potential to prevent 40 lives being lost."

What really made me think I should be open about my giving plan was when I read "Is It Wrong to Let Others Know How Much We Give Financially to the Lord’s Work?" by Randy Alcorn.

Randy Alcorn is a best-selling Christian author who earns minimum wage and gives away 100 percent of his book royalties. He has given away more than $6 million to date. He is someone I have tremendous respect for.

Randy directly addresses the verses above from Matthew. He makes a very good case that the verse is mainly about motivation and that in other parts of the Bible it is a positive thing to share about giving. I will quote his conclusion in full and emphasize what I feel is the key point.

This is why in the church we need to take the risk of openly telling stories of what God has done for us in the arena of giving. In fact, what may force me to swallow my pride more than anything is talking about giving when it runs the risk of making it look like I’m patting myself on the back. (Our motive for not talking about our giving is not always humility. Sometimes it is fear, doubt and, yes, even pride.) To vulnerably express to others where I am in my giving pilgrimage can be an act of humility. Though we must always check our spiritual pulse, it certainly does not have to be an act of pride.
So, I shouldn’t be bragging about my Bible study or prayer or evangelism or parenting or giving, but I shouldn’t be covering it up either. It’s easier for people in our churches to follow footprints than commands. If we aren’t willing to openly and humbly discuss giving, how can we expect to raise up givers? The church has plenty of examples of consumers—we need to see examples of givers. (That’s why hearing all the testimonies is appropriate.) Hebrews 10:24 tells us to “spur one another on toward love and good deeds.” We can only be spurred on to by what we’re aware of, what we can see.
This commitment to giving has opened up a lot of freedom in my thought life in terms of my career path. I am about to hit my income limit. At this point, earning more money will not benefit me or my family. It will only benefit others.

Without the idea of money clouding my judgement, it is much easier to just focus on serving others with my life. Any career decision will be based on what is going to have the biggest impact on advancing God's kingdom on Earth. I understand the focus discussed here should apply with or without an income limit. It is just a little easier for me with the limit.

I will still be motivated to increase my income so I can give more. But I have to determine if I can help more people by using my time to make money so I can give more or using my time to serve people directly.

The current plan is to give 1/3 to spreading the Gospel to unreached people groups (the primacy of this was inspired by reading "Let the Nations Be Glad!" by John Piper), 1/3 to local causes, and 1/3 to high-impact charities fighting global poverty.

Something that this plan has already motivated is my web development company that currently gives 60% of all income to charities.

It is my hope that sharing about my plan for giving will motivate others to give more. I hope that this increased giving will lead to more people hearing the good news of Jesus and getting out of poverty.

Monday, October 10, 2016

Angular 2 vs React: Which one should a new developer learn?


I have been learning both React and Angular 2 and have been wondering which one to focus on. They both are useful in front-end development, helping to manage states, and making it possible to create one-page web apps. However, there are some major differences. While both could be helpful to learn, this short article focusses on which one is best to learn for an entry-level developer.

Decisions
Angular 2 is a framework, while React is a library. This means that there is more of a set way of doing things in Angular. There is a lot more built-in to Angular. With React it is common to add other libraries to get all the functionality needed.

In some ways, this makes things easier in Angular since you don't have to spend as much time learning about the other libraries you need. Although some people may like that the core of React is a little simpler.

HTML or JavaScript
Angular 2 and React have different focuses when it comes to HTML and JS. One article I read sums it up like this: "Angular 2 continues to put 'JS' into HTML. React puts 'HTML' into JS."

React uses the JavaScript we already know while Angular adds a lot of Domain Specific Language to HTML. In this way, there is a steeper learning curve to Angular.

React's focus on JavaScript also means that the skills will transfer better to other JS libraries and frameworks.

Job Outlook
Since React is younger than Angular, there are very few developers that have much more than 1 year of React experience. There are a lot of Angular developers that have 3+ years experience. So if you start to learn React now, you won't be as behind compared to learning Angular now.

Most importantly, at this time there are more companies hiring developers for React than Angular and the hiring trend for React is still increasing while the trend for Angular is decreasing.

Conclusion
React seems like the best choice for a new developer to learn. However, it may depend on what job you want to get. For instance, one of the companies that I most want to work for uses Angular and not React. Because of this, I am going to continue to learn Angular.

Thursday, October 6, 2016

How to get a developer job in a small market, part 1


This is is the first in a series of posts about how to get a developer job in a small market. This series will ideally end with me getting a developer job in a small market. :)

I have spent a lot of time learning about web technologies and mobile application development. I have done some freelance projects and created many projects for myself. 

The problem is that I am coming from a career as a teacher so my actual work experience in the software field is low. Also, I like living in Saginaw and I would like to find a position nearby. At just under 50,000 people, Saginaw is a very small market when comes to jobs for software developers.

So how am I supposed to find a job in a small market with very little experience? I have found a strategy. I am following some of the suggestions in a blog post by Haseeb Qureshi titled "How to Break Into the Tech Industry—a Guide to Job Hunting and Tech Interviews". Haseeb is a person who went from knowing almost nothing about software development to landing a job at Airbnb paying $250k/yr in only one year.

Haseeb's advice for networking is to "just buy everyone coffee." He suggests offering to buy coffee for as many people as possible in the tech industry. I don't know very many people around my area who are software developers. 

Which brings me to a key idea he gives: cold-emailing people. 

I have spent a lot of time on LinkedIn and Google lately finding local software developers to contact. Just today I had my third meeting with a software developer in the area. I have been able to find out a lot about the companies they work for and about the application and interview process. 

Two of the meetings were for lunch and one was over Google Hangouts. Meeting for lunch definitely allowed me to connect with the people better. 

The Google Hangout meeting was exciting because it was with someone who works at Covenant Eyes, which is the company I most want to work at. He said Covenant Eyes was his favorite place he has worked. The interview process he described at Covenant Eyes seemed to be more challenging than what the other people I met with described for their companies. 

There was one question that all the people I met with seemed to agree on. I have been reading a lot about the importance of knowing algorithms and data structures for an interview. Everyone I met with said that they did not have to answer any questions about algorithms or data structures during their interview. I think maybe it is because these people work at smaller companies. I am still going to try to get better at algorithms but maybe I don't have to put the emphasis on it that I was originally planning.

I have definitely learned a lot from these meetings and I am going to continue to try to line up meetings so I can learn as much as I can about the industry in the area.

Sunday, October 2, 2016

History and Future of Programming

I watch a lot of YouTube videos about software and I came across a very interesting video by "Uncle" Bob Martin called "The Future of Programming". It is actually more about the history than the future. It was very interesting for a budding programmer such as me.

He starts by talking about Alan Turing who wrote the first code that we would identify as code in 1936. In 1960 there were a could hundred computers in existence and a couple thousand programmers. Just 5 years later there were around fifty thousand computers and a hundred thousand programmers. So in about 20 years we went from one programmer to a hundred thousand programmers. Just 5 years later again in 1970 there are over a million programmers. After this the number of programmers doubles every five years. That means half of all programmers have less than five years experience and the profession is in a perpetual state of inexperience.

Programming has only been around for about 80 years.



Wednesday, September 28, 2016

Better than I thought?

I often listen to coding podcasts and watch coding videos on YouTube. One of the YouTube channels I watch a lot is called FunFunFunction. He has done a few pair programming videos.

One of his more recent videos is Cellular Automata - Pair Programming. This is an hour-and-a-half, almost unedited video of the host, MPJ, pair programming with another person. It was so interesting to watch what it is actually like to program with no editing. There was a lot of looking things up on Google, making small mistakes, and forgetting how to do simple things. MPJ is a developer at Spotify and has a very popular YouTube channel about programming. It was very encouraging to see him struggle to write a program.

Maybe I'm not as bad at programming as I thought.

Sunday, September 25, 2016

Using templates: Is web design a solved problem?

I purchased my first domain name back in the year 2000 while I was a senior in high school (November 27th, 2000 to be exact. Thanks whois.net!). But I think I made my first website on geocities when I was in middle school. The most exciting content was the "joke of the week" that got updated at least every two months. I'm not sure templates even existed back then. Since I started out with no templates, it took me a while to realize how great they are.

My life goals have changed a few times over the years. I wasn't always planning on making a career of web design and software development but I have been making websites for people periodically since my first site in middle school.

Thanks to the Wayback Machine, we can see one of my first websites created in 2001! Yes, that is my face on a cow's body in the corner. The first time I was paid to develop a website for a business was in 2006 and they haven't done any major update since! See it here.

It wasn't until about a year ago that I realized how great website templates are. Everything I created before that was from scratch. I have found that starting with a template makes things easier, makes everything look better, and allows me to focus on the actual content of the website. Also, most templates nowadays are mobile responsive designs so a template helps guarantee your site will look good on all devices. It is still important to have an understanding about what makes up the template. An understanding of HTML, CSS, and JavaScript allows me to make customizations so the site can be directly tailored to the needs of the client. Thanks to templates, my more recent sites look so much better than my earlier sites. Here is one I created for an organization called P.A.C.T.

All this makes me think about a quote from the most recent episode of the Shoptalk Show, a podcast I listen to about web development. The host was quoting an (unnamed) friend that said "maybe web design is a solved problem." The most important thing to most users is ease-of-use. Using common design patterns makes websites easier to use and therefore makes the website more effective. Trying to reinvent the wheel every time only hurts the overall project and wastes time.

Compare the first website I created for the Houghton-Jones Neighborhood Association to the current website I created for them. The first was before I used templates, the second was after. I am never going back.

Saturday, September 17, 2016

Learning Ruby on Rails: Pragmatic Studio vs. The Ruby on Rails Tutorial


I first started learning Ruby on Rails back in January based on the suggestion of a friend. We decided to complete the Pragmatic Studio Rails course together. I have now successfully finished both the Pragmatic Studio Ruby on Rails: Level 1 course and Michael Hartl's Ruby on Rails Tutorial. I am going to do a brief review of the pros and cons of each course. I found both the courses to be very well-done and professional and both would be good for a beginner learning Ruby on Rails However, that does not mean I would recommend people do both courses. At the end I will offer a suggestion for people trying to decide the best route to take to learn Ruby on Rails.

Pragmatic Studio Ruby on Rails: Level 1
This course costs $149. After some discounts I paid $126.75. Before completing this course, I also went through their Ruby course to learn the fundamentals of Ruby. The course is broken up into 26 different sections and each section has a video and exercises. Text within the exercises section goes over pretty much everything covered in the videos so it is easy to find specific information.

The videos are professional quality and they all feature a husband/wife team. The interaction between the two hosts make the videos more interesting. They break everything down so it is very easy to follow. In the exercise section that goes along with each video, they guide you through creating a project that is similar, yet still different, to the project that they create in the videos. Since the exercise project is different than the one they create in the videos, it forces you to think through things a little more instead of just copying and pasting. This helped me learn the material better.

The project for this course was to make a move review site. Check out the  website I made with this course.

Michael Hartl's Ruby on Rails Tutorial
I completed this course many months later, partly to get a refresher on Ruby on Rails. One of the best parts about this course is that it is free. This course is basically an online textbook and tutorial. The free version does not contain any videos. This course covered a lot of the same concepts as the Ruby on Rails course. However,  compared to the Pragmatic Studio course, it seemed a little more advanced and I got the feeling that the work-flow was more aligned with what it would be like in an actual job environment. I did not complete the Pragmatic Studio Level 2 course but this tutorial covered many topics from the Level 2 course such as users, authentication, and admin privileges.

As far as I can tell, the Ruby on Rails Tutorial is the most popular way to learn Ruby on Rails. Also, Micheal Hartl is constantly updating it. I e-mailed him about a very minor error and he fixed it within a day. While I did not run into any major errors in the Pragmatic Studio course, I feel more confident about the accuracy in Hartl's course just because of it's popularity combined with very quick updates to any mistakes that are found.

One thing that could be a pro or con is that the current version of the Ruby on Rails tutorial focuses on creating a project through Cloud 9, a cloud-based IDE, while Pragmatic Studio suggests to use a local installation. So Pragmatic Studio gives a little more detail on how to install everything locally.

Both courses give instruction on using git, Heroku, and Amazon AWS.

The project for this course was to create a site similar to Twitter. Check out the site I made with this course.

What I would do differently if I had to do it again
Though they are both great courses, if I had to do everything again I would not do the Pragmatic Studio Course. In addition to going through Micheal Hartl's free course, I would join his Learn Enough society for $29.00 /month that includes videos to go along with the Ruby on Rails Tutorial. This subscription also includes other material as well. I did not do this so I cannot speak to how these videos compare to the Pragmatic Studio course but based on how well done the free tutorial is, I would assume they would be very good videos.

One last thing to consider is that the Pragmatic Studio course may be a little easier for people with little programming experience. While both courses give detailed step-by-step instructions, the Pragmatic Studio course breaks down some concepts a little better.