top | item 22637196

Build stuff

341 points| bluemooner | 6 years ago |why.degree | reply

187 comments

order
[+] Waterluvian|6 years ago|reply
I was a mentor for a scrappy, underfunded robotics team of about 12 9th-11th grade students until the season was cancelled. One of my favourite parts of the experience was pointing out the "theory" behind the "practical". "What you're dealing with is called X and this is why it's important" was an increasingly common reply I'd give.

One of _many_ examples was when the software lead came to me excitedly and said he got basic autonomy working, but the robot wouldn't drive the same distance every time. We talked about open vs. closed loop systems, their wheel encoders, and PID loops. I'm convinced that when he goes to study any of those things in university, because of this real-world exposure to them, they will be far easier to grok.

[+] AlphaWeaver|6 years ago|reply
In case anyone is curious, this program is called FIRST Robotics Competition [0], and it is life-changing for the students who get to participate. (I'm an alum.)

I got my first job through FIRST and was so much better prepared to solve difficult problems through what I learned there.

You probably have a local team in your area. If you're interested, you should mentor! The students' excitement is contagious and its a fantastic experience.

[0]: https://www.firstinspires.org/robotics/frc

[+] smoyer|6 years ago|reply
Thanks for being a mentor! I spent years in embedded systems design and industrial automation and now that I'm "only" doing software development, I really enjoy mentoring with FIRST. Tell your kids "Hi" from team 4027 (CC4H - 2018 Detroit Champions) . We had a really strong machine this year and were sad to see the season cancelled. We'll be sharing some of our engineering notebook and a season retrospective anyway. We're also working virtually with several groups that will make our team stronger next year. The competitions are fun but it's still all about the education and experience building things.
[+] chillee|6 years ago|reply
For teams without as much funding, there's also a competition called the "First Tech Challenge". It's a smaller robot, which makes it far easier for a team to self-fund and get started.

I started a team with 4 other friends in high school, and we ended up placing 2nd at the World Finals (sadly, we lost in the finals...)

I'm still very proud of this robot we built: https://www.youtube.com/watch?v=aDYqt-jd0cg

[+] NortySpock|6 years ago|reply
We did the same thing with a gyro to make the robot drive perfectly straight, and it was enough reliability to secure a place in the finalists at regionals.

Hello from a mentor of FRC Team 2560!

[+] arthurjj|6 years ago|reply
Thanks for being a mentor. Building and programming the robot was my first fun experience coding and making
[+] eloff|6 years ago|reply
I focused on building stuff, and I've never stopped. I've worked weekends and evenings doing that throughout my career. I dropped out of college because I wasn't gaining anything from the degree, it would have just been a credential for me. It made it harder to get that first job, but since then it hasn't held me back. I have gone further in my career than the very best students in my classes who stayed and finished their degree with honors, and in some cases continued on to their masters in computer science.

Now at 35 nobody even asks about the degree anymore. So a degree is not worth that much in this industry compared to practical skills. However, I think many people might struggle to learn on their own and might lack the self-discipline or initiative to guide their own learning - in which case get that degree! But keep in mind those same skills are required on an ongoing basis to keep up with this fast moving industry, and you won't get as far without them. I was home-schooled so for me it's just business as usual - that's actually been the biggest thing I got out of my schooling.

[+] hota_mazi|6 years ago|reply
> Now at 35 nobody even asks about the degree anymore. So a degree is not worth that much in this industry compared to practical skills.

At 35, maybe.

Before that, a degree is worth a lot.

[+] psalminen|6 years ago|reply
It is definitely true that you can build a career without a college degree. However, I don't believe this is the main point for college. Personally, I went to college solely based on an interest in learning. I can't imagine learning astrophysics (my degree) to the same level of understanding without the community of peers and mentors colleges provide.
[+] jermaustin1|6 years ago|reply
I've been told by two separate hiring managers at bigger "non-tech" companies that they need a degree to satisfy some outdated HR department requirement, and to just put something down in education, and they would pass it through without checking. They wanted me, but I wouldn't have made it through HR without a made up university degree.
[+] dktp|6 years ago|reply
26, but a similar story here. Not having a degree hasn't held me back in job opportunities.

Where it has held me back is getting a permanent residency in Canada. I spent the last 2 years working as a backend developer in Canada just to see I'm not eligible for express entry PR due to lack of education.

[+] cltsang|6 years ago|reply
Depends a lot on the business.

If the company is hiring a junior to build a CRUD app, or even Uber for XXX, a degree wouldn't affect much.

If the company is a business intelligence solution house, a degree may be just an entry ticket.

[+] Impossible|6 years ago|reply
I have a very similar career story. In fact recently I've come to the realization that I never much cared for software engineering as a career, and would rather just build stuff. I'm prouder of all of my side projects than any work I've done at a job.
[+] chrisjarvis|6 years ago|reply
i agree with all the intangible benefits and personally got very little out of college which is why I took a job without finishing. That being said early in your career a Computer Science degree is still very important. With 2 yoe ive been looking for a new job and 2 of the FAANG + Microsoft company recruiters immediately ended consideration with that as the stated reason why. Just some competing anecdotal evidence :)
[+] bluedino|6 years ago|reply
We have a nearby state university with a so-so computer science program. 2-3 graduates every year go to FAANG, a handful go to the local fortune 1000 companies, and we (a < 500 employee company) get to pick through the rest.

They all list C, C++, .NET, HTML, CSS, and Java on their resumes but haven't done anything except a simple group project in any of them, half the time not even writing any code for the project. Which means a role in documentation, testing, etc.

They come with a chip on their shoulder, flaunt their degree, and demand a salary close to what they think they should be getting, according to their advisers or statistics or whatever.

To make it worse, they don't have any personal projects to show. I tell every single person that I interview to create something, even if it's a failure. At least you can come back and discuss your experience trying to create something, and you'll learn more about development working on that project than you did the whole semester you learned Java.

[+] dejawu|6 years ago|reply
I despised the academic parts of school. The work was hilariously irrelevant, the requirements totally arbitrary, and the expectations set so ridiculously high that even though I've been in the workforce for a few years now, I still have anxieties and insecurities about my engineering ability that trace back to school being set up such that you're expected to fail all the time yet still somehow graduate. Often, it felt like school was actively working against me in my drive to become a better engineer.

I quickly learned to give my engineering side-projects a higher priority than schoolwork. Schoolwork could always expand infinitely to fill as much time as it wanted, and school was a hideous monster that would swallow every ounce of effort I put into it, take it for all for granted, and only greedily demand more of me. If I'd played along with that, I would've had to give up the drive to build things that made me want to pursue engineering as a career in the first place.

I had an industry internship every summer while I was in college, and I found an industry job - which paid more than my program's average undergrad starting salary - the afternoon after my last final exam. I say this because I want to emphasize that even by the standards of my school's career department I have """succeeded""" - yet every single one of those positions made absolutely no use of the things I was forced to do or learn to get my degree, and extensive use of the skills I learned by ignoring schoolwork and focusing on personal projects.

I can't say with certainty that school did absolutely nothing for me: my current manager says that even though he didn't look at my academics at all, he likely never would've seen my resume if it didn't have a degree on it. But while I can count on one hand the number of times something at work has been remotely relevant to my schoolwork, the number of panic attacks and depressive spirals caused by anxieties rooted in my experience in the academic environment is beyond countless.

[+] LeifCarrotson|6 years ago|reply
People don't expect aspiring accountants to spend their weekends managing their personal finances or imaginary companies in QuickBooks or (shudder) Oracle. If they've got a personal budget spreadsheet, and have done a few studies in school following tutorials with sample data in a few software packages, but frequently refer to the docs and don't know the keyboard shortcuts, that's great for an accountant. You teach an accountant the tools your company uses to apply the basic principles they learned in school.

They haven't spent a whole semester learning Java, they've spent a semester learning about Java. By writing a group project in each of those tools, they prove not that they are ready to start knocking out your Jira tickets on Day 1 - they're not, as your experience and their resume proves - but that they are capable of working on unfamiliar software projects in a group, which is what they should be doing in your company. Take a student who knows how the fundamental function your software performs can be built, and teach them the unique tools your company uses to do that. It only takes a couple thousand hours for someone who knows how to learn to develop good proficiency in your particular stack, and there are so many stacks out there that you can't expect everyone to have invested that in yours.

[+] jasode|6 years ago|reply
>People don't expect aspiring accountants to spend their weekends managing their personal finances or imaginary companies in QuickBooks

