2. What you DO and DON’T need to be a Software Developer
Listen here:
Episode 2 on Anchor.Fm
Episode Description / Notes:
This episode is part of our series of Dispelling the Myth
There's a lot of information and advice out there on what you need to be a Software Developer, and the majority of it is completely untrue!
You don't need to be a Math's genius or some kind of higher-intellect being. ANYONE can write software, and its entirely possible to have a successful career if you're prepared to put in a little a little hard-work and study.
We'll cover some real truths about what it takes, and then we'll walk through our own list of DO's and DON'Ts.
Don't miss it!
#SoftwarePodcast #SoftwareDevelopment
As usual, if you've any further questions, then you can reach me at speakingsoftwareshow@gmail.com
Episode Script:
Welcome to this episode of SpeakingSoftware. I'm your host Philip, and together we're going take another look at the soft side of Software Development.
Today's topic is one in our series of Dispelling the Myth! We'll talking about what you DO and Don't need to be a Software Developer.
Lets get right into it!
The tech world, specifically software development, is quite an attractive Career from the outside. Its skilled work, cushy office job, reasonably good pay, easy to do freelance/contract work and maybe even working remotely if you’re lucky. You could be 17 years old and looking at it being your lifelong career or, you could be someone whose a little older and looking at it through the lens of maybe doings websites or Mobile apps freelance for some extra income, or as a change from maybe a physical labor intensive job that you’d have at the moment.
I see so many posts on Forums, Reddit, Instagram all asking for help to get into software and some of the replies are ridiculous. I’d love to take some time to clear up any misconceptions and actually given some good advice, from a position of experience, that will help anyone considering a career Programming, Developing, Coding of whatever you want to call it. We’re going to just spit some straight truths and dispell some myths first, and then we’ll drop our Do and Don’t list.
Anyone can be a Developer/Engineer. Absolutely anyone can do it. Louder for the people in the back – absolutely ANYONE can do it!
It’s a skill that you can learn. All it requires is time and patience. You don’t need to be a genius, or a school finisher or a even a good student.
A lot of developers (and I think this comes from a place of patting themselves on the back) kinda inflate the requirements. For example, there’s a lot that you need to be a maths genius, or a being of higher-intellect of some sort to work in Software. You don’t. Everybody is equally able to make it! Some people may have an easier time of it, but everyone is equally able. B) I personally barely passed my Math’s exams in secondary-school/High school. So thsts like calculus, Algebra, Combinatorics, etc... Like Barely. Like I just made the passing grade. My best results where English and Art. I struggle to mentally do arithmetic. Yet, I got a 1st Class Degree in Software and I spent my first 5 years writing software for Stock-market traders. I learned the skill, and you can too.
You don’t need a formal education
Some of the best developers in know where self-thought. They didn’t go to University, or if they did they ended up dropping out, or y’know they didn’t pursue a formal education route into Software. They just kept curious, and had an open mind. They learned from Youtube, Books, Practising, asking on Forums, going to Meetups, code bootcamps, etc...
The only barrier to entry in Software Development is taking the time to learn concepts/frameworks, etc... and then building a portfolio, working on pieces and improving your skill. There is no fiscal barrier. The best software development tools on the market today are 100% fiscally free. Costless! There is no education barrier – there’s plenty of great jobs and opportunities out there based on the merit of your work – not which school you went to.
Attitude is absolutely everything. If you can demonstrate your ability well, you’re not going to have a problem finding employment or getting contract work. Elon Musk doesn’t even care if you finished High-School!
But it helps... Not in the way you’d think though! The 2 main benefits of a Degree /University course are:
Networking Opportunities. The people teaching Software developer will be guess what – Software Developers. Who do they know in their personal and professional circles – other software developers! Getting ‘in’ with a lecturer or professor could land to a really sweet recommendation or even an easy-pass into a good job from the get-go. In other cases the name of the Institute can be the thing that gets you in the door of an interview.
Accreditation. Nothing better than a trusted 3rd party verifying you can do what you claim to do! B) When I said there was no education barrier to having a great software career – I wasn’t lieing. However, many of the more mid-senior level positions make it a hard requirement. They specifically filter out candidate who don’t have a Bachelors degree, or in some cases a Masters. These would be very senior positions though and require a lot of experience , and it’s certainly not all positions. I’ve personally seen companies wave requirements like this for strong developers though, so don’t let this discourage you.
If pursuing higher-education is something you can make happen and you’re more academically inclined – it might not be a bad idea. However, I’d certainly say it’s definitely the person, and not the paper, that makes the money happen. Which leads to out next point.
There is no one or even a correct way in. There are a myriads to tools, techniques and technologies you can learn. None are the one true way, and none are the superior way.
A lot of Developers are less “socially adjusted”, We’ll say, and are very opinionated. They deride anyone who didn’t do things the way they did – as if there way was the best. Don’t listen.
The only thing that I would caution though to find the area you like or are good at as soon as possible, and focus your efforts there. If you’re more creative, stylish, artistic – maybe Apps or general front-end (User Interface, Look and Feel, Design, etc...) might be more for you. If you just like to see how cool things work, maybe you’re better at at Backend Services, data processing, etc... You can start making video games and take things further step-by-step, or maybe you liked building complex spreadsheets in excel and you want to jump down the rabbit-hole there. Maybe you like the idea of creating apps, or even if you’re musically talented and want to know how to create software for that. There’s no one method or meaning behind entry.
So what’s a solid way to get started? Generally speaking, getting started in software boils down to picking a subject domain you’re interested in, and seeing what the most used tools and languages are there.
If you like video games – Unity/C# seems to be the big things there right now.
If the idea of Data Analysis excites you, then Python and R are solid choices.
If you like the Idea of creating Apps, then maybe learning Java for Android, or Swift for IOS is the way for you.
If you’re coming from a financial perspective, you may have started with some hardcore stuff in Excel and then found a natural progression into Visual Basic and the .Net world.
If website design or webapps are your thing then you should take a look at Html, CSS and Javascript. Depending on if you pick up a particular platform, you may find yourself working with some serverside technologies liek PHP or MySql, etc...
This list can just go on. There’s no right or wrong choice. It’s really about finding the best thing that will grab your interest and hoping your drive and curiosity get enough out of it to keep learning. The great thing is that you can’t lose. It’s not like you pick one and you’re stuck with it. Many programming languages share the exact same under-lying concepts, theories and techniques and what you learn in one can easily be applied to another with a little imagination. Personally I don't work in any of the languages or tools that I started my career in, but those first steps I took have definitely built the foundation for the rest of my career.
I said earlier that a lot of socially mal-adjusted Software Developers can be over opinionated. Lets ignore the irony in that while I give you my personal opinion. Now, this is just my opinion – don’t think it as gospel! If I was starting again I’d probably go this way... I’d recommend focusing on either Javascript or Python. They are some of the most in-demand and versatile languages today. Have a look at your favourite job-board if you don’t believe me! There used in everything from Data Science to Websites to Video Games Don’t worry about specific frameworks (React, Django, etc...) just yet. Just worry about getting good at Javascript or Python. Pick one and watch tutorials. Youtube, Pluralsight, Lynda.com, Whatever. Do practice exercises. Learn to look at problems though the lens of Javascript or Python. Sign up to technology user groups in your area. Attend talks. Ask questions on forums. And slowly build up your knowledge and body of work from there.
With those those common misconceptions out of the way, lets take a look at our Do and Don’t list.
Summary: You do need:
Patience! Rome wasn’t built in a day. You won’t learn this in a weekend Regular study and practice will be required. A driving force, Curiosity, thrill of figuring out solutions to complex problems - or even Money! We live in a capitalist society. There’s nothing wrong with having a more financial comfortable life as a goal. At least its tangible!
A Portfolio of Work! This is how you demonstrate your knowledge Critical, even with a degree! You don’t want to be “All Hat and no Cowboy”. You’ll build this up over time As you learn more things you can improve existing projects or create new ones Being able to demonstrate good use of common patterns and algorithms will get you much further than trying to be clever or trying to come up with the next Facebook.
What should be in it? Sketches and snippets Experiments, pieces of code that you rely on Common snippets Examples of Design Patterns and Algorithms Should demonstrate you know them and can employ them in the appropriate use cases – not just cookie cutter examples. Completed Projects Libraries that perform certain functions Completes Applications or Websites Instructions on how to run Supplementary Documentation / Diagrams, etc...! Show’s there was some forethought and planning! Long-term/In progress projects, etc…
Where should you put it? Public project site like Github/Bitbucket Run a Blog and write some posts about your projects Live apps hosted on a website Youtube videos showcasing functionality and code, etc... Tangible, investigable things that will make great talking points in your interviews! Lessons learned “My first time using X pattern, and it was great for this use case” “I Learned this cool trick where....” “Its more efficient to...”
The guts to start. New skills – especially ones as expansive as software- can be quite daunting. When you first looking at resources, advice, materials and not only is there so much of it, but a lot of it is pretty bad quality, or maybe not the right density. Programming requires practice.
When starting there can be a lot of issue and gotchas that require previous experience Language, Tooling, Platform, Your development environment, configuration, your device, etc...
Failure can be demoralizing - especially when the reason for it is invisible, or constant.
My advice is: POWER THROUGH The feeling of accomplishment when something works is like cocaine for the soul
You don’t need:
To be good at Maths (You do need to be good at logic though!)
A formal education or any kind of certification How you learned it is irrelevant, as long as you learned it and can demonstrate it.
To memorize a lot of stuff by rote Yes a good memory is important, especially for good patterns, etc.. These are more concepts and common use cases through. You’ll learn these through re-use However, once you learn the basics and understand how to read relevant documentation correctly, you’ll find you won’t have to memorize every single piece. You can just load it up when you need it.
To listen to anyone’s bullshit. Everyone’s journey is different, and no singular one’s is correct. As long as your learning, improving and striving to up your game, there’s no shame in going slow, or using different learning materials that work for you.
—————
And there we go! What you do and don’t need to be a software developer. I hope after this you feel a little bit more confident in pursuing a career in Software Development. Hopefully any previous bad advice you’ve read has been corrected with some positive sentiment!
The road is clear ahead of you, and I know that you absolutely have what it takes. The only thing you need to do is invest the time, feed your curiosity and you’ll get there.
Feel free to reach out to me if you have questions or queries. As well as the Social media accounts (Look for Speaking Software) you can message me on Anchor.FM or just email me directly via speakingsoftwareshow@gmail.com - I’d be delighted to help in any way that I can and try answer any questions that you might have.
Thank you for listening! Don’t forget to subscribe if you haven’t already.
A Rating, Comment or Share will go a long way towards keeping this going and allowing me to bring new content to you.
We’ve been Speaking Software. Catch you next time!