Can anyone be a programmer? What skills are required before learning to code? - Dev 001

  • 20 October 2020
  • 16 replies
  • 157 views

Userlevel 7
Code beautiful code

 

Hello lovely community members, 

 

There’s recently been a post from @Jequinlan on our Can we get access to the live usage API? topic, where they created a workaround to allow users to download their usage data from their online account.

 

First off, I think it goes without saying that a lot of community members are very grateful for the time and effort that was put into that. So in case it hasn’t been said already, thank you for your contribution @Jequinlan

 

It has reinforced in my mind that a lot of OVO  community members are talented, skillful individuals, and often will find value and enjoyment in sharing or helping others in their journey. 

 

It’s for this reason that I want to reach out to some of you, who might be similar to @Jequinlan. Software development, software engineering, programming, whatever you call it (I’d welcome someone to clarify if there’s a difference between these terms), I am reaching out to you now to ask if you’d be willing to share some info on how you got started. 

 

What made you want to be skilled in software development?

 

What skills and attributes are needed to be able to learn software development?

 

What about course providers? I learned the basics of HTML and CSS from Code Academy, but never took it further…

 

Please share whatever you can, and help others who might be trying to follow a similar journey to you…..

 

I’d hope we can post other topics on this subject in the future, if you’d find them helpful, so let us know what you’d like to get info on. Is there anything you would like to ask programmers who visit this online space? Now is your chance!


16 replies

Userlevel 7

I’m going to spam tag some of you members who have indicated being knowledgeable on this subject….

 

  @MikeWilliams @Transparent @MyZoe.Uk @uvarvu @TerryE @Chrherms @SianiAnni -

 

Have a read of this topic and consider sharing your story...

Userlevel 6
Badge +1

@Tim_OVO , back in the early 80s, I had a bunch of magazines and a zx spectrum where I learned BASIC. I also got access to occasionally use my fathers home (work provided) IBM XT. It taught me what DOS was, and as an inquisitive mind, I read books about how memory, storage and cpu all worked. Over the next 30ish years I continued this passion always with a focus on data. Be it security, processing, performance of big data, storage, databases. IT has been my life, and I cannot see it any other way. Nowadays I hardly code, and get others to, as I am principally today a data architect and data protection consultant. 

 

In fact, the app written, whilst supplied by me, was indeed written by a friend who hated all the management stuff and just likes code  this is one reason the code isn't open source *yet* as it is a discussion I am having with him. 

Nowadays, the newsagent isn't the right place to start, but even chosing the right technologies to get started is in fact a requirement in the 1st place. 

 

In summary: It used to be a lot easier than it is now despite better resources today. And whilst calling yourself a programmer is easier, being a good and employable one is a totally different level.

I started my journey in the late 1970s when as an apprentice electrician I took a day release City & Guilds course that introduced me to hand-coding in assembler entering the program into the 6502 development system via a hex keypad. - One crash or miss-typed code and it ALL had to be typed in again...

After I qualified, I got a job as a software tester for a petrol pump manufacturer. During this time, I took evening classes in C++.

I then progressed to be a software and hardware engineer for a defence company.  This introduced me to the dizzy heights of an assembler program that included an editor and compiler.  We had both 6502 and Z80 chips (not to be confused with the ZX range of computers) embedded in our bespoke systems.

By the late 80’s I became a contact software engineer using equipment such early IBM PC and Apple II in various industries. I also started using Visual Basic 3, Fortran 77.  By the late 1990’s this had changed to Visual Studio 6 aka Visual Basic 6.  Early 2000 I started using C# in Visual Studio .Net 2002.  I have predominantly used C# since then.

I am largely self-taught and have a few Microsoft Certifications.

I have been a major contributor to an Open Source program which allows the easy drawing of chemical structures in Microsoft Word since 2012. Our source code can be found at https://github.com/Chem4Word of which V3.1 is the current version and our documentation can be found on our web site at https://www.chem4word.co.uk/

Userlevel 7

