ClioSport.net

Register a free account today to become a member!
Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Programming Careers



Archtronics

ClioSport Club Member
  Clio 182
Figured there must be a few of you on here that can offer some pointers.

I’ve got a fair bit of spare time on my hands at the moment so I’m going to have a crack at teaching myself Python as a back up/future career option.
I already have experience writing scripts for 3ds Max in Python so I’ve signed myself up for a data science & machine learning Python course.
So far I’ve found it relatively easy going.

My question is once I’m up to a reasonable standard how do I go about demonstrating that to employers?
Is there such a thing as a coding portfolio?
 

djp66

ClioSport Club Member
Something else you could consider is looking at the self education offers from the big cloud providers. I work exclusively with Microsoft Azure so most familiar with that. If I was recruiting, I would want to know that not only has the candidate the skills in Python but also an appreciation of how that could be used within their platform of choice.

Have a look at --> https://docs.microsoft.com/en-us/learn/roles/data-scientist

It's free and some of the labs can be done on a provided sandbox environment. I'm sure google, AWS will have equivalents
 

charltjr

ClioSport Club Member
I'd say any programming job you're likely to get given a coding task of some sort during the interview process, it's more about hopefully proving you have the skills. You won't have direct commercial experience so no point in faking it.

What course are you using out of interest? I could do with brushing up on Python or R for a job I'm hoping to go for.
 

jenic

ClioSport Club Member
  981 Cayman
Open a github account and start lots of small projects. This becomes your portfolio.

Do you know what sector you want to enter? Try and tailor what languages you learn and what projects you take on to be relevant to that. Ask in here if you know the sector and want advice on what to learn.

I don't know how old you are, or what sort of salary you want, but where I work we recruit pretty much all the junior staff via university. Mostly placement students we liked, but also graduates. A graduate is fairly low pay, but usually really productive, and they will promote fairly fast. If you were below graduate level (which you will be after online courses) then expect to start in the £20k area I'd say, and I'd fear promotion could be slower without a relevant degree.

What job do you do now btw? Are you ready to spend a lot of your life (if the job was office based) with programmers 😂

I think getting your first job, as a non-graduate, will be difficult. But once you have a few years experience you'll be just as desirable as a grad. When I CV review for an experienced hire I don't really look at education.
 

Archtronics

ClioSport Club Member
  Clio 182
I'd say any programming job you're likely to get given a coding task of some sort during the interview process, it's more about hopefully proving you have the skills. You won't have direct commercial experience so no point in faking it.

What course are you using out of interest? I could do with brushing up on Python or R for a job I'm hoping to go for.

One of the ones on codeacademy pro version.

Not sure I'd pay for it only went with them because it was free for anyone recently made redundant.
 

Archtronics

ClioSport Club Member
  Clio 182
Open a github account and start lots of small projects. This becomes your portfolio.

Do you know what sector you want to enter? Try and tailor what languages you learn and what projects you take on to be relevant to that. Ask in here if you know the sector and want advice on what to learn.

I don't know how old you are, or what sort of salary you want, but where I work we recruit pretty much all the junior staff via university. Mostly placement students we liked, but also graduates. A graduate is fairly low pay, but usually really productive, and they will promote fairly fast. If you were below graduate level (which you will be after online courses) then expect to start in the £20k area I'd say, and I'd fear promotion could be slower without a relevant degree.

What job do you do now btw? Are you ready to spend a lot of your life (if the job was office based) with programmers 😂

I think getting your first job, as a non-graduate, will be difficult. But once you have a few years experience you'll be just as desirable as a grad. When I CV review for an experienced hire I don't really look at education.

Cheers this post is very helpful!

I'm a Measurement/Land surveyor, So thinking I would try enter the sector in a GIS type role as I should have a fair few transferable skills and move on from there.
In case you've not heard of GIS before.
"GIS Analysts are responsible for discovering patterns and trends through spatial mapping, developing mapping applications and tools and managing a digital library of geographic maps in various file types, among other duties."

So I guess any suggestions for stuff to do projects on the above would be good, I have a few small ideas already.


Got made redundant but I was spending a lot of time working away outside, staying in hotels, so having a regular office job would be a dream. 😂
 

jenic

ClioSport Club Member
  981 Cayman
Cheers this post is very helpful!

I'm a Measurement/Land surveyor, So thinking I would try enter the sector in a GIS type role as I should have a fair few transferable skills and move on from there.
In case you've not heard of GIS before.
"GIS Analysts are responsible for discovering patterns and trends through spatial mapping, developing mapping applications and tools and managing a digital library of geographic maps in various file types, among other duties."

So I guess any suggestions for stuff to do projects on the above would be good, I have a few small ideas already.