I do understand (and sympathize) why many job candidates disagree with the importance of a "personal portfolio" and so we get repeated frustrations of comparing it to accountants, lawyers, pharmacists, etc. E.g. if pharmacists don't dispense drugs on the weekend "for personal fun", why do we "expect" programmers to do the same?

The way to make better sense of it is to not frame it in terms of "expectation" of a job seeker but of "identification and preference" of employers choosing one job seeker over another. Whether the preference itself is flawed is irrelevant. The point is that it's human nature to use a preference as a tie breaker.

Programming, much more so than accounting/law, is an activity that many more people like to do for personal "fun". Because of this, it's inevitable that some employers tend to want to identify them and prioritize them over others.

And hiring preferences are not unique to computer programmers. Here's engineer Ben Krasnow (of popular channel Applied Science) explaining how a "personal portfolio" helps him stand out and get good jobs:

- deep link and watch for ~30 seconds: https://youtu.be/ihbYtxaEDSk?t=248

So, if you're an electrical engineer getting angry at the world because employers shouldn't "expect" you to design circuits for fun on the weekend, don't be surprised if they hire Ben instead of you.

Edit to add another Ben K video covering the same topic but mentioning Valve & GoogleX and choosing between prospective candidates:

- deep link: https://youtu.be/4RuT2TlhbU8?t=112

[+] tomlue|6 years ago|reply
I don't know. It shouldn't take very long to spin up a simple personal project. Knowing the exact same tech stack might be hard, but not being able to show a single programming project isn't great.

Also, If I were hiring a beginner accountant I would greatly prefer one who had set up imaginary companies in quickbooks, and it isn't hard to do so.

Actually building things demonstrates that you might actually build something in my company. It's just competition though. If you have two guys, one who has been in CS education for 5+ years but somehow has no personal projects in that time, versus a guy with no education and a few interesting personal projects, I know who I would pick. I'd also be kind of shocked that in 5 years of learning about a topic you never built anything interesting.

[+] calebkaiser|6 years ago|reply
I think it depends on how you view software development as a profession.

If you group it more closely to creative fields like design or writing—both fields where portfolio reviews have been standard hiring practice for decades—then it makes sense to expect to see projects. If you view it closer to a professional services role—accounting, legal, etc—then your comparison makes sense.

I'm not advocating for either view as the "correct" opinion either, I just think the disagreement has less to do with what qualifies a junior and more to do with how we conceptualize development as a profession.

[+] jameshart|6 years ago|reply
That’s a poor analogy. Accountancy isn’t creative (in fact, creative accounting is frowned upon). Accountants don’t need to develop a taste for ‘good accounting’.

Coding is writing, and choosing what to write about, and picking language to use to write about it. It is an unending series of creative choices.

If someone has no exposure to the process of making those choices, they are not ready to code.

[+] badams2527|6 years ago|reply
How many civil engineers are building bridges on the side? Why has it become the "norm" that CS students pay tons of money to attend universities that leave them ill-equipped to find a job in the real world?

One of the best parts of college is the ability to learn more about yourself, diversify parts of your life, and experience new things. It's hard to do that when your life is split between school work and personal work.

I worked my life away at side projects and a part-time programming job in college and looking back there's so much I would've done differently. CS programs across the country need a wakeup call.

[+] microcolonel|6 years ago|reply
> Why has it become the "norm" that CS students pay tons of money to attend universities that leave them ill-equipped to find a job in the real world?

University industry, unions, and academia more broadly, set the tone that if you want to do anything "for real" you must go to school. Many companies, parents, and ordinary lay people are convinced.

My (somewhat limited, I am young) experience tells me that competence is a completely inadequate predictor of whether somebody went to school for computing or software, but self-importance is an excellent one.

[+] wolfgke|6 years ago|reply
> How many civil engineers are building bridges on the side? Why has it become the "norm" that CS students pay tons of money to attend universities that leave them ill-equipped to find a job in the real world?

The problem is rather the expectation of the employers: No civil engineer is expected to build huge bridges in his free time.

[+] rooam-dev|6 years ago|reply
Software engineering is not civil engineering. Software is "soft", "plastic", you can build and change anywhere.

If one could build bridges that easy, I am sure people will do it.

