Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Devops side projects for a student?
16 points by bkgunby on Dec 17, 2016 | hide | past | favorite | 19 comments
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?



DevOps is like programming: unlimited/infinite.

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...


He clearly didn't mean sysadmin's automation that is nowadays called "DevOps". He meant "system administration" gigs.


DevOps work is sysadmin work with the addition of junior level software engineering experience (usually bash and python).

Source: Linux|Sys|Network Admin/IT Manager who moved into DevOps.


Funny. Sysadmin's work always included writing missing tools, which is often above junior programmer's level. What you say is basically DevOps being system administration for beginners.


I think you misunderstand me.

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.


Well, OK, but this was expected from sysadmins as well. It was always sysadmin who is responsible that the application died, no matter the real reason. Where do you think the idea of putting programmers on call to reduce crashes came from?


> It was always sysadmin who is responsible that the application died, no matter the real reason.

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".


Funny. I have seen it for last ten years. And it was not that rare that the sysadmin knew more about system's internals than its programmer.


I love this question! I'm a DevOps engineer who came to my role through a combination of test automation and test network management, and a keen interest in tinkering with technology stacks. I love what I do and can't recommend it enough to new graduates, who may not even know of the role.

To build a portfolio, I would suggest the following:

    - Create a document describing a small tech stack:  

      > Outline the systems (or list of docker containers)  

      > Draw a network diagram showing IPs / subnet(s) info  

      > Describe the OS(s) and base node configuration (ssh, NFS, etc...)  

      > Outline the software stack (on each system), describing connections between nodes (eg. Apache web server with PHP, connecting to Postgres on port 5432)  

    - Create a github repo  

      > add the above document as the README.md file  

      > add a SETUP.md document (or add to the README) with steps to setup a local ansible workspace, and deploy your stack with your configuration scripts  

    - Set up a local (or cloud) environment with your Jenkins pipeline, and document a deployment (with screenshots) showing a working stack configured from a set of clean nodes.  

    - Expand on what you've made (create a new repo for each! think of them as new projects with a different set of requirements, even if they build on what you've previously done). Try to focus on one thing at a time:  

      > SSL everywhere  

      > OS hardening  

      > failover / clustering of the database  

      > failover / clustering of the web/app server  

      > load balancer in front of the web tier  
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!


If you just want experience / references... go to local businesses (eventually pick a niche, like law firms or restaurants or marketing agencies...), have them run this tool, and tell them you're willing to get them from an F to a B for free (maybe start with local business running WordPress)... and they can pay if they want an A+ rating. Document all the sites that you were able to improve, find some ways or build some tools to automate the process, and talk about it during interviews.

* 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.


What about websites that are run on top of a 3rd party services? For example, I noticed a lot of doctors use their doctor-specific website generators that use something like weebly (it's crazy - there are ones specifically for optometrists, dentists, chiros, etc). I'm not sure how much of a change I'll be able to make.

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.


If you notice that they are running some sort of crappy "Dentist CMS" just avoid them. They've signed up for some "all-in-one" plan with some tech service provider who probably does everything from their website to their practice management software... they can't let you work on one part of that ecosystem without canning their current provider... and no way you want to do all the stuff they do (even though the all-in-one guys tend to do a really shitty job with everything... the thing that matters is the practice management software and everything else they do just pads their profit margins).

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.


Yeah, those websites all scored 0's on mozilla's scale. Hence, I thought they were opportunities. But thanks for the heads up.

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


If you're just doing Upwork type shit, waiting for customers to come to you... it's just a commodity. So yes... when people search they say, "Well, I don't want the cheapest... those tend to be bad..." But look, Upwork is literally AIDS and will give you cancer of the herpes sores. Go to local businesses in-person, educate them... this creates demand for your services. Talk to the manager, build the relationship... this creates trust in you as a service-provider. Online freelancing is a race to the bottom. In-person prospecting will net you better clients, better projects, and better pay.

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.


I've always read it's better to charge by the hour, but that you also want to have a contract with an outline/description of the project and expectations. I'm having a hard time getting past this because how in detail are you supposed to go with that so they know what you're responsible for and what will cost extra?


You can add in some assumptions in the SoW / MSA / contract. Like, "Will only be responsible for work in XYZ Repo, not other Repos or 3rd Party Services." It's really whatever you want to put in there, I start with a pretty long standard list (based on the project type). "Won't customize administration tools or workflows of WordPress / Magento / ABC Platform," to, "Will utilize Foundation / AWS / blah blah blah."

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.


Ask around at your uni. I was a part of a small scale server deployment to facilitate student project hosting :)

Friend of mine had a spare server lying around so we persuaded departmental sysadmin to host it.


> But unlike apps, I'm not sure how to showcase a particular "devops project" to future employers.

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.


I'd recommend setting up lambda/api gateway/cloudfront for a serverless application, there are lots of guides out there - you want to do something that will be relevant when you are done learning, not necessarily just something relevant now.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: