|
As an employer and programmer with 30+ years experience, I think it is worth considering the following (from my perspective):
1) On the whole, employers want a balance of people who are very productive with specific technologies (which requires time and experience) and those who have natural programming skills, that is a mix of being able to think logically, some degree of numerate competency and able to solve new problems; (you either have these skills or don't).
2) Today, the software development landscape is rapidly evolving with new technologies / approaches appearing continuously. Hence, it is wise to place for a career of on-going professional development and being willing to adapt and take on new things. This is a personality trait, that is possible for some to develop if they do not have it.
3) There are some common threads and generic aspects of best practice (e.g. software life cycle, revision control concepts, issue management, testing strategies, release engineering etc. which you will need to be a good programmer.
Taking the above together, I would suggest aiming to fine a junior role / internship where you can gain experience of 3 from a mentor and that gives you the opportunity to use current in-fashion programming technologies. Assuming you have the natural programming skills from 1, this will allow you to become productive in something employers will find valuable. Then as your move one, seek opportunities that provide opportunity for development as in point 2, or better still in the role you are in at any time, track developments and where appropriate evolve what you do to use them.
|
|
|
|
|
Not sure what it's like in the UK but in the US it's difficult to get a good developer job without a degree. Those ads that say degree or 5 years? Don't believe it, they aren't treated the same. 5 years experience means any technical degree is okay, not just a CS degree, but when it comes to interviews the ones without degrees go to the bottom. Yes, still a chance but only if the top of the pile are too expensive or fail the interview.
As someone who's been on both sides of the interview table I do agree with most of the points above. Experience counts, especially in senior positions. Junior positions it's less of a factor, so the only tangible data to go on is...degree and subjects in school. Bootcamps? Anyone who's been a programmer for some time knows you can't really learn to be a commercial developer in 12 weeks. Maybe, maybe an entry level position where the company expects to train for the job. Expect pay grade to be competitive with janitorial services.
When you get to positions that ask for 10+ years experience degrees don't count for much as long as you have one in a technical field, unless it's a Ph.D. Problem with Ph.Ds is too much focus on academics, not enough on how to build code in an economical and profitable way. Good for a research position, not so much for engineering the deliverables.
There are other aspects to development work besides coding. What makes a prospect stand out are the communications skills. Can you explain your work in a way others understand? You'll be on a team; they have to know what you are doing. Some day there will be "the next guy" working on your code, will they be able to follow your logic? Do you even comment your code? If you say "the code is self documenting" in an interview you might as well stand up and leave. Managers who have to worry about continuity and maintenance know first-hand that particular cliche is a myth. Consider some classes on writing, an articulate and well-written report or manual will demonstrate you are more than just a code monkey.
|
|
|
|
|
I have been doing development for 20+ years and I have seen people or all sorts.
The first question you really need to ask yourself before you go any further is "Do you want to be a professional student?". We are not developers we are students! I am also in the US so the atmosphere here may not be the same as in the UK (so there is the gain of salt).
I would recommend at least a two degree. This is only to get by the people who think you have to have a degree to program. To that end do you have a partner that can support your family while you do your education full time. I worked full time while I got mine and it would have a lot easier if I had not.
After you learn one language the others become easier and easier to learn. It is the fundamentals of CS and the soft skills that are important.
I hope this 2 cents helps
Buckrogerz
|
|
|
|
|
Python is in demand. I have no idea why. See if you can write a new app in Python without looking at the book. Set a task for yourself that requires logic to solve. I have 12 programming languages and use 5 of those right now. It is not easy getting into programming and luck and skill are both needed. My son got a go no where job right after a two year degree and more than doubled his salary with another company after a year. That was luck and skill.
Leadership equals wrecked ship.
If you think you are leading my look behind you. You are alone.
If you think I am leading you, You are lost.
|
|
|
|
|
My only advice is that learning the "how" of programming is relatively easy. In fact it's expected that you be able to pick up a new language, IDE, VCS, framework etc. on your own pretty quick. But in my opinion what separates the men from the boys and allows you to go further faster in a software career (if you want to stay technical and not be a manager) is a strong theoretical background. And I think the "why" can be harder to learn on your own. For this reason I don't think I would recommend boot camps to someone who already can program a bit.
|
|
|
|
|
I am sympathetic to your cause. Being in the USA we have different terms for degrees, course tracks, etc., so I may not understand the details of your situation 100%. That said, here are some thoughts:
1. You are PLENTY young enough to retrain at any level. There will be some sacrifices, but they will be short term.
2. Focus on skills that are not easily commoditized. Python is great, but it's a tool that is easily learned, and is often used to create "throwaway" code for testing, utilities, etc. It's not really the basis for value-add on major projects. A fundamental understanding of computer science concepts will last your whole career and is not easily outsourced.
3. At least in the USA, bootcamps are quickly earning bad reputations. They teach the tools, not the fundamentals (which would really be impossible in such a short timeframe). Their hiring numbers are generally recognized to be suspect.
4. Unless you have serious personal commitments (like kids), I say dump your day job, and get yourself a genuine 4-year degree in Computer Science, Engineering, or something that will last for years. Borrow, skimp, starve, to do whatever it takes to pay for it.
Good luck!
|
|
|
|
|
You mentioned that you are working in horticulture. That's flowers right?
I would suggest look at your current situation, what can you see as a 'real world' problem within what you are familiar with.
People love to collect and retrieve information, for example, if you are still writing things on paper, create a simple but small application (web page, console app, whatever) that makes collecting that information easier.
It is much easier to apply ideas to what you are familiar with, it doesn't matter if there are 10000 applications/systems that does what you want to do, just start with something that you can associate with to make your problem solving and learning easier. After all programming is not writing squiggly packets or text, it's finding a solution to a problem.
People using your application/website/system aren't interested in if it was written in .Net, Java, Python, Ruby, C++ or any of the 1000+ programming languages available today, they want something that makes their life easier.
You mentioned you are learning Python, great! I started with plain old Turbo Pascal, then C, then VB, then C#, VB.net, Ruby, Pythion.... javascript...etc.. and so on..
The point is there is no real answer to "Which way to go" or what programming language to pick, they do have their different uses, but for the most part they do the same thing. (if, else, when, for, foreach, a=b+c etc..)
You are also guaranteed that you will learn more then one way of doing things, you will learn how to collect data, save data, retrieve data and present data, all in different languages.
Look at what you think is a problem, try and make life easier using whatever language you find more rewarding.
Once you can show something to a prospective employee where you took a simple idea and turned it into a simple solution it almost carries more weight than having 10 diplomas or degrees and no work to show for it!
Happy learning and happy coding!
Over..
|
|
|
|
|
Well B4DG3R, regardless of which language you choose to learn you will need to understand its syntax and correct usage, whether it's C++, Python, or even English.
You will find yourself to be eminently more employable if your English demonstrates your competence before you have even been asked about a line of code.
Finally, before anyone flames me, I really do intend this to be a helpful comment as opposed to a snide dig; all language benefits from a thorough check before submission.
|
|
|
|
|
That's actually very well said. To be perfectly honest if I am writing on paper I am much better than with a phone! For some reason I do have a very bad habit of short typing words and not double checking before posting. Thank you I will take it under my belt.
|
|
|
|
|
B4DG3R,
As others have said.. Get an internship or a gig that will let you solve some real problems. Hopefully that will be along side of a few people who are experienced so you can get a good feel for the structure and suck up as much knowledge as you can (that is really key.. read other peoples code, pick their brains, listen, try things, fail, repeat).
Aside from that try to get good at one or two useful things.. don't worry about mastering every aspect of everything and having a bunch of different tools you are proficient at right away. Once you're good at something small or niche you can get paid for that while advancing your skills at home, school, or through other gigs. For me I started with fixing peoples WordPress sites/websties (hardly programming). The beauty of that particular niche is that very non-technical people can create a site and mess it up easily or not have the ability to make fairly simple alterations. In which case they're ready to work with someone who may only know a little more than them but is more technically apt. This didn't directly allow me to learn from other people.. that came later after it became apparent I was good enough at this stuff to look for full time employment.
Then on the side learn something a little deeper and begin looking for more knowledge or ways to obtain gigs in the new area. Starting with websites wasn't the most fun but it allowed me to get into this world, get experience, and learn practical skills. After six years of trying to pick up as much stuff as I can, listening to people, accepting entry level pay, I'm now a senior MVC C# .NET developer at my work. We're doing mobile sites, console apps, windows services, web services, web sites, and all sorts of automation. The ability to transition into that really came from my entry level web experience and learning about interacting with databases and writing code that makes decisions, decisions that solved real problems for real people, troubleshooting http requests, structuring content, etc. Hope this helps. I think this is my first post on here, good luck!
-mwwallace8
|
|
|
|
|
Okay, you sound intelligent, and you seem articulate.
That's a good start.
There are great answers above this one. Get out there. Don't wait for the degree.
In capitalism, you can usually get hired if you are willing to take a few less pounds, and have some energy, and want to improve.
But think outside the box. Scour the job sources and find what is out there. Go interview with a few of the companies that are looking for people, and see what THEY value in your area.
I will warn you one thing. You are 28. You are beginning the cognitive decline phase. You are older for getting started in a world where most 40 year olds are getting out and into management. This is a young persons sport (overall).
Everyone is different, clearly. But this is the trend. Most of the old programmers I know are stuck maintaining 40 year old legacy code (like cobol). And most of the ones over 50 are HAPPY with this!
==
My point is that KNOWING how to program can have you be a manager or a programmer, or both. Be flexible in your goals and see what else might be there.
Like everyone else has said. Problem Solving skills are KEY. Experience is more important than education (these days especially).
HTH
|
|
|
|
|
As a 60+ I say your generalization of old programs is incorrect. I don't maintain legacy code, and have not been impressed with most of the "young" programmers I meet. There is a lot of soft skills required for software development that only come with experience.
|
|
|
|
|
I to went back to School at 30 for Programming. Am have a pretty good career going. That being said, why don't you get your education over with, and look for internships or "Work Terms" during your summer months. Better yet, get into a Coop program. I can almost guarantee that the working relationships you make in either one or all of these places, will lead you to be employed. I found in my case that I was hired before I even graduated. Plus, although you might make a small wage in your first work term, if you prove valuable, there's nothing from stopping you from asking for an entry level wage the next time you work for them. It's a great way to gain experience, setup a network,learn how to code in a professional environment and lay the ground work early for a full time position upon graduation. I have never had anyone ask about my education, other than wanting to know if I had a piece of paper. What you will learn in school will give you a foundation, even if the technology may be out of date. If anything it will teach you to learn on your own. Although you appear to have a good head start on that already.
Good luck you.
|
|
|
|
|
Everybody's story is different, I was still in school for my associate's degree when I got my first coding job. I had taken a couple classes in C# and just decided one day that," Yeah, this is fun, I can do this." I interviewed for an entry-level position shortly after that and managed to get it.
I think a lot of people will agree that professional experience outweighs the importance of having degrees or certifications, so the one piece of advice that I can say is consistently correct is to keep trying to get an entry-level job no matter your level of training. You can always keep training on your own time, but just lucking out and getting that first job is the springboard that will get your career going. Not only will you start getting that magical entity of "experience" you will learn exponentially quicker what skills are and are not useful in the real-world.
I also recommend joining local developer groups and trying to pick up a mentor, whether it be at one of these or at work. Having someone on your side can save you so much time. There's some warm and fuzzy feeling to be gained by grinding out problems on your own, but sometimes good, old-fashioned wisdom will get you really far really quickly (and hopefully in the right direction).
Have fun!
|
|
|
|
|
One thing I would suggest. Is get involved. Local user groups and Code Camps are great places to meet contacts. Write software for nonprofits, or find a local small business and solve their problems free. Afterward blog about the experience. Writing code is really about learning, and the best way to learn is to do.
|
|
|
|
|
I've managed to support my family for 30 years by being a language specialist, specifically C-based languages (C, C++, C# and Java). C of course is passé, you can skip that one. Once you're employed with these skills you can easily teach yourself other technologies du jour.
I believe you need to choose one of 2 paths: primary languages OR web technologies. A language specialist is typically paid more (in large companies) but times are changing. Either choice will make you marketable.
|
|
|
|
|
I would just like to say thank you to all that have replied. There is a wealth of information here and I am great full for it all! Thanks again
|
|
|
|
|
B4DG3R:
It sounds like you are already off to a good start.
However, here are a few things to note as you progress...
I...
Never use accepted word conjugations such as "wanna", "gonna", "kinda", etc. This is terrible and improper English and will be noticed right away in anything you write for a prospective, professional position or to a person in such a position of hiring you may contact directly.
This new form of sloppy English is becoming the norm on the Internet and demonstrates a lack of concern for precision, which the software development field is constructed of.
II...
I completely agree with the commenters here that suggest you continue your studied part-time. However, if you want to remain in the technical areas, depending on the expectations of the nation you are living in, certifications or two-year university courses should be more than enough to get you into a technical position if you can demonstrate other qualifications. If technical management is your goal, than you will most likely require at minimum a university degree.
I cannot speak for technical management in Europe but in the United States it is most often a morass of arrogance, technical know-it-alls, and incompetence. From the standpoint of one who has spent 42 years in the technical trenches, your ability to survive in the profession is much better in the pure technical areas than in management.
III...
I would stay away from "Boot Camps" for learning technologies. They are often just "certificate factories" and have been recently written up as such. They do not prepare you for the real world of software development and engineering.
You are far better off becoming a self-taught developer. Because we have to wrestle with finding solutions more on our own, such experience tends to make you a superior developer in the long run. You can learn just as much from a good book and doing your own development projects than you can from an accelerated course.
I have taken quite a few courses before "Boot Camps" became popular that were similar in nature and I found most of them to be not only quite tedious but worthless compared to what I was teaching myself.
IV...
Web development these days sounds very exciting to those who have never done it professionally. However, there are a lot of downfalls to entering the profession from this avenue.
Web development today is a complete mess from the Microsoft side of things as it is predicated on what tools you use and not how well you can develop a good experience for the user. Take look at the many sites on the Internet today and you see an emphasis on feature laden sites that are nothing more than eyesores and annoyances than anything credible a serious user would be bothered with.
Whether the technical community will admit it or not, Web development on the Microsoft side reached its zenith in 2010 with the advent of an increasing maturity of the Microsoft ASP.NET WebForms platform. WebForms became a highly mature 4th generation-like development platform which was torn apart by the younger generations along with Microsoft, which promoted the MVC model that has provided in turn a much higher degree of complexity, a longer learning curve, with an increased dependence on the front-end through the use of JavaScript, which is still the worst language anyone could have selected for such work. It is complex, idiosyncratic, which has been made far worse by the multitude of frameworks that rely on it.
If you want to go into web development, even though I am a Microsoft specialist, I would advise that you take the Java Community route, which is far more stable than the current Microsoft environments.
Python has its own techniques of doing web development, which seemed to have followed the Java community style to my own understanding but it is not nearly in as much demand for such development as either C# (ASP.NET MVC) or Java itself.
V...
Considerations for employment...
Try to stay away from the major corporations. The world is in a large state of terrible trauma from the multi-nationals and the governments they are entwined in. Benefits are being decreased on a regular basis and people are increasingly being exploited.
To this end attempt to find work in the smaller companies in the development areas that you eventually choose to work in. You will find a greater camaraderie with your own generation as well as older personnel that still want to work on the leading edges if these companies are willing to hire them.
Job security today, which was once the province of the large corporations is increasingly becoming a thing of the past while individual capability is becoming more important to long-term survival.
The smaller companies will instill a sense of confidence in yourself as you manage the somewhat more technically diverse responsibilities that are not found in the larger companies.
VI...
Striking out on your own...
This is the most difficult but the most advantageous avenue to professional survival that one can contemplate.
The difficulty of doing this has been directly affected negatively by the Open Source movement where everyone today now expects all software to be free.
Well guess what? No one has ever survived on "free".
This development in the Open Source Community was an outgrowth of the Java Community, which was initially promoted by students, academics, and scientists.
The results have been the destruction of a large cottage industry where software developers and engineers could develop their own products and make livable earnings from such small, cooperative companies of developers.
Nonetheless, if you can find a product idea that has potential, consider getting a small group of your colleagues together and building such a product, though you may promote it as freely available, it can also be serviced for fees that would be acceptable to companies using your software.
Some small development companies have done very well in this vein.
If however, you want to go into independent development, the one niche where you can still make earnings on your software is the game industry. "Free" hasn't completely engulfed that area of development since the work is so difficult.
Always wanting to enter that area of development myself to create historical war games I am doing that now at my advanced age by studying the Unity3d development environment. I may not make money but I am now studying areas if technology that have always interested me.
VII
Do what you love...
Do not decide your future based on what you think the market wants but what you want. Working in a technical area that is not your cup of tea will see you tire of it and eventually leave it just out of your own frustration.
Find the area of technology that interests you and that you are prepared to devote your studies to to. You will always excel at something that interests you over something that doesn't.
If you want to work with Internet development than do what it takes to become a valuable asset to a development team. If it is game development you want to do, don't be frightened of the more difficult technologies involved. It is very difficult but if that is what you want than go for it.
Anything I have recommended so far can be mixed and matched with a good degree of common sense towards any goal you choose to attain.
If you want top extend this discussion, feel free to write me at my email address below...
Steve Naidamast
Sr. Software Engineer
Black Falcon Software, Inc.
blackfalconsoftware@outlook.com
|
|
|
|
|
I'm a developer and have been professionally for 12 years, and I've been hiring and recruiting developers for the past 8.
I think you first need to define what sort of role you'd like to end up in. If you want to work for a large company (a Google or a Microsoft) then a degree is definitely necessary. If you want to work for a small company then not so much.
Assuming you don't mind too much where you work (at first, at least) then I'd say it's far more important to be able to demonstrate your abilities. A degree is good, but I've met plenty of developers with a degree who couldn't code, and several without degrees who are experts.
If you can demonstrate your abilities through real world examples then people will generally take notice. For example, you could write some apps and release them to the stores, or contribute to some open source projects.
|
|
|
|
|
What kind of programming do you seem to like? There are lots of different areas you could focus on with their own 'popular' languages.
I've been building/programming computers since the late 70s and have actually written very few Windows programs. I'm into low level programming where I have pretty much complete control of the processor and peripherals. I use RTOSes(also written a few of my own), USB device stacks, DSP algorithms, etc. You don't have to be a Windows programmer, there are other options out there.
|
|
|
|
|
Pick a "stack", and go nuts.
My "stack" is .NET: Windows; C#; WPF; WCF; SQL Server; IIS; etc.
Then there's the "LAMP" stack: Linux; Apache; MySQL; PHP.
Or, go "mobile": Android; IOS; Xamarin; etc.
Then start going to "freelancer" sites and take stock of who wants what ... And start bidding on jobs.
You now gain experience working on little jobs and learn "business" at the same time: estimating; client relations; getting ripped off; etc.
And, before you know it (if you're good), you have a (5 star) "portfolio" and you're in business.
(Starting "another" new SCADA project for the largest company of its kind after "making myself" in just that fashion).
"(I) am amazed to see myself here rather than there ... now rather than then".
― Blaise Pascal
|
|
|
|
|
Choose one among several ways that lead to the cloud.
1. Pick a cloud provider ( Amazon and Microsoft are the two biggies )
2. Learn their infrastructure as a service and platform as a service offerings and develop small applications with them ( You can have free credits of their cloud offerings ). Keep it public on git so that it reflects on your portfolio
3. Host your own website/blog on their free offering.
4. Build your resume with their taglines and start sending to small companies who are looking for cloud talent. See how you fare, come back and learn what you are lacking. Keep Repeating step 4 until you get your first gig.
5. Once you get your first gig, do not stop learning, keep building your knowledge.
I have to tell you it is a slow and pain(ful) process till the time you get your first gig.
Best of luck
|
|
|
|
|
I suppose I'm well late with my advice but here are my thoughts.
Programming is an unusual profession because it doesn't necessarily require qualifications to gain entry. Experience counts for an awful lot. I would say pursue your studies (HNC) at night school - it is what I did - but now you must focus on gaining that entry.
I don't think a lack of experience has to work against you, it could be an advantage because you will be so much cheaper. At 28 you ought to be able to present yourself as a reliable and mature person that an employer will be able to rely upon.
Having said that, you may find that you have to attend a lot of interviews before you get anywhere. Would be employers are incredibly cagey and interview practices are notoriously subjective. At one point in my career I did something in the order of 40 interviews before I made any headway. It probably won't be that bad for you because I had a number of mitigating circumstances, but even so don't be disheartened when a would be Senior Dev pulls your wings off because you didn't 'get'his pet problem.
Agents can be tricky to work with, but a good one can really make the difference. Just be careful that they are telling the truth about you to a prospective employer.
To begin with I would suggest you may be able to pick up short term contracts at a low rate. Possibly you could discuss an extended probation period with a full time employer. Working from home might be an option. Be careful of picking up work from places like People Per Hour. Make sure you carefully scope any work. Expect to have to travel, but you might be surprised how many local firms there might be. You might also find that there are local firms that might want a bit of IT done on the side for cheap. You may also consider testing automation (Selenium, simulators) as a route into development.
In your situation I would avoid any jobs that are directly related to supporting an existing product. That will come later on anyway and there won't really be the opportunities to flex your new development muscles in the way you would like. Don't get me wrong, support can be a very challenging environment but it often doesn't get the respect or kudos it deserves. If you wind up as that support engineer there is a very real possibility that you will be passed over on the really good development opportunities.
Finally, remember: software development requires confidence in yourself and your abilities. If you lose that confidence you're toast as a developer. Never take criticism from other developers to heart - software developers never agree on anything and are always right.
|
|
|
|
|
Never too late! I'll take every piece of advice I can get at this point and thank you for taking the time. I have looked around the local area and there are a surprising amount of positions in development around! A hell of a lot more than I expected there to be. A lot of apprenticeship type position aimed at school leavers which are very low paid and quite a few junior dev positions 25 - 30k, my problem at the minute is I don't know enough for a junior dev position in my opinion and I can't afford the pay drop back to an apprenticeship! I'd be taking a pay cut to a junior position but I always expected that! I'm gonna continue with my studies for a couple of years I think and then try and get into an junior level position. I want some more knowledge behind me before I take the leap I think but I am going to keep my eyes open to see what's around.
|
|
|
|
|
Some kind soul recently gave me a CD of Norton A-V, and I have found it incredibly useful.
I recently got one of my DSLRs back from service, so I though I should check the micro-adjust settings in case they had been changed. I needed a detailed target for the centre A-F point, and I realized that the bright yellow and black CD inside the case would make a nice high contrast subject so I wedged it into one of the old scaffolding holes in the outside wall of the house. I was able to re-calibrate the micro-adjust of the appropriate lenses in no time at all.
A most satisfactory result - but wait - it goes further in Norton's incredible functionality.
I realized that with spring coming up, the pigeons would be back nesting in the walls, which attracts snakes who like the eggs. So - time to zero-in the 'scope on my air rifle. Again, the CD did sterling service as an aiming mark, though I fear for the repeatability of the exercise.
So, all you Norton nay-sayers, Norton A-V is clearly an excellent and versatile product.
|
|
|
|
|