Got made redundant but I was spending a lot of time working away outside, staying in hotels, so having a regular office job would be a dream. 😂
Not really my sector, I'm in embedded automotive, but I know people at uni that did mapping type projects.

Maybe start looking into Computer Vision theory (funnily enough this was my worst module at university grades wise 😆 ), I reckon C++ and definitley Matlab will be good skills to have in that sector.
 

charltjr

ClioSport Club Member
Matlab? Don‘t say that to me, I still get cold sweats from the memory of trying to get the effing thing to model the pumping of a heart back at uni. Maybe it’s improved since then, it was 28 years ago. Sob.
 

sn00p

ClioSport Club Member
  A blue one.
Create your own (or contribute to) open source projects. Contributing to projects is a little more effort because you have to ensure that any code you produce fits the code style of the project, start seeing pull requests where somebody hasn't done this and your code is unlikely to get merged in.

Create a GitHub account (other online git services are available) and start keeping projects there, add it to your CV.

These are my personal and business ones.


What interests you? There's a wide spectrum of languages and what you want to do will determine which languages are most appropriate.

For example, I use python quite a bit, buy generally only for automating things. Python has a rich set of libraries which make knocking up utilities very quick, you can do GUI stuff in it as there are bindings to toolkits like Qt, TK/TCL, wxWidgets and so on.

If you wanting to do web type stuff, then maybe take a look at Node.js. It's a javascript runtime based on the chromium V8 javascript engine, again it has a rich set of libraries to do pretty much anything you could want, plus, it has a range of front to backend capabilities, use a framework like Electron and you can write fully fledged desktop applications in it - there are a lot of apps out there written in electron, things like VSCode, Balena Etcher, BitWarden etc....

I'm currently working on a small custom CI engine to allow me to easily build my projects autonomously as I have a set of very specific needs and can't find anything off the shelf to do it, this uses nodejs for the server and agent, and it uses react for the frontend.

Desktop class apps, there's many choices, all have their own advantages and disadvantages. I've written apps in C++ using Qt for 10+ years, before that it was in plain 'C' under windows. Qt is a cross platform toolkit and a very good one, you can build your application for macOS, Windows and Linux from a single code base, you just compile on the target architecture. There's also wxWidgets, GTK, MFC, Imgui and so on that are all alternatives.

Embedded software, there's basically 2 main branches, one where you use constrained devices and write at a low level (normally 'C" or 'C++', but sometimes in assembler) and you have low amounts of ram (I actively use processors ranging from 512 bytes of RAM to about 300K of RAM) - then you have SBC type devices where you normally have linux (Raspberry pi).
 

Archtronics

ClioSport Club Member
  Clio 182
Create your own (or contribute to) open source projects. Contributing to projects is a little more effort because you have to ensure that any code you produce fits the code style of the project, start seeing pull requests where somebody hasn't done this and your code is unlikely to get merged in.

Create a GitHub account (other online git services are available) and start keeping projects there, add it to your CV.

These are my personal and business ones.


What interests you? There's a wide spectrum of languages and what you want to do will determine which languages are most appropriate.

For example, I use python quite a bit, buy generally only for automating things. Python has a rich set of libraries which make knocking up utilities very quick, you can do GUI stuff in it as there are bindings to toolkits like Qt, TK/TCL, wxWidgets and so on.

If you wanting to do web type stuff, then maybe take a look at Node.js. It's a javascript runtime based on the chromium V8 javascript engine, again it has a rich set of libraries to do pretty much anything you could want, plus, it has a range of front to backend capabilities, use a framework like Electron and you can write fully fledged desktop applications in it - there are a lot of apps out there written in electron, things like VSCode, Balena Etcher, BitWarden etc....

I'm currently working on a small custom CI engine to allow me to easily build my projects autonomously as I have a set of very specific needs and can't find anything off the shelf to do it, this uses nodejs for the server and agent, and it uses react for the frontend.

Desktop class apps, there's many choices, all have their own advantages and disadvantages. I've written apps in C++ using Qt for 10+ years, before that it was in plain 'C' under windows. Qt is a cross platform toolkit and a very good one, you can build your application for macOS, Windows and Linux from a single code base, you just compile on the target architecture. There's also wxWidgets, GTK, MFC, Imgui and so on that are all alternatives.

Embedded software, there's basically 2 main branches, one where you use constrained devices and write at a low level (normally 'C" or 'C++', but sometimes in assembler) and you have low amounts of ram (I actively use processors ranging from 512 bytes of RAM to about 300K of RAM) - then you have SBC type devices where you normally have linux (Raspberry pi).

Thanks for the post lots of useful information!

I went with python because it's used in a lot of the cad programs I use, so seemed like a reasonable starting point.
Hopefully coding is a lot like other things once you know one it's much easier to pick up another.
Javascript react seems to be sort after for the jobs I would like to go into, so that will be my next port of call once I've got python down.

Collaborating on open source stuff sounds like a really good idea, especially to demonstrate you can work better in a team environment.
 

sn00p

ClioSport Club Member
  A blue one.
Thanks for the post lots of useful information!

I went with python because it's used in a lot of the cad programs I use, so seemed like a reasonable starting point.
Hopefully coding is a lot like other things once you know one it's much easier to pick up another.
Javascript react seems to be sort after for the jobs I would like to go into, so that will be my next port of call once I've got python down.

Collaborating on open source stuff sounds like a really good idea, especially to demonstrate you can work better in a team environment.

Programming is like a rabbit hole, but writing something to solve a problem is very satisfying.

I'm currently on another slight tangent, deployment is a big thing in software development, it's one thing making something run on your development machine, but making it run on somebody else's machine can actually be hard work. I've written a deployment python script which I'm currently making more generic so that anybody can use it. The deployment script produces macOS, Windows and Linux deployable images depending on the platform you run it on and it mops ups everything so that it's simple to do.

DMG files on macOS are pretty much how software is distributed, but creating them is a bit of a pain, there's a python module called dmgbuild which handles it, but you have to supply a config file which requires trial and error. So I'm just finishing up a small tool which embeds python into an app along with opencv and a bunch of other bits and pieces to allow you to graphically design the image and output a config file which can then be passed back into the same application which then runs as a terminal app and produces a DMG from the config.

opencv is a great tool for playing with, on this image you can see the green dots which with a few analysis stages in opencv detects the centre of gravity of "things" inside the image, this allows me to add things like snap an icon to that position, making the design process much easier.

As far as tools go, check out Jetbrains stuff. I love their apps, CLion, WebStorm, PyCharm and DataGrip are ones I use. For 19 quid (or dollars) a month as an individual you can get every tool of theirs, there's a load of java and .net tools as well.

Python is very good because of the libraries, if I need to scrape some data from the web it's my goto language because the support for doing stuff like that is so good, it also uses spaces as block delimiters, which forces you to write well formatted and structured code.

As a start, try to figure out something that would be useful for yourself and try to write that. Don't go in at the deep end and overwhelm yourself.


1604008252468.png
 

Archtronics

ClioSport Club Member
  Clio 182
Update.

Finished the course which culminated in making a chat bot, definitely feel more confident and things are starting to click but if you asked me to sit down and write something other than pong I'd struggle. 😂

I've now moved onto learning some more front end stuff so I can do more than just text editor type stuff.
I'm aiming to have a reasonable understanding of HTML, CSS, JavaScript and Django by the time Christmas rolls around at which point I have an Idea of a web app I want to create that should hopefully tie everything together.

Cheers for reading.
 

sn00p

ClioSport Club Member
  A blue one.
Did you know that Steve Jobs and Steve Wozniak worked for atari pre-founding Apple and designed Breakout.

The state of my application now, I chucked away my experiment with ImGui and re-wrote it.

1606736834246.png
 

KitsonRis

ClioSport Club Member
Not sure if late to the party on this but I did something similar last year - I was technically a "Data Scientist" according to my job title but the closest I came to data science was the phrase in my e-mail signature. I was basically writting web apps and front end dev work. I wanted to either this be recognised by my current employer and I was also starting to look elsewhere.
I have a phyicss degree and have done all my coding by trial and error and getting stuck in on real problems - the down side is I don't know the technical terms for things even though I have done it. In my first job I was doing science work so coding wasn't a major part of my day to day life but I had an awareness of it and when I did it it was "does it work? Yes then that will do".
When I was looking for new jobs last year I set about writing a web app to show off what I had been doing the last few years as I couldn't share what I had done at work. I wrote a fuel consumption tracker for my cars with a Java/Spring Boot back end and Mongo database with a TypeScript front end. It's hosted on GitHub (private for the time being) but I have no interest in releasing it, but can provide links to those who wanted a look.
In short my old employer refused to change me to a software dev and I left (actually turned out a really good decision) and now I am a full time software dev and not someone lumped in with doing stuff that has no resemblance to what I signed up for.

What I found useful was to have an end goal when I wanted to show off my skills. There are many things you can do but these are simple and very text book. Having a project was really good and helped to focus what needed to be done. Even if it is pretty useless and only I ever use it but it does show off quite a few things I now know that I didn't this time last year.

I'd like to do more coding in my free time but doing it all day then to spend a few more hours in the evenings isn't too appealing when I want to escape my computer, plus I haven't got any other ideas to work on atm! Sure I will think of one when I least expect.
 

sn00p

ClioSport Club Member
  A blue one.
What I found useful was to have an end goal when I wanted to show off my skills. There are many things you can do but these are simple and very textbook. Having a project was really good and helped to focus on what needed to be done. Even if it is pretty useless and only I ever use it but it does show off quite a few things I now know that I didn't this time last year.

This is very good advice, pick a project that fulfils a need for yourself, picking something at random is a sure-fire way to start on a road to nowhere. It can also be good to work on multiple projects at a time, while it prolongs the development on all projects, it does keep things fresh, and if you hit a speedbump in terms of not being able to decide or figure out how to do something, it's good to switch to something else and wait for the "aha" moment to awaken you at 4 in the morning.

My Github has a few public projects I'm working on (https://github.com/fizzyade), I suffer from painsomnia so I find coding a distraction in the early hours of the morning, it switches my focus from pain, it's a distraction technique. My father passed away in august and that had a knock-on effect on the projects that I'm working on, there's a few on Github that I've started to work on again here (although no more commits currently).

The latest project (the one shown a couple of posts up) is a DMG file generator for macOS, I had a need for one that would allow me to generate them easily, save a configuration and then launch builds from a script. There are a few commercial offerings, but I figured I would create my own tool that would work how I wanted it to, it leverages other open-source projects. (of which I've submitted enhancements to, following the work on my project)

It's GPLv3, which means that anybody can take it, use the code but they cannot use my work in a closed source application, I'm actually a big fan of the GPL (I used to hate it with a passion, but I've gotten older and wiser) and GPL is a great way of giving back to the community while not losing rights to your work, you are free to relicense your work as you see fit (dependent on any other projects you've made use of, you have to satisfy their license requirements).

Create dmge² was a result of me working on my desktop/offline version of the "Regular Expressions 101' site, I have a deployment script which provides a simple way of producing deployable binaries for Windows, macOS and Linux, I was struggling with the DMG script I was using and found a python module which handled it the right way....and that's how dmge² came into existence.

"Regular Expressions 101" desktop app was a result of needing to write a lot of regular expressions, I've never found a tool that is as good as that website is, but I would find myself with 10's of tabs open to that site with various different stages of an expression, it's not ideal. So I grabbed the sites javascript (the author was fine with this) and build a standalone application that hosted it, I could have left it there and it would have worked fine as an online application (for saving your expressions), but I went one step further and I intercept requests and handle them myself and have a locally (SQLite or MySQL or etc) accessible database, the site is completely offline and works as it would if you have a connection. I use the app all the time because all I need to do is click on the icon in the dock and I'm instantly back where I was.

And the top of this pile is an app called Pingnoo, it's an app like Pingplotter but is in early development, it's built around a very modular architecture which means that the main application executable does nothing but load plugins and initialise them in the correct order, each plugin adds specific functionality to the application (like the main window, or the menus, or an editor, ...), I hope to get back to this soon now that the two spin-off projects are pretty much now complete.

There are a few other projects including hardware projects I've put together, one is an SFP module editor and another one is an implementation of a memory stick which uses a MicroSD card as the backing store, it's a very specific implementation in that it doesn't present itself to the host as an sd reader, it presents itself as a memory stick, again I have a very specific need for this because one of my servers runs it's OS from a memory stick, the memory stick is the license and if it corrupts it's a ballache to get a new license transferred to a new stick, especially if it's the weekend, so my solution is to fake a memory stick, if the SD card dies, I just replace it and the OS knows no difference, as far as it's concerned it's the same memory stick that's plugged in.

So yeah, work on stuff you have a need for and be prepared to hit a fork in the road (outrun style) every so often!

(I'm also a massive fan of the JetBrains tools, CLion, PyCharm, WebStorm etc, for 20 quid a month you get all their tools and they are massive time savers for me)
 

SharkyUK

ClioSport Club Member
I read above that you worked in GIS - it's a fascinating area that I have dipped in and out of over the years. My programming background is in high performance systems and 3D graphics technology / visual effects / games and simulation - hence have written graphics engines for visualising GIS data sets and the like.

gis01.jpg

gis02.jpg

modsim01.jpg
prof03_th.jpg


(Sorry, I can't find the original high-res images!)

Programming, by its very nature, is technical... but I find it incredibly satisfying insofar that it also affords an immense level of creativity.

Good luck with your focused learning. Pick a language or two, maybe a framework or two, set yourself some simple tasks / projects and jump in. If you enjoy it then you can look to take it further.
 


Top