Thanks for posting and sharing @Jequinlan and @MikeWilliams 

 

From just two posts, it’s already evident that there’s a plethora of entry points, languages, platforms, areas to specialise in.

 

I’m sure the landscape for a newbie in 2020 is very different now.  As a newbie myself (I won’t count my HTML and CSS knowledge as anything), and for any newbie that finds this post, can I ask you both a simple question:

 

Can anyone do it?

 

Are there attributes you need to possess to have any chance of success, that would be useful to know before even attempting to learn? @Ed_OVO you might have some time to share something on this…

 

Time, persistence, dedication, ingenuity, problem solving and logical thinking, anything I’ve missed?

 

 

Userlevel 5

Thanks for the tag @Tim_OVO, been a long time since I’ve posted here!

 

I studied full stack web development for about a year and a half starting September 2018 and ending just before lockdown, and found the whole thing to be very interesting!

 

I initially liked the idea of starting a career in a new industry that is fresh and full of exciting possibilities!

 

I learned HTML, CSS, Javascript, Python, and Django, along with a few other bits and bobs, and definitely lean towards the front-end stuff. Back-end was very intense, I felt like most of the time I just got it working out of trial-and-error. This includes the day I took off work to finish my final project, which ended up as a non-stop 20+ hour session of messing around to get it functioning correctly...

 

In all honesty, the whole experience left me questioning whether or not I’m the right person for a career in web development. You definitely need to have a certain way of thinking, a very logical mindset, and a LOT of patience!

 

A few friends of mine got into the profession, and it seems like a great industry, ever-evolving (and the paycheck is good too), and they love it! I check the internal tech vacancies here every now and again, to see if there’s anything front-end or UX related, but I haven’t pulled the trigger and applied yet. Maybe I should take the plunge and see if I would enjoy it?

Userlevel 7
Badge +2

May I please take your question in a slightly different direction, @Tim_OVO ?

Yes, I think there are lots more people who could program and yet lack the encouragement, resources and inspiration. Many of these will gain useful insights, but not progress further towards earning their salary as a programmer.

Similarly, most of us would gain from learning a musical instrument or acquiring writing skills. Society still benefits from having such people, but only a minority will become a professional musician or an author.

When the UK Government first introduced microcomputers into schools (two per school in 1982), the project cost £11m… an absolute bargain!

Progress was avidly watched from afar by India, resulting a a dozen Professors of Education being brought to this country for a year, funded by the British Council. Here they were introduced to the most amazing assortment of educational software tools, enhancing pupils’ learning across all subjects of the curriculum. They were shown how to design such software, test its outcome in the classroom in comparison with other teaching methods, and generate the accompanying manuals and worksheets.

Meanwhile, the Indian Government negotiated with Acorn Computers who were about to introduce the BBC Master as the replacement for the BBC Model-B. India purchased one of the three production lines for the Model-B and shipped it back to the Punjab.

When the Professors of Education returned to their own country, we all waited to see what software they would create. The answer was “very little”!

Instead, those Professors created a new subject area and every Indian pupil had the opportunity to learn how to program.

I doubt that the British professional educators who had trained them for a year were best pleased. But within a decade, India became the programming centre of the world.

So who was right?

Britain was more interested in education itself as an acceptable outcome.

But the Indian Government had a far greater vision. They better understood how to transform that education into an economic windfall which lasted twenty years or more.

 

We now live in the early days of another technological revolution. We might refer to it as the Internet Of Things, but it’s far wider than is suggested by that title.

As we leave the EU, the British Government is once again eyeing up investment opportunities in technological design as the gateway to ensure future economic advancement.

Look around at the job vacancies and the trend is obvious. Kaluza, Indra, PowerVault and scores of innovative startups are seeking employees with expertise in micro-controllers, apps, embedded management software etc.

 

 

Here are the opportunities for the future.

Don’t start by applying for a degree course. Instead, buy an Arduino or Raspberry-Pi and just enjoy the thrill of turning on an LED using your own 10-line program  :slight_smile:

