Who can tell me where I can find work even though I do not have a bachelor's degree. I taught myself how to program.
Work for Self-Taught Programmers watch
- Thread Starter
- Community Assistant
What programming languages are you proficient in?
Do you have a portfolio of 4-5 high quality projects in each of those programming languages?
You could apply for entry level, junior developer jobs
Have you had a look on Google? in particular, have you had a look at sites like cwjobs or technojobs?
In general, look out for the kinds of jobs which would typically attract fresh graduates. Employers who advertise for graduates usually don't care whether or not you have any qualifications - most of them are looking for candidates who can demonstrate strong technical and problem-solving ability, as well as competency in at least one common high-level language.
Obviously the job descriptions themselves will set out a particular set of expectations, but you could look at those to guage roughly what kind of level you'll be expected to work at.
Ultimately, the only thing employers are looking for in a junior programmer is somebody who they can trust to get on and do the job. They understand that you won't be so productive in your first 12 months at work, that you will have a lot of learning to do, a lot of mistakes to make, and they'll hope you will be asking a lot of questions (good/useful questions). - they're also looking for somebody who understands that as well - i.e. who recognises that they will be spending a very large part of their first 12 months in work doing a lot of self-directed learning while also getting the job done.
Don't worry too much about the actual language - it's a real bonus if you are applying for a job which uses a language you know, but most employers are flexible in hiring a junior programmer who can demonstrate strong programming skills in another similar language, then that's often enough for the employer to have confidence in your ability to program.
Your challenge will be to demonstrate your technical skills to whoever is interviewing you - being self-taught isn't a bad thing, but the employer will expect you at the very least to be on a technical level which is at least on-par with a decent graduate. You'll be given some difficult technical tests, asked to demonstrate your ability to solve problems, and maybe write or debug some code during the interview, as well as answer technical questions, and demonstrate you understand programming concepts by explaining them in the interview.
Being a competent junior programmer (at a "graduate" type level), employers will expect you to be competent in many or most of the following areas, as they might expect from a degree graduate (This is not a definitive nor exhaustive list, but is probably a reasonable list for somebody who has studied a lot of programming-related modules during 3 years of university - so this list is just to give you an idea...):
- General programming in at least one language, including using the debugger and other related tools for that language.
- Firm grasp on the standard library and common idioms for that language (e.g. in Java, that may include Streams, ArrayList, Map, IComparable, etc.)
- Understand core programming constructs - data types, flow control, functions, arrays, strings, pass-by-value vs pass-by-reference, etc.
- OO Programming constructs - classes, constructors, inheritance, overriding-vs-overloading, interfaces, polymorphism, access modifiers
- File I/O and common data formats such as XML, JSON and CSV
- Concurrency, Asynchrony, Multi-threading and thread-safety
- Some familiarity with network programming, messaging or inter-process communication (e.g. TCP/IP, HTTP, SOAP, Named pipes)
- Relational Data modelling, SQL, Data normalisation
- Understand testing - particularly unit testing / automated tests, perhaps "mocking" as well.
- Demonstrate good coding habits (useful naming, consistent formatting, avoiding "bad habits" like global variables or goto)
- Understanding OO Design concepts - GoF Patterns, Abstraction, Encapsulation, inheritance-vs-composition,
- Common design/communication tools - e.g. flowcharts, UML, ERM diagrams, state-transition diagrams
- Know common data structures and algorithms - e.g. sort, search, binary trees, linked lists,
- Understand logic, boolean algebra, bitwise operations, binary/hex representation of data
- Able to read some unfamiliar code and explain what it does/how it works
- Understand memory and resource cleanup, stack-vs-heap, garbage collection
- UI and event-driven programming - e.g. form widgets, mouse/keyboard events, data binding
- Possibly any other 'related' skills such as HTML, CSS, RegEx, General IT skills and a good understanding of your favourite OS.
- Other related programming tools - particularly version control.
- At the very least be somebody who uses StackOverflow and Google a lot to help yourself learn and fix problems.
If you're a competent self-taught programmer, and you've worked on your own projects (or maybe on open source projects) you probably already have an idea about most or all of those things; just make sure that you have the depth of knowledge to be able to talk about them in an interview situation when you're having tough questions aimed at you. Realistically speaking, you could end up being asked about any of the things in that list as part of a technical interview. You may be asked to do a presentation on a project you've worked on, so make sure you've got at least one good non-trivial project which you're proud of having written, which you feel demonstrates your ability as far as possible.
Lastly, don't forget that employers want people who are going to be able to fit in with a team and a company, be willing to learn and show a lot of enthusiasm for the job, so you need to demonstrate your "soft" skills as well - having strong communication skills is extremely important in any job, but even moreso in software development because programmers aren't well known for their interpersonal skills.
- Political Ambassador
In order to secure an industry career, you'll need your proficiency accredited by any credible institute, achieving certification would boost your careers prospects.