How to getExperience() ? boolean hasExperience = experience.isEmpty();

 myExperience  = null;

It seems to me almost everyone who`ll read this post faced at least once in a lifetime the problem of having no experience. And by experience I mean particularly programming experience. The enigma of no experience is an interesting phenomenon in itself, but this post is all about practical suggestions from leading developers on how to get one. Since I have no 1 – 5 years of expected experience in software development myself it is hard for me to give you an advise on such a serious topic. That is why I choose to look from the outside and incorporate in this post advices of others.

‘Open Source is the answer’ – Alex Allain, developer, author of Jumping into C++ 

Alex

Here comes my adaptation of Alex`s advice that he once gave me. In short, the question was about software automation versus development position dilemma.

Hi Andrei, if you work through all of Jumping into C++ and complete the exercises , you will know C++ well. What you won’t really have, that can be valuable for software development jobs:

1) practice working with and modifying an existing large code base (at least 10,000+ lines of code, ideally 100,000+ lines of code to really get a feel for working on a big system) – part of this will be about learning design patterns and part of it is about learning to navigate a big code base

2) knowledge of Java/ C++ libraries/etc. and how to work with them

3) experience estimating projects

4) writing specs or design documents for really large features

5) experience working on code with other people–going through code reviews, debating design points, convincing other people that your approach is correct, learning how to document your code so that other people can understand it

6) experience working with the ‘nuts and bolts’ of a software project–setting up a particular project’s build environment, understanding how to work with and debug problems with many unfamiliar tools

7) experience using source control systems like git, mercurial, SVN, CVS, etc

8) experience dealing with problems ‘at scale’ with lots of data or in the real world – needing sophisticated algorithms, debugging memory exhaustion or performance slowdowns, dealing with end user computers, etc.

Most of these other things can be developed through working on a project – either QA automation or working on open source software. To be honest, I think that working on an open source project is likely to be a better learning experience and career builder than doing QA automation:

1) QA automation is unlikely to be as rigorous as a good open source project

2) QA automation probably won’t use Java/C++ (this is OK, but if you want to use your existing skills best, it may not be a good fit)

3) QA automation won’t allow you to show people your github commits that show exactly what you are capable of

That said, QA automation won’t prevent you from also working on a separate project, so if you have a chance to do that, I wouldn’t turn it down. It should only add to your resume.

So from Alex`s advice it is clear that contribution to Open Source Community, such as NuPIC may be a good option for some of you and me, actually. It will not only help you get missing experience it`ll also help you find new friends and meet new people. Those new connections may be very beneficial to your career in the future.

‘Speaking words of wisdom, let it be.’ – John Sonmez, developer, author of Soft Skills: The software developer’s life manual

John

Following are John`s parting words to a group of Java Enterprise Edition course graduates.

Andrei tells me that all of you are nearing the “finish line” of your Java EE course.

I congratulate you on this accomplishment.

I’m sure, for most of you, this has not been an easy task.

Any time in life that we choose to better ourselves, we can be sure that we will face resistance.

By reaching the end of this course, you have proven your ability to overcome it, but the real challenge still awaits.

It is one thing to acquire knowledge.

Knowledge can be gained in a relatively short period of time, with sustained effort.

It is another thing to acquire wisdom.

Wisdom is much more elusive. It is not guaranteed.

I know many experienced software developers who have plenty of knowledge of their craft, but lack the wisdom to apply it appropriately.

Wisdom is only achieved through careful devotion and perseverance.

Wisdom is gained through the application and understanding of principles—in life, and in software development.

Seek to not only knowledge, but understanding.

It is one thing to know how to write good code. It is another thing to understand what makes it good.

It is one thing to know the answers to the questions you will be asked in your interviews. It is another thing to understand not only why the answers are correct, but why the questions themselves are relevant.

As you are out in the real world, interviewing for jobs, don’t be so concerned with landing this job or that job—many opportunities will come and go.

Instead, be concerned with learning from each experience; using each experience to increase your understanding; to grow in wisdom.

Have confidence that it is impossible to not reach your destination if you continue on the right roads. Do not be in a hurry to arrive, in due time you will reach your destination.

Do not worry what you know now.

Do not worry about passing this interview or that one.

Do not even worry about the questions you are asked when you are in an interview.

Instead, focus, concentrate on learning, on observing.

Watch yourself as you answer the questions.

If an interview went good, ask yourself why.

If it went bad, also find out why.

Consider each interview, each question a step that moves you forward.

Do not worry about the outcome, instead worry about improving each time.

If you improve each time you interview, the eventual outcome is inevitable, so what does it matter how many tries it takes to get there.

And when you do get that first programming job, you are far from done. It is only another step.

Still seek to improve, each day, each job, every time you sit down to write some code.

I wish you all the best in your journey.

Sincerely,

John Sonmez

http://simpleprogrammer.com

return hasExperience = true;

Let`s recap and summarize the advices given.

  1. Open Source contribution is the way to go at least for someone of you.
  2. Curiosity and desire to deeply understand the subject of yours with feedback from practice.
  3. Communication with other people is the key (Dale Carnegie).
  4. May the Force be with you to keep going.

