
Ask HN: Devops side projects for a student? - bkgunby
I&#x27;m graduating in a couple of years, and I would like to find some project ideas.<p>I&#x27;ve done some web programming in the past, but gradually I became more interested in the operations side of things.<p>But unlike apps, I&#x27;m not sure how to showcase a particular &quot;devops project&quot; to future employers. I&#x27;ve used docker&#x2F;vagrant for local development, ansible for configuration management, jenkins, etc. But these aren&#x27;t necessarily something I can talk about hours on end.<p>I&#x27;m planning to find a devops internship position, but until then, is there something I could work on?
======
atmosx
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...](https://weworkremotely.com/categories/6-devops-
sysadmin/jobs#intro)

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

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

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

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

~~~
dozzie
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?

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

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

------
shermanyo
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!

------
dbg31415
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/](https://observatory.mozilla.org/)

Tool to help quickly tell what a site is running as a CMS:

* Wappalyzer || [https://wappalyzer.com/](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.

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

~~~
dbg31415
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-...](http://www.staples.com/Staples-Composition-Notebook-College-
Ruled-Black-9-3-4-inch-x-7/product_919350)) -- 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](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.

~~~
bkgunby
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

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

~~~
hanniabu
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?

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

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

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

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