These small-scale embedded computers provide the first-time programmer with early rewards and a more shallow learning-curve than trying to grapple with C++ on a PC.

Sadly, too few (young) people are introduced to these devices, still less have their eyes opened to the employment opportunities that are increasingly available.

Userlevel 7

Thanks for this info, @Transparent - I remember my 30 minutes a week ‘IT’ lesson in school. Hopefully things have progressed since then!

 

Look around at the job vacancies and the trend is obvious. Kaluza, Indra, PowerVault and scores of innovative startups are seeking employees with expertise in micro-controllers, apps, embedded management software etc.

 

I have seen controversial ‘retrain’ government adds relating to those employed in Covid-stricken industries retraining in cybersecurity. And beyond that, automation and AI shows no sign of slowing in the long term. How can workers in the UK get to grips with (and make an informed decision on) which aspects of the digital industry to start training in? 

 

So far there’s been no obvious starting point shared among any of us…. @NinjaGeek @MyZoe.Uk @uvarvu @TerryE @Chrherms @SianiAnni what would you recommend to someone full of intention and in need of guidance?  

Userlevel 7
Badge +1

Oh wow! What an awesome article to start @Tim_OVO 

I didn’t really look into programming until I got bored of my career being stuck as a sysadmin. But thanks to lockdown it gave me the motivation and time to sign up to any free courses and a couple of paid ones. I think if you are really motivated and have a goal of what you want to achieve with learning a programming language, you can do anything.

