Ask HN: Devops side projects for a student?
I'm graduating in a couple of years, and I would like to find some project ideas.
I've done some web programming in the past, but gradually I became more interested in the operations side of things.
But unlike apps, I'm not sure how to showcase a particular "devops project" to future employers. I've used docker/vagrant for local development, ansible for configuration management, jenkins, etc. But these aren't necessarily something I can talk about hours on end.
I'm planning to find a devops internship position, but until then, is there something I could work on?
20 comments
[ 8.6 ms ] story [ 46.6 ms ] thread* Observatory by Mozilla || https://observatory.mozilla.org/
Tool to help quickly tell what a site is running as a CMS:
* Wappalyzer || https://wappalyzer.com/
If you wanted to make a few bucks... do some simple disaster recovery work... make sure they are at least doing on-server backups -- at minimum. Make sure they have rudimentary security... Fail2Ban is easy to setup. Most SMBs do very little for web security, and haven't really thought ahead to what happens when the shit hits the fan (and it wouldn't raise any red flags for them to hire a bright college kid to do this sort of work). If they see a website come up when they click on a link, they think, "Hooray it works, and it'll work forever!"
If you wanted another up-sell option... offer a cheap monthly retainer to do uptime / content monitoring, application performance monitoring, server health monitoring, and access log monitoring. If you just want experience, set the price low... you can always up the price as you get more experience / more practice with these tools and automating the setup for them. Or offer to help them with general IT (this is a black hole time sink, but cool if you need beer money). Or offer to show them how password managers work. Or setup backup systems for their computers (Backblaze is great). Or... once you get a foot in the door you'll see more opportunities.
If a college kid came to me with hands-on experience completing a valuable task for 10-25 real-world businesses... I'd be really impressed.
EDIT: The above is pretty much how I paid for college. Graduated form an Ivy League school, paid every cent of it myself (no loans or financial aid), ended up with over $100k in the bank more than when I started. Got into business doing email migrations for a hospital chain, got my foot in the door with a lot of doctor's offices, grew that business from there to general IT, basic HIPAA compliance, website development, a bunch of just random "tech services" -- lots of great hands-on-training for me along the way.
And how much is a "few bucks"? I've done some freelancing work, and I made the mistake of setting the price too low when I first started. I'm pretty oblivious to the business side of things, but I get the feeling that they use price as one of the determining factors for quality. I admit I fall into that trap whenever I purchase something without research.
In terms of what to charge... totally depends on the situation (what services you're offering, who you're offering it to, and the market you're in). I don't generally think people are afraid of paying too little... certainly like $25 / hour -- most SMBs would love paying something like that for the work, and it's about what you'd make hauling sofas and moving boxes around... just a lot easier on your back. You can come off as very high quality, and still have a low price... my guess is you aren't instilling confidence in your presentation. Easy to fix... take a public speaking class, dress a little nicer (suits never hurt), and carry a notebook (http://www.staples.com/Staples-Composition-Notebook-College-...) -- this gives people confidence to see you're an active listener and making a to-do list of action items (http://lifehacker.com/5575748/best-to-do-list-manager-paper).
Spend an hour on Yelp generating a prospect list... find all the local businesses that use WordPress, practice your elevator pitch, then clean yourself up and go walk around asking to speak with the manager.
As for the price, I did freelancing online. When I first started, I offered really cheap services, and only a single person contacted me. But when I increased the price, I started getting more responses. Still, that notebook prop is genius. Guess I'll have to work on my "jargon mask" too ha
BUT... start small, make sure you can do the work at a professional level before you charge for it. It's OK to do a few for free... way less stress than taking their money. Do a few trial runs... get comfortable with the work. Your confidence will grow and then you'll start commanding industry-standard pay. The money does not matter at all right now, you need practice and references.
You can always do work that is in a gray area, or clearly out of scope of the contract, if you want to be nice to the client. The contracts are for clients that you don't want to be nice to. They are levers you can pull to get the client back into a manageable space. If you don't give yourself a lot of levers, you're left with just "walk away" when the shit hits the fan... and typically that option doesn't include getting paid.
Even for "simple" projects now my Statements of Work are 25+ pages. Templatized as best I can, and all reviewed by a lawyer I trust. I don't sign contracts that clients send me, without stipulating that if that contract and the one I sent over are ever at odds, then the contract I sent over wins. You have to protect yourself, especially as a one-man-shop. You can't afford to get bogged down in shitty squabbles, so like with most things... "a stitch in time saves nine" here. Longer, more explicit and detailed contracts save you time.
First things that come to mind:
- You can create puppet modules, Chef recipes, SaltStack formulas (not familiar with Ansible but sure as hell has similar features)
- You can get certifications (Chef, Puppet, SaltStack, Ansible, etc.)
- You can get DB certifications and write your experiences about master/slave configurations, etc.
- Orchestration and schedulers tools, k8s, mesos/marathon.
- You can get certified for AWS, GCE and Azure.
- Became proficient in Bash, Fabric/Capistrano. Display some automation scripts on your blog/github-repo. Can you configure a firewall to fetch a list of IPs (say porn websites) from the internet and block or redirect access to these IPs using bash?
- Study distributed systems, replication, possible problems (split brain, etc.). How does consul/etcd/zookeeper reach consensus. When to use one tool over another, why not use Redis instead of consul?!
- Study big data on Coursera (hadoop/cloudera/HDFS/MapReduce)...
It's a never-ending story. Just take a look at look[1] at what companies are requesting. A devops should be able to write code (with varying degrees of expertise) and understand architectural/design challenges. I'm not saying you need to know everything - you can't, there are simply too many tools around - but you have to learn at least some of them and you can explain what you learn via blog posts or github code.
[1] https://weworkremotely.com/categories/6-devops-sysadmin/jobs...
Source: Linux|Sys|Network Admin/IT Manager who moved into DevOps.
Yes, sysadmins have always written the glue between disparate systems, implemented monitoring, etc using bash, and now more than ever, python. But now DevOps roles are expected to (in my experience) lean closer to closer to application reliability engineers; not only must you perform admin tasks, and write tools to automate infra tasks, but you must also dive into app code at a moments notice when shit is broken.
Out of the last 15 years of tech experience, I've only seen this be the case in the last 3 years, where the sysadmin/Devops engineer was required to have more ownership beyond "your application is broken, I've restarted it and notified the developer".
Friend of mine had a spare server lying around so we persuaded departmental sysadmin to host it.
One of the key elements of DevOps is automation. If you can make sure everything you do is in a public git repo, then you just need to show that to future employers. It doesn't have to be a working app, it can also be an Ansible playbook.
To build a portfolio, I would suggest the following:
If I saw the above from anyone, I'd be impressed. If you have any questions, feel free to message and start a conversation offline. Best of luck!