[+] Aloha|6 years ago|reply
Not many.

But lots of architects design things in their spare time.

Is software engineering closer to civil engineering or closer to architecture.

[+] bluemooner|6 years ago|reply
> CS programs across the country need a wakeup call. I assume you mean the United States. I'd say this is actually across the world.
[+] clarry|6 years ago|reply
> If you want to be a software engineer and you do not have any code to present in an interview, you can not call yourself a programmer.

That's just bollocks for a number of reasons. Maybe you're too busy doing productive work to build a portfolio. Likewise, employers are often too busy to look at and evaluate your portfolio. And unless you spend a huge amount of time working on your portfolio, chances are it's going to have nothing relevant to your job.

Perhaps this junior developer fresh out of university needs to show up with real world experience before blogging about it :P

[+] MaxBarraclough|6 years ago|reply
No need for an example as extreme as the NSA.

If you've worked for years developing proprietary code of any sort, you cannot share it. One's personal GitHub portfolio is a completely different beast than one's professional accomplishments.

[+] bluemooner|6 years ago|reply
> If you want to be a software engineer and you do not have any code to present in an interview, you can not call yourself a programmer.

You can still call yourself a Computer Scientist, but there's a difference between the two.

[+] madhadron|6 years ago|reply
Not to mention if you have been in, say, the NSA. Then the answer to "do you have any code you can show us?" may be "No, and I can't talk about it."
[+] 32bitkid|6 years ago|reply
for people who haven’t gone to a top-tier college/university for computer science—especially self-taught developers—I would say that the corollary advice is also true:

Don’t just build stuff—study stuff!

[+] JDiculous|6 years ago|reply
Is the undergrad CS curriculum at a top-tier university really that different from that at a regular university?
[+] animalgonzales|6 years ago|reply
this has totally been a struggle for me. self-taught but I have to make time for myself to learn new concepts
[+] vibrolax|6 years ago|reply
I graduated with a CSE degree 41 years ago. My tremendous good fortune was obtaining student employment at the University computing center during my second year. While my fellow students queued for keypunch machines in the CS labs, I had my own terminal in the office, documentation for everything, and maybe best of all, was treated as a full colleague by the regular staff. They gave us real work to do. The university's budgets were severely reduced during the mid to late 70's, and the student labs were pathetically underequipped and overcrowded.

All of the students working at the computing center realized how lucky we were, and received multiple good offers despite graduating in the middle of a recession.

[+] sarora27|6 years ago|reply
I personally struggled alot in college with the academic stuff. It got so bad that I was kicked out of the engineering department and ended up signing up for a degree in economics. After having gone through 2 years of engineering courses, the econ curriculum seemed like a piece of cake. However, I had a feeling that that would not be enough to land a job post-college (my GPA was also very poor).

Instead, I dove head first into trying to work with other people to build products that people would use. While none of those products ended up going anywhere in terms of financial success, the experience itself really helped me in articulating what sort of value I could provide to a prospective employer. In fact, I would give all credit in getting my first job to the fact that I was able to talk about the challenges I experienced with an on-campus recruiter who signed me up for an interview on the spot.

I really think the learning you gain by doing, building, etc really helps you grok the underlying academic principle. For me, I found that I have to do first and then go back and read up to learn what I've experienced.

[+] taneq|6 years ago|reply
I feel like this is good advice but it creates a false dichotomy. It should be "study stuff... by building stuff."
[+] ExtremisAndy|6 years ago|reply
Could not agree more. A couple of years ago I decided to learn Java (I was already aware of the 'basics' in programming from other languages... variables, loops, functions, classes, etc.) so I spent maybe a week learning the basic syntax of Java. Then I jumped right into building a (very simple) 'virtual study partner' system where you would take notes by 'teaching' your virtual study buddy certain facts about what you were studying, who could then in turn quiz you using your own notes. You could also ask your study buddy about things you had already 'taught' it to see how well you remembered them or if you just needed a quick reminder about something. A bit of a silly project, no doubt, but it really helped me learn Java, and was so much fun!
[+] bluemooner|6 years ago|reply
Surely there must be a balance.
[+] otras|6 years ago|reply
Building things is a great way to learn. That being said, the way this is presented leaves a bad taste in my mouth.

> If you want to be a software engineer and you do not have any code to present in an interview, you can not call yourself a programmer.

Additionally, from one of their recent tweets:

> I wonder how many people that call themselves programmers know that there is more to coding than just JavaScript

This is unnecessary gatekeeping from anyone, but it's especially unwarranted from a "junior software developer, fresh out of university." I'd encourage the author to be less prescriptive when there's so much gray area and so much variation between experiences.

[+] Beaver117|6 years ago|reply
I'll give my perspective as well.

I've hated school ever since middle school, but I recognized I wasn't dedicated enough to get a job without a degree. While going through the motions of academics, I noticed most of the classes were, basically, a joke. Not at all relevant to industry. I went to a fairly well known school as well, but didn't feel like any of it was worth it.

However, starting my second year I was working on side projects in full force, and applying for internships. Sure, my GPA dropped a bit, but I got relevant experience. Then a black swan event, through a connection I was offered a full time position at a very large company, solely on my experience from projects and internships, no degree required. It paid well too (or so I thought). I very much considered dropping out, but several people in my life (including my new boss) strongly suggested I get my degree.

I ended up finishing the degree and almost doubling my pay, so I'd say it was very worth it. However, a degree is not necessary (nor sufficient) for employment.

[+] djhworld|6 years ago|reply
People in this thread (and the original article) emphasise building stuff to help you get job interviews and do better in your job.

I'd argue that's the wrong way of looking at it, yes having something to show might be a signal booster on your resume, but it should be a side effect.

Building stuff is only fun if you want to do it, the motivation and passion has to be there, otherwise you'll just be building something for the sake of it. Don't get me wrong, it's definitely useful to gain knowledge from building, even if it's just a toy project, but you'll get so much more out of it if you're building something you're passionate about.

[+] kirstenbirgit|6 years ago|reply
I've always been of the opinion that since the world of (web) programming moves so fast, a degree is largely pointless. As long as you have a natural interest in solving problems, learning new technologies and staying up to date, you should do well. You'll have a natural inclination to create some personal projects just because you can't stop yourself, and you'll find yourself having a couple projects that's worth showing off to potential employers–a portfolio.
[+] N1H1L|6 years ago|reply
A few years back I was chatting with a faculty in my field at a conference. His lab almost invariably produces outstanding graduates who are really apart from the rest of the field. I asked him how did he do that, and his point was when hiring postdocs in his lab he never was really bothered about the publication counts, but he asked only one question, "What did you build in your PhD?" And if a graduate student could not answer that they were not graduating.
[+] melling|6 years ago|reply
I’ve alway called this the “Producer Consumer problem”, which I obviously reused.

You can consume a lot of books, TV, movies, games, etc., however, it’s more valuable to produce something.

[+] mrkeen|6 years ago|reply
Agreed.

What separates own-projects from previous job experience is the ownership.

Anyone can be a "valued member of a team", go to meetings, collaborate, open and close lots of Jira tickets, be super helpful, check in code which "should fix the problem", etc.

But it's not the same as if you have your own project, which fails or succeeds based on how much effort and debugging you put in.

[+] wy35|6 years ago|reply
I'm having a bit of trouble building stuff to learn in my free time (undergrad w/ cancelled classes due to COVID-19). I find it very difficult to come up with an idea that I'm excited about enough to actually keep me motivated. And I would love to contribute to OSS but the codebases seem so dense and inaccessible, especially to a non-veteran.

Any advice?

[+] machiaweliczny|6 years ago|reply
Build me Reddit clone (if you do please make it scale to 100M users - that will keep you busy) or modify public source to be deployable with 1 click.

EDIT: more ideas

Try to build better Firebase.

Try to build OS that's truly secure and convinient and hackable that allows me to write integration scipts based on app events and allows me to rewrite any app UI.

Design App UI building toolkit that puts current solutions to shame.

Build MMO game that will make Blizzard sad.

Build simple and configurable personal assistant.

Build relevant adds solution.

Design better search engine than Google.

Design publishing system that will get rid od ads and will allow to fairly compensate content creators and make it sustainable.

Design simpler HTML, so anyone can write browser.

Try to build/design language that is both expressive and minimal, with performance close to C or better, has great errors, no quirks and predictable memory use. Write it so it's easy for beginners to contribute ;p