N.B.

Hire yourself for your own start-up company. It`s simple as let.

Java Code Geeks

Machine Intelligence at Numenta. Contribute and have fun.

Numenta

The Dawn

For centuries people were fascinated with the brain and tried to understand how it might work. Real scientific research has started about 100 years ago. With the emergence of Artificial Intelligence movement in the mid 50th of the previous century there was a hope that the answer to the question of how to build intelligent machines was just round the corner. Today in 2015 the hopes of forerunners of AI community still remain the same as in the beginning.

New insights and the theory

Things started to change back in 2005 when ‘On Intelligence‘ the book written by Jeff Hawkins and Sandra Blakeslee provided an outline of the theory that for the first time explained the inner workings of the neocortex with a small number of biologically inspired assumptions. In the years to come predictions that followed from Jeff`s theory of the possible neocortex algorithm proved to be sound and fruitful and reinforced the theory.

Numenta

The year the ‘On Intelligence’ was published another significant event took place and that was the founding of Numenta company. The main goal of the company was and still is to implement the proposed algorithm of neocortex inner workings in practical applications.

Numenta Platform for Intelligent Computing

Very soon Numenta has decided to open source their research implementations of the neocortex algorithm which is known as Hierarchical Temporal Memory (HTM) and Numenta Platform for Intelligent Computing (NuPIC) was born. Today, hundreds of NuPIC Open Source Community members along with Numenta development team are engaged in implementation and refinement of Cortical Learning Algorithm (CLA) that is a subset of HTM.

How to contribute

There is a number of ways in which it is possible to contribute.

  1. Get involved in NuPIC Open Sources Community and help to develop next step in biologically inspired Machine Intelligence. Maybe you`ll be the one who propose groundbreaking application of this technology in new surprising fields.
  2. Play with already existing applications, such as Grok which is used by Amazon.
  3. Have fun.

Java Code Geeks

To take a programming course or not? Maybe not to.

Have you ever thought of taking programming course to study certain subject?

I had and took one. But now I have to confess it was not a perfect move.

My experience shows that programming courses do not teach you anything you cannot learn from Internet alone with forums, manuals and free courses out there.

Having completed recently a year long course on programming only amplifies my conjecture – there is no need to take such courses except of particular courses such as Pluralsight that charge only $29 a month.

The problem with programming courses that they tend to be very expensive and do not teach real programming experience instead they haphazardly covering hundreds of various topics never diving deep inside to understand them fully.

This is not the way. The best way is to start developing any application and learn the material as you need it.

As John Sonmez suggests in his blog the most easiest and affordable way to do this these days is to build mobile application.

So do not waste your time and money, and invest them somewhere else.

Take care.

Java Code Geeks

GetCalendar: Part 1.

Hi,

Even though I am facing the coding versus blogging about it dilemma. I`ll give blogging a try to inform you about the progress of the app.

Prerequisites

1. First of all I used to work on Windows and particularly I have 7. As a consequence I have IDE that works under Windows. But modern IDEs can work across various platforms. So choose what you want most. In addition, it is possible to use virtual machine to combine a few OSs on one PC.

2. There is a need to install and set Maven in order to manage project dependencies in a simple and efficient way.

3. GetCalendar prototype is built with IntelliJ IDE. To get free Community Edition go here. This decision was made on the basis of familiarity and speed of development with IDE.

