The Mentor
Jacksonville, FL
Male, 31
I have been in the IT industry for 8 years. I started as a Desktop Specialist and worked my way into a developer role. I have worked in both small start-ups and larger enterprise companies. I have primarily focused my career on the Microsoft stack including C# and SQL. I have experience working the full stack from the back-end data access to the front-end user presentation on websites using HTML and Javascript.
Great question, I too have children which I would love to get into programming. My oldest is 11 and I have been working with him off and on. I am finding no matter how much he wants to learn and I want him to learn sometimes their young minds still have a hard time grasping the concepts. With that said stay patient as this will take work on your part and theirs and it may not always be fun. I have a few great resources I can provide you with.
Developer Mind Test, this link explains how everyone is not cutout to program despite popuar belief. This link is not to discourage but the simple test described on this site was very interesting and may be a good basic test to see if they have the mindset. If they don't perhaps providing instruction to them will help put them in the right mental state for it. Good read regardless.
http://blog.codinghorror.com/separating-programming-sheep-from-non-programming-goats/
Code Avengers, this site is amazing. The first chapter of the lessons are free so you can give it a swing and see they are interested and if they are I believe buying all the courses only cost $90 which is a great deal for how awesome this site is. It will help teach HTML and Javascript for normal webpages and they even have a section for creating games in javascript. You can also sign up for a parent account so you can keep track of their progress, especially good if you have multiple kids who want to learn. I had issues and felt like I had to game the system to get the parent account setup and linked so if you are struggling with it forget the parent account and just set an account up for them as this site is my #1 recommendation for ANYONE looking to get started.
http://www.codeavengers.com/
This is great for learning patterns/usages in javascript and I still reference it frequently. Javascript is amazing and one of the languages I would recommend:
http://addyosmani.com/resources/essentialjsdesignpatterns/book/#designpatternsjavascript
There is a "language" that uses building blocks to develop with. You basically take these blocks and plug them together to make a little cartoon object move around the screen. The beauty of it is that there is very little typing which removes the child from having to know how to type in order to get started. This is most helpful in getting the child familiar with variables and logical blocks. Be prepared to do a lot of googling just to get something started with this one though. It looks simple but sometimes it proves to be a pain.
http://scratch.mit.edu/
There is something a little closer to real programming for kids made by Microsoft as well which is pretty neat. http://smallbasic.com/
I would definitely start with CodeAvengers though as they are very detailed in their instructions and you do everything right there on their website.
Another language which is picking up and pretty powerful, less error prone, and quicker to develop in is F#, the articles may be a little over thier head but you can try it out in the browser as well. Here is the learning portion of the site http://www.tryfsharp.org/Learn/getting-started and here is a good resource for it http://fsharp.org/.
If you get stuck I find www.stackoverflow.com a great resource for getting answers on developing.
Not quite for learning but there is a fun little site they can tinker with once they understand javascript a little better. http://fightcodegame.com/
Not sure if the material would be to advanced for a child to watch but you could also try out www.pluralsight.com which has videos and content which will help learn nearly anything in IT.
Some other resources:
http://www.apartmenttherapy.com/20-resources-for-teaching-kids-how-to-program-code-200374
http://teachingkidsprogramming.org/blog/c-recipes/
http://www.freetech4teachers.com/2014/07/ten-resources-for-helping-students.html
Hope this helps :)
I can only speak from my location and my experiences. I currently do not know any out of work developers in my city. I am sure there are some out there but depending on your technology and skill set you can find jobs really easy. Finding a good developer is really hard, I have hired a few myself and it has taken over 30 resumes / interviews to find ones I felt were capable. I hear from other companies that I get hired by that they have the same experience.
My advise would be, pick an area and master it as much as possible, make sure you understand the language and can speak to it. Get some good projects under your belt, and like any interview, confidence is KEY.
I myself find it pretty easy to get a job, generally I get the first job I interview for without any issues. I find I usually have to be the one to turn down jobs because I am looking for a particular technology stack I want to work. This changes with each job as I have skills I want to learn or refine. Currently I am working with and understanding how to manage "Big Data" (Millions and millions of rows of data) so I picked a job that is still C# oriented but also has a strong SQL requirement.
If you know your stuff, you will pick your jobs, if you don't there is still plenty to go around to grab the low hanging fruit. Income potential is great and you can make great gains moving between jobs, I have received between $5k and $20k a year raises by applying knowledge learned at the current job and speaking to my experience gained applying for the next job. Though, once you reach the higher end of the pay scale, like any career, jobs start getting harder to find as one rarely wants to take a pay cut. That is when considering benefits and other perks come into play, I personaly have taken a few paycuts to gain valuable experience which would/has landed me even higher pay once I left. I personally don't want to take a huge paycut but I value a position with a specific technology I want to work with over a higher paying job.
This is from my own personal experience. I never recieved calls from recuiters while working in a normal IT position. The moment I put the keyword "C#" on my resume the calls do not stop coming in. I get at least 3 emails a day and 4 calls a week and I am not even on the market. With that said, using the Microsoft stack has been the path I have chosen. I feel it is rather safe as it has been around for a "long time" and Microsoft's languages always seem to have high pay. I would go with C# over VB.net, its a personal preference but I honestly find more jobs for C# and if you can read/write C# you can "understand" a few other languages. With C# you can do anything, web applications, cross console gaming (Unity,etc), cross mobile development (Xamarin), winforms, and backend services. So I would say C# is a strong language and has a long shelf life a head of it due to all the flexibility that has been built around it. This would just be a base language though, you will more than likely need to pick up some side scripting/languages such as Javascript (front end) and/or SQL for data access.
There seems to be a newer stack that companies are tinkering with using Node.js, and combining it with Angular.js. These seem like great avenues to venture down but the job opportunities will not be as ubundant at this moment in time.
As a direct answer, I say C# is a strong answer. Java seems to be another strong answer though I have not worked with it much it is close to the c# syntax and it makes it a little easier to work with if you know C#.
I would also check out F#, I have not had time to actually learn the language but it seems to be gaining traction due to how quickly someone can learn it, write it, and make the code less error prone.
It is true there are plenty of tools out there to help you view the source code to various types of applications but there are also way to obfuscate them as well. Javascript for example is sent to the users browser and the source code is technically easily available, but if the developer used a minimizer for the production build you would have a really difficult time understanding what is happening as it replaces understandable variable, function, etc. names with single or a small group of letters to save file size to so it is faster to download. This also makes it extremely hard to work with which is why we only do it for production. Here is an example of a very popular library jquery ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js There are tools for Visual Studio and I am sure other language/IDE's that come with it as an optional install that will basically make it hard for someone to understand even if they did decompile the code.
There are a few good decompilers out there for .Net code which come in handy when developing against a 3rd party library, it really helps to be able to look into the code you are trying to use so you understand how it was implemented. There are also programs out there to actively debug an application even if you don't have the source code which are usually used for cracking software but can also be used to understand how an application works.
With all that said, I am not sure why you would want to copy a piece of software. There are many open source websites that have the code readily available for the picking and modification and there are all kinds of applications out there for free. Personally I would rather spend my time writing an application that I have created and understand exactly what is going on inside the code than trying to pick through someone elses mess which has been cluttered even more by some obfuscator.
Not sure if you are a developer but I will assure you, sometimes it is down right painful going through someone elses code. There are a lot of people who can code but there are a few that can code right. There are a set of priciples and conventions that should be followed, even though they are documented in many places it seems there are few who actually read and try to follow them. In development there are 100 ways to skin a cat and they aren't all pretty.
I hope this answered your question.
Day Trader
What's the difference between a trader and a hedge fun guy?Professional Gamer
Is the stereotype of gamers as overweight dudes living in parents' basements accurate?Tattoo Artist
Is it illegal to tattoo a client if he's drunk?
Good question, I myself have thought about trying these sort of programs out but everything I read on them was pretty negative. Unless you have a brain that immediately absorbs information that is then reusable any point in the future I would discourage this approach.
Having experience in various areas of the IT field I can honestly say I do not believe the average person would be able to retain much out of the bootcamp. There is so much to learn in any area of IT and with it constantly changing I would say just good "old fashion" online research is your best bet. There is just too much to learn on any given topic especially in development. I am sure they teach you some valuable information while you are there but there is no way they can teach you enough to make it worth it. I would recommend taking that $12,000 and getting a yearly account on pluralsight.com for $500 (unlimited video courses with material), an account on safaribooks.com for $50/mo (unlimited technical books) and thinking of a small application you would like to create and then jump in and do it. Some ideas are a tic tac toe game or a todo app, though if you search for tutorials online they usually have some good apps already thought up and explain how to create them.
If you have something more specific in the lines of what you want to learn I may be able to point you in the right direction. www.stackoverflow.com is a great place to get answers as well if you do dive in.
Good coding practices are what impress me the most. Good use of naming conventions, design patterns , OOP priciples, and the various other principles like SOLID and DRY are what catch my eye.
Aside from coding style, functionality wise my latest 'wow' moment was when I started at my current job. They have created a nice set of reusable controls to help keep everything looking consistent, their site structure is completely metadata driven and configurable.
I am also a big fan of code that dynamically does something. It takes a different mind set when you have to step outside your direct thoughts and think about something at an abstract level. An example of this would be writing a code generator that you pass it a database and it dynamically generates code, or building a modular email system that allows the marketing team to configure how an email will look by changing values in the database.
I take pride in my work and it is not uncommon for me to look back in aww of my own work. Currently I am working on our inhouse table control and I was tasked with implementing the paging functionality. The control itself was 2700 lines of javascript and was a complete mess. I went in and cleaned it up as much as I could without rewritting it, better organized it, broke huge functions up into smaller functions, made it obvious when and where to make modifications for functionality, added backwards compatiility plus server side code to make it really easy to implement. Looking back at where it was and where I have taken it makes me feel a bit of 'wow' inside to be honest, especially since I have only recently really started working with javascript to this extent but utilizing good practices I have picked up from .net it helped me make sure the next person to jump into the code will appreciate what I have done as well.
I was initially introduced to programming when I was 15 years old. I wanted to create applications for AOL 3.0 so I picked up a copy of Visual Studio 6 and spent a lot of time in the developer chat rooms trying to learn, I was able to create a few different applications. Later on I met someone who had created a personal site and I thought that was cool so I picked up a book on HTML and created one of my own. Around this time I had already decided I liked writing code, the ability to create something useful and specific to my need attracted me.
I had wanted to work as a developer since I was younger but due to lack of school and experience I was unable to really even apply for any of the developer jobs. So I have done some form of scripting or programming for most of the jobs I have held. Writing batch files, deployment scripts, data input websites, excel spreadsheets with formulas and macros, etc. During the last support job I had made it very known I had an interest in writing code by doing it whenever I could find an opportunity. If a department needed something I could code for them I did it, if a deployment had a special requirement that would require us to touch every computer I would write an application to automate it. The company did not have a development department so any chances of me getting a developer position with them was non-existent. Luckily one of their database administrators that they let go wrote a bunch of applications using Access and they wanted to have someone convert all the applications into web applications. I volunteered happily and took that on as a side project. I worked on the sites for a year and a half then took the experience I gained and applied for my first junior developer interview and landed it.
I regret not getting into the career path sooner though I learned a lot about computers and servers in my support roles that tends to help with my career since that is what I deal with a lot. I would say the things that really appeal to me about developing is the ability to automate processes, create software that can work how I want it to work, the challenges of figuring out complex problems, and to see something I created come to life.
I really enjoy writing code, I just wish there were more hours in a day so I could learn and write even more!
-OR-
Login with Facebook(max 20 characters - letters, numbers, and underscores only. Note that your username is private, and you have the option to choose an alias when asking questions or hosting a Q&A.)
(A valid e-mail address is required. Your e-mail will not be shared with anyone.)
(min 5 characters)
By checking this box, you acknowledge that you have read and agree to Jobstr.com’s Terms and Privacy Policy.
-OR-
Register with Facebook(Don't worry: you'll be able to choose an alias when asking questions or hosting a Q&A.)