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++
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
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.
return hasExperience = true;
Let`s recap and summarize the advices given.
- Open Source contribution is the way to go at least for someone of you.
- Curiosity and desire to deeply understand the subject of yours with feedback from practice.
- Communication with other people is the key (Dale Carnegie).
- May the Force be with you to keep going.
Hire yourself for your own start-up company. It`s simple as let.