4. The project  make use of Spring framework. That is why there is a need to create new Spring project using Template in IntelliJ. Spring is a modern and lightweight framework for backend development with Java.

5. This prototype will be implemented as web-service based on REST API architectural style.

6. Since this is a prototype the main goal is speed of development, that is why it is useful to have a simulation of client application that will make requests to server side. For this purpose DHC (Dev HTTP Client ) application by Filip Kolarik will be used.

The goal so far

All this is fine and great but the preliminary goal is to make the simplest working web-application that will be able to get request for current week in Google Calendar and will display it in your favorite web browser.

OK. Until next time…

Java Code Geeks

Back up and restore. Azure hidden corners.

Hello everybody, If you wanted to back up your database in Azure and then restore it you`ll like this post. It seems all the tutorials there somehow do not cover this simple way of backing databases. Microsoft Azure is one of the places to create your website and simple enough platform to manage it. But backing up and restoring database there is not so easy and intuitive. There are a number of ways to handle database (DB) in Azure. It can be done programmatically, it can be done with the help of Azure feature of backing and restoring or it can be done manually. Today`s post is all about backing up and restoring databases in Microsoft Azure cloud platform manually. Before we can proceed there is a number of prerequisites to be fulfilled. Pay attention that below software is free except of paying for database in Azure. More details about pricing here.

  1. You`ll have to create Azure account to be able to create there web site. One detail that be aware of when creating an account you`ll need to provide credit card details even when you open free preview account.
  2. Some version of Visual Studio say VS Express 2013 for Web to code your website using your technology of choice say ASP.NET MVC 5.
  3. Than create there your website and then attach to it SQL database.
  4. Next you`ll need to install MS SQL Server 2012 Management Studio Express(SSMS) or later version to manage databases.
  5. One last thing is to Link SSMS to SQL Azure to be able to import/export SQL DB manually from and to Azure.

OK. That`s say you`ve created a website in Azure. In addition you created a website in Visual Studio targeting SQL database in Azure. To deploy your database there is a need to update connection string in Web.config file in your solution.

 

Where Source=ServerName; Initial Catalog=TargetDatabaseAtAzure. Detailed explanation on how to configure this string here. In general connection string is taken from Azure.

Working with multiple migrations in ASP.NET MVC 5. Based on Pluralsight course by Scott Allen

1.  Add migration to relevant folder

Add-Migration -ConfigurationTypeNameBooks.Web.DataContexts.IdentityMigrations.Configuration “UpdateX”

2. Update development/production database (change connection string)

update-database -ConfigurationTypeNameBooks.Web.DataContexts.IdentityMigrations.Configuration -verbose

Backup and restore Azure SQL database with MS SQL Server 2012 Management Studio Express.

Backup

1. Open SSMS.

2. Connect to local server.

3. Right click on Databases folder->Import Data-tier Application

3.1 SSMS have to be configured for connection to Azure SQL

(get connection string to Azure DB from Azure)

4. Next-> Import form Windows Azure. Etc.

To restore DB from SSMS to Azure.

1. Open SSMS.

2. Connect to Local server.

3. Right click on the DB to be imported ->Tasks-> Deploy database to SQL Azure

4. Connect to Azure server.

5. Deploy SQL database.

It is good to know that today`s Azure has a new feature of DB backup and restore built-in.

Java Code Geeks

Choose your track to SW development

Hi everyone!

Have you ever thought of what are various resources for learning programming?

If your answer is yes than this post may help you find resources that most fit you. They may help you get an experience for career or hobby in programming.

As a person who is in the middle of getting programming experience I looked for and found a number of most useful resources for my opinion.

It is possible to differentiate those resources according to price, depth of material and its level etc.

