Matt RaibleMatt Raible is a Web Architecture Consultant specializing in open source frameworks.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: AngularJS, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

How do I become a programmer?

Yesterday, I received a message from a friend, asking about how to become a programmer. It's not the first time I've been asked this. In fact, this summer I've been asked by several friends how to get into the field. It seems that as people grow older, they see the lifestyle of working remotely and enjoying their job as an attractive thing to do. In yesterday's case, this friend is a mom that now has her days free because all her kids are in school. Here's what she wrote:

Now that my girls are both in school full day, I've been thinking about taking some programming classes. It's something I started to do while I was working at [ABC Company], but obviously didn't pursue once I quit to have kids. I'm thinking of getting my MIS in web development or specializing in designing apps if that's even a thing? Anyway, what languages would you recommend I concentrate on? JavaScript, Python? Lastly, is there a particular school you would recommend? I can't afford DU on my stay-at-home-mom salary, or even Regis which is where I started when I was getting tuition reimbursement. I was hoping I could do most of my education online while the kids are in school? Any advice or words of wisdom would be greatly appreciated!

Since this is a common question I see, I figured I'd publish my answers here, and get some advice from y'all too. Here's my response:

Python would definitely be good, as would JavaScript. JavaScript can be done on the client and server these days, so you could do that and be able to do front-end and backend development.

For programming specifically, I've heard these guys have a good JavaScript course: https://www.codecademy.com. Here's how to get started with Python in eight weeks: http://lifehacker.com/how-i-taught-myself-to-code-in-eight-weeks-511615189. And one of my favorites: http://programming-motherfucker.com/become.html.

I've taken a Scala course from Coursera, it was hard and intense, but I learned a lot. They have lots of courses and give you certifications you can put on your LinkedIn profile: https://www.coursera.org.

I've also recommended https://teamtreehouse.com to folks and https://www.khanacademy.org has always been good, even for kids.

Ultimately, the best way to learn to code is by doing. It's definitely good to study, learn and practice, but it'll probably won't sink in and become real knowledge until you're getting paid to do it. With the plethora of high-priced programmers out there, you can likely find a junior position, show a willingness to learn and come up to speed quickly. If you can couple that with a remote position, I think you'll really enjoy yourself.

Her response was interesting, as she thought she might need a CS degree to even get a programming job.

Coincidentally I looked over many of these coding sites yesterday but wasn't sure if I needed an accredited diploma. It sounds like it's more important that I just get some experience.

From my experience, a college degree matters, but not a CS degree. I told her people skills make programmers stand out and she's a witty person that certainly has those. What's your advice as a programmer? What would you tell people to do if they want to break into the field?

More importantly, if you're on the hiring side, what would it take for you to hire a 40-something person with no programming background? If they've been studying for six months and have really good people skills, would you hire them for a junior position?

Posted in Java at Aug 13 2015, 08:32:43 AM MDT 7 Comments
Comments:

Hey Matt,
Good information.
I do not think that a college degree matters, and at this stage of the game I would not worry about it. From the hiring point of view - I would have a hard time hiring someone (doesn't matter the age at all) with no programming background.

I would recommend looking at something like www.galvanizeu.com for real world like development education and training. They have locations in Denver and Boulder.
I would be much more willing to hire someone coming out of something like this.

Take care,
Chris

Posted by Chris Blackburn on August 13, 2015 at 09:34 AM MDT #

Hi

as Matt pointed out real knowledge won't sink in until you are getting to program and solve real problems but you don't need to wait until getting paid to do it, you can start solving real problems by developing an open source application for yourself

let me share an idea with you, I'm starting teaching programming to young kids and one of the ideas I want to work on is help them develop as a team a "Shared List" application, where a webservice holds a shared list of items that can be added, listed, changed status and removed, the content of this application can be a shared tasks list, a shopping list for a family or students flat, etc...

You can learn to develop the server side in Python as REST web services that will get you to learn Python, webservices and SQL... A working example of a Python webservices that fits in about 200 lines of code you could find here http://ai2.appinventor.mit.edu/reference/other/tinywebdb.html

Then you can develop a web client that will allow you to access those services from any web browser on any device, and that will get you to learn HTML, CSS and Javascript which are the common language of the web..

If you are not doing it already, I would recommend you to use Linux as your operating system as most developer tools and application servers will have a better integration

I would open a GitHub account and upload all your code there, you would obviously need to learn how to manage code with git but that is also the point. An I would definitely open a blog, wordpress.com could be a good option, and regularly blog about all you are learning. If you keep a schedule for blogging, it will help you to keep on track, while you learn tons trying to explain your learning process..

I would recommend you to blog "for yourself yesterday", and there is a chance that you engage with other people on your same path.. keep it nicely documented as this could be your online resume

And as you don't have programming working experience, this blog and your github account would serve you as your online curriculum, and it will be a fairly accurate picture of your technical skills

And while you are learning to program you can find a job as a tester that will also help you learn about commons software bugs and get some networking contacts..

On the hiring side, I would definitely meet with brave people, able to develop themselves, adapt to change and outgrow problems..

Lastly, I would write down a road map for yourself: write down in detail where you want to be in 7 months, 2 and 5 years... and once you know where you want to be you will find out the resources you need to develop to get there..

And have fun!!

Best of luck

Cheers!
Ivan

Posted by Ivan on August 13, 2015 at 02:38 PM MDT #

Hello Matt,

I like Ivan's ideas about being proactive to start problem solving with programming on their own. They are going to have to really want it, and roll up their sleeves and start programming.

It'll be tough or impossible to get someone to give them a shot with no experience. Gaining that experience may seem overwhelming at first and it wil be difficult for them to know where to start.

To aide the process, they might want to start practicing programming. If they want to learn Java, they can download the JDK Samples and Demos and start going through them and trying them out. After this, they can progress to the higher level tutorials in an IDE like Netbeans or Eclipse.

Another avenue they might want to consider is the Oracle/Java certifications, which might be good to pursue in parallel. These tests are not easy but there's plenty of study materials, books and practice testing available that make the process manageable. The certification may help someone get their foot in the door, and it's a great way for them to learn what they need to know.

They also should find a good mentor.

John Hogan

Posted by John Hogan on August 14, 2015 at 08:19 AM MDT #

This is a fantastic question and I think, all too often, people don't recognize the power of personality and inquisitiveness as key characteristics that employers are looking for. I have been a consultant, an employer and a recruiter and I never rely simply on degree information to form a team. But here's what I do know. There are some businesses where a certification is key. In network management or desktop management. You really need an MCSE, MCSA, A+ and some Cisco certs. It's a great job. It has different rigors than programming and the opportunities are excellent for women. Programmer: if the team we have is strong/experienced, I am more willing to look for an intern or junior programmer with less than 2 years experience. What are we mostly looking for? Angular developers or production support individuals with Python, SQL and/or OO experience. You need to decide what part of the app calls to you. Do you like to be out front, to see what has been created? Do you like to design layouts. Are you excited about talking to the customer or users about how the use the app? Are you a talker? Well then UI design and the dev efforts that support that may be for you. Angular, jscript, html, css...there's a spectrum. Are you all about tuning? Do you like production support? Do you relish being in the hot seat...there are technical jobs that meet all of these requirements. What is important if you don't have that development experience? Have you been a project manager, have you done requirements analysis, can you share some UI mockups that you've made? But most importantly, can you communicate enthusiasm, inquisitiveness and eagerness to try something and can you convince a hiring manager of that? Maybe Matt can connect us and we can learn a bit more about what you like to do. We're always looking for inquisitive people at StyleSelect.

Posted by Cherish Edwards on August 14, 2015 at 09:06 AM MDT #

Hi all,

I would hire a person no matter age or vast experience, as I see the key skills are willingness to work, independence, reliability. A little experience and some programming knowledge is essential but I think the real programming is taught as you go. Frankly speaking I have not seen a very good programmer because of some school or degree, all I know have a sense for it and practical knowing of what they do.

With regards

Posted by toms on August 15, 2015 at 07:32 AM MDT #

I have the same advice as Matt. Do it. It's all about experience. I started my own consulting business again but this time I will probably hire a partner or two and I will probably hire some junior-level folks too. I won't use recruiters and I would want people that want to do this. As Matt said, if you can work remote and write code, it's lots of fun. It doesn't seem right but you can get a lot done, make money, and be having fun.

I don't have a 4 year degree but I worked for a company that had 22,000 employees and I told the development department there that I could code, and I showed them C programs and even some with assembler-macros. The assembler macros were little snippets of code that talked to the microprocessor using its native language and my code ran very fast. This was over 30 years ago. I loved it and I told myself that's what I wanted to do. So I just did it and didn't let up until I was a programmer.

Also, get as much training from others that you can. And, if you have a friend that writes code and that friend is good, shadow him or her. I had a mentor in 1989 that made $211 hr at NASA half a day and then at Newport News Shipbuilding the second half of the day. And, he was a genius. I wanted to squeeze his brain like a sponge. He knew it and he also knew how interested I was in learning more. I wrote a program to display an image in tiles or little strips of image and my program would paint each strip and you could see this until the entire image was painted. My mentor Bob refactored my code and the image presentation was immediate. He was God to me. Find someone like that.

Like Nike says, "Just Do it". Just about any language you want to learn is available to you for free and documentation or reference guides are easily found. Also, IRC channels are great when you are learning. IRC is called Internet Relay Chat. You can find a free client application online using Google. It's a world in itself so expect IRC to go slow at first but you can learn. There are thousands of developers all around the world on IRC and just about anything you would be interested in will have a channel. E.g. Java has ##java now. Just remember it's not for chit chat, it's to talk about Java and Java problems.

In conclusion to my ramblings, I would recommend doing something like Python or Ruby. Both of these languages can be used for procedural coding and object-oriented designs. Both languages are used for desktop, web, systems coding, and tools development. Once you choose a language, go get an IRC client and get to know some other developers on the #python or #ruby channels. Also, find and download a PDF reference manual or purchase a book to read about the language. There are two formats for learning how to code, a reference or a cookbook format. I really like the Pragmatic Programmers here in Raleigh, NC. They do a lot of books, some good and some so-so. The Ruby books are pretty decent. I know a little Python but I don't own any books. I also like O'Reilly books. There are others too.

Do it. Download, stay up all night, read, hang out on IRC, and just code if that's what you want to do. The only difference I see in on-site code and remote coding is trust. You show someone that you can code, and when they know you and trust you, you'll probably be working from home some. Don't expect that overnight. It may take some time. Or, you may just get lucky and land a coding (non-decision-maker-type) job where you can always work remote. For about the last 5 years I've worked remote a lot. The vibe is getting better and employers are learning from experience that a happy employee can be a productive one.

David

Posted by David Whitehurst on August 17, 2015 at 10:58 PM MDT #

How to become a programmer? Read a programming book and just do it. The Head First series from O'Reilly is a great place to start. Once you learn a little bit of something, test yourself to with coding test used by companies to screen people in order to evaluate skill level. So something like this: http://www.testdome.com/

Posted by Mary Wolken on December 18, 2015 at 02:09 AM MST #

Post a Comment:
  • HTML Syntax: Allowed