The only languages I know is Javascript and know the minimum of HTML to get by. But I will admit, I have a few Raspberry pi’s laying about and only use one running Pi Hole (Because you know, screw ads etc). Maybe I will do something better in the near future but this requires time which I have very little of at the moment :( 

Userlevel 1

Hey Tim, Great Idea for a thread

First off a bit about me, 
Should you wish you can find me at:

I've been writing software Professionally now for just over 6 Years, but many years before that for fun and learning.


What really got me started was like many kids these days I was none stop playing games, only instead of buying DLC I got into the habit of trying to reverse engineer the games, modify the files, manipulate memory addresses to try to add or change things.
Around Secondary school I was playing a lot of Unreal Tournament and Quake and had picked up the LUA scripting language.


Later I was big into San Andreas and Eventually started learning from the forums there the PAWN scripting Language which was largely based on C.
Amongst playing around with other tools and languages like c#.
I later ended up developing a few 'Hacks' wall hacks/aimbots etc for a number of popular first person shooters.  All for my own personal use, never for sale and never released, but for my own personal education.

 

My real life goal was to be a Pilot for the Royal Air Force and while having the aptitude and health to do so, unfortunatley being colour blind, I failed the medical, just in time for University.
So I followed my next passion in Software Engineering.

 

I Studied Comp Sci at the University of Hull, a great University for Computer Science where I picked up C# to a much better understanding under the guidance of my Lecturer Rob Miles who has written an amazing and FREE resource for C# which he uses to teach the C# Yellow Book: http://www.csharpcourse.com/


After graduating I looked for another way into the Defence Industry and that Ended up writing software for UK prime Defence Integrator where I spent 5 years working on a huge range of languages and projects that not much more can be spoken of.
It was also there I was awarded and recognised as Mentor Scout Global top 10 Mentors, for guiding new graduates through their software engineering careers.
I recently decided on a change of industry and I'm continuing to build on range of languages but specifically to build on my knowledge of software architecture.

Now I'm not so much into hacking and modifying games but just playing them, and building things like my custom smart-home dashboard http://paulhub.uk/smarthome playing around with raspberry pi's and integrating different technologies such as my original ovo PHP integration https://github.com/ThePaulAdams/OvOEnergy (not sure if this works any more since changing energy supplier). 


What made you want to be skilled in software development?
Modifying and Hacking games as-well as a curiosity for tearing things apart and rebuilding them.


What skills and attributes are needed to be able to learn software development?

While math helps, it's not essential, don't think that being bad at math means you can't be a good software engineer. I failed all secondary/college math and barely scraped by on my university module.

Being able to break things down into logical steps is far more important. as-well as the ability to clear your mind and understand that sometimes the best way to solve a problem is to take a break from it.

Number one behaviour to have would be to try solve any problem you have, but don't try forever ASK FOR HELP if you can't solve it your self in a reasonable amount of time.

You also need to be agile and constantly wanting to learn, the industry both fortunately and unfortunately changes so fast, you have to keep learning to keep up.

If you have a significant other, you also need to be able to deal with them complaining about you being sat at the computer 24/7!


What about course providers? 
Most of my training before University was all just googling how to so something in X language, and putting together what I found, doing this and having a number of projects done before and during university where key to getting a good career.
The internet is out there full of free information! 

I couldn't recommend any online 'courses' or 'providers' as I have never used them and think that a portfolio of projects is far more valuable then a certificate.
and it was my projects that I had built that got me into my careers.

 

So how do I get started?

Personally I think there are 3 different routes depending on situation and what you want to do.

If you want to do it for fun:
Think up an idea, or a problem you want to solve and just start googling, you will naturally start to pick things up if you are  really trying to solve a problem. There are so many resources out there for free! if you want to make something like my smart home dashboard, start with ‘how to build a website’, you will naturally start to learn the terminology and build up the knowledge to make what you want.

As recommended by Transparent above “Don’t start by applying for a degree course. Instead, buy an Arduino or Raspberry-Pi and just enjoy the thrill of turning on an LED using your own 10-line program  :slight_smile:


I can’t recommend that enough, just get a raspberry pi, and look for a fun project and build it there are literally THOUSANDS out there, easy to follow, and if you get stuck on the terminology, google is your friend.


If you want to change Career:
This one is probably the hardest route, and step number one would be Find a mentor in the industry, somebody to guide you. There are so many people out there who have a vast array of knowledge that are happy to share it and their guidance will really help you excel and learn quicker.

If this is your goal you also should have an Idea of what area specifically you want to start with such as

  • Mobile development
  • Web Development
  • Windows Application Development

Having an Idea of this means you a direction to go and help you dictate what languages you need to learn and provide a more direct route for learning with an online course provider, The key with these is finding one that will give you the much more structured approach you need to make it a career. You need to make sure they cover the fundamentals such as understanding Object Oriented Programming, Algorithmic thinking and systems design to name a few. And focus that learning on having a problem and solving it with your new found knowledge.

If you are still in school/college:
Both of the above apply to this but if you are still in college, it’s a great time to integrate the above 2 items, take this time to learn for fun and get a head start on university. 

Work out a direction, many Universities now offer targeted courses such as Computer Science for Web Development, Computer Science for Games Development etc. 

There is no better time to start building your portfolio and taking in as much knowledge as you can while your brain is in it’s prime for learning.  
Ultimately aim for University as the structure of learning they will deliver is fantastic for setting you up with a great career and good fundamental knowledge of Software Engineering.

And as with the career change above, now is a great time to Find a mentor. Somebody in the industry, or even a teacher, somebody who can recognise your potential and guide you to maximise it and push you in the right direction. Send them an email and just ask them.

 

With all of the above it is good to use resources like this: https://sijinjoseph.netlify.app/programmer-competency-matrix/ to regularly review your own progress and pick up on new fundamentals and work out what to learn next or where you can improve.


I could write about this stuff all day but I’d get lost in my own writing and waffling. 
If you have any more direct questions feel free to ask.

Userlevel 7

This is an increasable post, @ThePaulAdams - full of easy to understand advice and guidance for newbies to this area, or those looking to advance. 

 


What skills and attributes are needed to be able to learn software development?

While math helps, it's not essential, don't think that being bad at math means you can't be a good software engineer. I failed all secondary/college math and barely scraped by on my university module.

Being able to break things down into logical steps is far more important. as-well as the ability to clear your mind and understand that sometimes the best way to solve a problem is to take a break from it.

Number one behaviour to have would be to try solve any problem you have, but don't try forever ASK FOR HELP if you can't solve it your self in a reasonable amount of time.

You also need to be agile and constantly wanting to learn, the industry both fortunately and unfortunately changes so fast, you have to keep learning to keep up.

If you have a significant other, you also need to be able to deal with them complaining about you being sat at the computer 24/7!


What about course providers? 
Most of my training before University was all just googling how to so something in X language, and putting together what I found, doing this and having a number of projects done before and during university where key to getting a good career.
The internet is out there full of free information! 

I couldn't recommend any online 'courses' or 'providers' as I have never used them and think that a portfolio of projects is far more valuable then a certificate.
and it was my projects that I had built that got me into my careers.

 

So how do I get started?

Personally I think there are 3 different routes depending on situation and what you want to do.

If you want to do it for fun:
Think up an idea, or a problem you want to solve and just start googling, you will naturally start to pick things up if you are  really trying to solve a problem. There are so many resources out there for free! if you want to make something like my smart home dashboard, start with ‘how to build a website’, you will naturally start to learn the terminology and build up the knowledge to make what you want.

As recommended by Transparent above “Don’t start by applying for a degree course. Instead, buy an Arduino or Raspberry-Pi and just enjoy the thrill of turning on an LED using your own 10-line program  :slight_smile:


I can’t recommend that enough, just get a raspberry pi, and look for a fun project and build it there are literally THOUSANDS out there, easy to follow, and if you get stuck on the terminology, google is your friend.


If you want to change Career:
This one is probably the hardest route, and step number one would be Find a mentor in the industry, somebody to guide you. There are so many people out there who have a vast array of knowledge that are happy to share it and their guidance will really help you excel and learn quicker.

If this is your goal you also should have an Idea of what area specifically you want to start with such as

  • Mobile development
  • Web Development
  • Windows Application Development

Having an Idea of this means you a direction to go and help you dictate what languages you need to learn and provide a more direct route for learning with an online course provider, The key with these is finding one that will give you the much more structured approach you need to make it a career. You need to make sure they cover the fundamentals such as understanding Object Oriented Programming, Algorithmic thinking and systems design to name a few. And focus that learning on having a problem and solving it with your new found knowledge.

 

 

With all of the above it is good to use resources like this: https://sijinjoseph.netlify.app/programmer-competency-matrix/ to regularly review your own progress and pick up on new fundamentals and work out what to learn next or where you can improve.

 

 

These bits above I think are particularly valuable insights. @Ed_OVO would love to hear what you think about Paul’s idea of building up a portfolio of projects demonstrating knowledge and understanding. It's a different type of learning, and conflicts with the traditional school > collage > university > more university > career. 

 

That’s already becoming outdated in other fields (IMHO) and it sounds like software development is another example. Although @ThePaulAdams you did study computer science, @Ed_OVO @Transparent @MikeWilliams @NinjaGeek @Jequinlan am I right in thinking none of you studied this in further education? 

Userlevel 7
Badge +1

Yep, I finished college then worked up that way. Didn’t see the enjoyment being in a massive amount of debt :sweat_smile:  I still have friends who went to university and are not able to get into the job they studied for. 

Userlevel 6
Badge +1

@Tim_OVO I finished A levels and worked put that due to the speed of evolution,  getting a job and evolving as you go will be better than a 4 year degree. I was right, i had people working for me managing uni leavers by the time thev4 years were up and I could apply real world to the theory better than them too.

Userlevel 7
Badge +2

I too have no qualifications in electronics or programming.

I received poor careers advice and started out on a degree course that I wasn’t suited for. Didn’t complete it.

Because I was already doing electronics as a hobby, I applied to join a company building marine robots. I was accepted to work in the design team, constructing prototypes and creating the technical manuals. Used magnetic core memory and paper tape. Microcomputers weren’t yet around.

I can edit programs on punched-tape using a knitting needle and the glued paper sold to make paper chains at Christmas. It’s a rare skill, but demand has slackened off somewhat in recent years.

Userlevel 6
Badge

I’m actually more of a cybersecurity guy than a software developer. I couldn’t even code a simple game of battleships in C# at college without “borrowing” half the code off my lecturer! But I can always recycle the questions a bit. :wink:

I’m afraid I can’t go too deep into the answers for safety reasons, but I’ll try to give a quick overview.

 

What made you want to be skilled in cybersecurity?

I’ve always been into technology in general and originally planned to go into IT Support, something which I’ve spent a lot of time doing on a volunteer basis. But a lack of jobs in the area and an opportunity to switch tracks was too tempting to ignore. I’ve also got a talent for breaking absolutely everything I get my hands on, which is a good thing for finding bugs… Or at least I think it is!

I do have a proper paid job in cybersecurity, but I also do a bit of bug hunting in my spare time. I get a lot of satisfaction out of knowing that I can find security bugs and report them via proper channels for any company that has a Responsible Disclosure Policy like this one.

 

What skills and attributes are needed to be able to learn cybersecurity?

One of the great things about cybersecurity, is that it can pull in talent from pretty much any other career in IT and find a use for it somehow. Have experience in software development? Great! You’ll probably know about writing secure code too. Previously worked as a Systems/Server/Network Admin? You’ll know the common mistakes that a LOT of Admins make! Or maybe you’ve always been more into designing things? That can help too, since you could put that towards designing secure systems. Or if you’re like me and have a talent for breaking literally everything, security research and pen testing might be a good one to look at.

 

But even if you’re completely new and have never done anything like this at all, that doesn’t mean you can’t give it a try. There’s always options out there for a career change after all.

 

What about course providers?

There’s quite a lot of options out there, depending on what you’re looking for. Personally, the one I’ve had the best experience with is Immersive Labs, for which there is a free edition you can play with. Some courses can cost several thousand pounds however, so it may be worth doing your research before signing up for any particular provider.

 

Can you name one highlight so far?

Erm…  Does completely smashing up the OVO Energy app on my phone with 10 different bugs in one day count?

Jokes (and sledgehammers!) aside though, I’d probably say my most recent highlight is that if I ever come across security issues with the OVO platform, having the Responsible Disclosure Policy in place gives me the confidence of knowing that I can reach out to the security team with all the details and whatever I find can be fixed without worrying about scary warning letters coming through my letterbox the next day…

 

Why did you pick the forum signature you use?

Well, I noticed a few other members brighten my day with a few energy jokes, so I decided to energise mine with one too. And yeah… I think it kinda fits the theme...

Userlevel 7

A fantastic and informative post that will help anyone looking at this area, @Blastoise186 - thank you for sharing! 

 

I enjoyed reading the Immersive Labs homepage description. What a great community idea:

 

Welcome to Immersive Labs Community

Here you'll find a smorgasbord of carefully selected hands-on labs covering offensive and defensive security, including AppSec. Earn points and climb the global leaderboard by completing cybersecurity challenges featuring real-world tools and threats. 

The best bit? You can access all this for FREE – no contracts, no cash, no commitment. Just you, your email address and the code GIMMEFREELABS.

 

Sign up to Immersive Labs' Community to get: 

  • Red and blue labs featuring the very latest vulnerabilities and threats
  • Immersive Labs Originals: Serialised lab challenges
  • Prizes and bragging rights in community-exclusive competitions and CTFs
  • CPE credits 

 

(P.S. Don't forget to use the code GIMMEFREELABS when registering.)

 

Userlevel 6
Badge

You’re welcome. :)

I actually use a different edition myself so you won’t ever find me on the leaderboards. But IL is definitely one of the easier ones to play with if you don’t want the hassle of setting things up and want the minimum risk possible.

My biggest advice however, is please use anything you learn from it responsibly! Similar training courses go into a lot more depth, but the same rules apply. If you don’t have permission, probably best to leave it alone!

Reply