At first I want to describe them in a general way and then I`ll provide a table that will summarize those descriptions.

One of the important criteria that is taken into consideration is certainly a price of learning. There are a number of possibilities to learn courses on programming for free.

1. Udacity is one the interesting sources for learning programming. All of the courses there are for free. All of them are taught by people form academia. Courses rated according to learner previous experience such as beginner, intermediate and advance. Most of them use a web enabled Python language as a basic mean of implementing programming exercises.

One of the key features of Udacity courses is that they are highly interactive with lots of quizzes and every course has a number of programming assignments for each lesson.

In addition to free courses Udacity now provides an opportunity to learn a number of them for a fee with dedicated coach that may help to achieve better results and this path has formal certificate that is given after successful project completion.

Brief summary for Udacity:

  • free and not so,
  • certification courses for a fee,
  • detailed academic level courses,
  • highly interactive,
  • transcription for various languages,

2. Next one is Khan Academy. This resource has courses both on computer programming and computer sciences for free. Those courses consists of video material with no assignments or quizzes but with interactive web enabled Python programs for hands on experience. It is unknown to me if they are taught by people with academic background.

Brief summary for Khan Academy:

  • free video materials,
  • no assignments,
  • interactive web enabled Python working programs,
  • transcription for various languages

3. Coursera  is in some way as Udacity but different. Most of the courses there are free but there is a possibility to get a certificate of completion for fee. It has for my opinion the highest academic level out of resources described earlier. It have learning tracks with built-in courses according to syllabus. It has quizzes and assignments. But less interactive than Udacity courses are. Courses are taught in various languages.

Brief summary for Coursera:

  • free courses and not so,
  • certification courses for a fee,
  • highest academic level courses,
  • courses are taught in various languages

4. Udemy also has free courses and ones for a fee. Some of them taught by academics and some not. Courses for a fee consist of video material for a lifetime usage. It also has a certification track for a fee.

Brief summary for Coursera:

  • free courses and not so,
  • certification courses for a fee,
  • lifetime usage of material for a fee course

5. Pluralsight is not free at all but has a wealth of programming courses that taught by developers. It has monthly or annual subscription. There are two types of fees. “Basic” and “advanced” one. For the basic you`ll get video materials for the period of subscription and for the advanced one you`ll be able to get code snippets, presentation and certificate. It is possible to view videos also on mobile. There are no assignments or quizzes whatsoever.

Brief summary for Pluralsight:

  • courses for a fee taught by developers,
  • monthly or annual subscription,
  • certification for “advanced” fee,
  • no assignments or quizzes

So for the summary of this all here comes a table

Resource Basic content for free (Yes/ No) Advanced content for a fee (Yes/ No) Taught by (academia/ developers/ other Interactive(Yes/ No) Localization(Transcription/ Language support)
  1. Udacity
Yes Yes, coach, certification Academia Yes, highly English, Transcription for a number of languages
  1. Khan Academy
Yes No Other Partially Transcription for various languages
  1. Coursera
Yes Yes, certification Academia Partially Taught in various languages
  1. Udemy
Yes Yes, certification Other No English
  1. Pluralsight
No Yes, certification Developers No English

That`s it for today.

See you.

Java Code Geeks

Open Contribution

Welcome back.

In  this post I want to share with you ideas of making a contribution.

By contribution I mean making a change that will help others and by the way may help you.

Has it happened to you to spot some obvious or not spelling, content issue in your favorite book, e-book, blog etc?

Just like this one The C++ Programming Language. Or maybe you felt the urge to mail an author of the book asking for advise? If so know that this more than possible and interesting thing to do.

I`ve found out that authors for most part are kind persons that are willing to answer your mail and even help you.

It turns out the best way to make a contribution is to propose an author a help in ‘bug reporting’ or ‘debugging’ if you will especially when this help is for free from your side.

OK. You`ve got that book you want to contribute to. Here are the steps that may help you to get to know the author, to make your contribution and even to find a friend.

1. Write the author and ask if there is any need for help. By the way it is better to deal with private authors I`ve found they are happy to get any help. But if you got courage and want to deal with publisher you can make use of errata pages just like this one Errata

2. If you got green light don’t hesitate and use this table that in a QA way will help you to distill what you want to suggest in a logical way.

Page or Link to source of issue Actual content/ code etc. Expected/ proposed content, code etc. Comments
For axample For example Spelling
. And
. So on

Accumulate this data at your favorite source such as Dropbox, Google Drive, One Note etc. and give it to the author for the review.

That`s it. It`s simple as that. And as one person said there is a need to be consistent and to get with this activity to the finish line or end of the book.

By the way if you want to make you own e-book for free and edit your own materials than use this free service that you may find useful Ourboox.

Till next time.