The Dev Pages

A knowledge base for simple (and beyond) web applications development

Archive for March, 2017

how and why software development


Posted on March - 21 - 2017



I was thinking I should create some re-usable language. Like a good software engineer. The topic of software development comes up somewhat frequently with people. This happens naturally as a consequence of explaining what I’m up to at any given time, but also because people wonder how the hell I’ve managed to continually find a job when I’ve been forced to work for money. (ha)

As I’ve hinted at, it has been a love-hate relationship. In a nutshell I love the flexibility it has given me and the constant intellectual challenge and the opportunity for creativity and self-autonomy. But I often struggle with the challenge of being at a screen so long without human interaction. But good projects and associates are collaborative and I have learned a ton from some amazing people. All in all I’d consider my career path lucky. I hope it continues to be that way as I go in different directions.

My ultimate advice is that anyone should try coding. If you like it for the sake of coding, stick with it. It’s like a switch within. It’s a crossroads that comes about relatively quickly. If it’s a legitimately miserable experience and you can avoid being a technical prostitute, then move on to something less soul-sucking. There are many redeeming  jobs and characteristics that may be a direct result of someone not being a good coder.

How to to figure out if the switch will click is harder to say. I’m not sure exactly how or when it happened for me. Here’s my best guess: find something legitimate to figure out. After getting something like that successfully setup, evaluate the suffering you’ve experienced. Did you enjoy that suffering? If it was like a good workout or a painful massage or a worthwhile hard read, something somewhat masochistic but ultimately enjoyable, then you may be ok. If it was like watching CNN or reading a lot of opinion-based facebook posts or calling a cable/satellite provider or waiting to take photographs, something harrowing, then move on.

It’s really not about understanding the weird syntax of code. But you do need to be figuring out what some of that language and structure is achieving at some early point. Getting something working is the first step and then caring enough about understanding HOW it’s done so you can effectively re-create something similar is also very important. So maybe one needs to try something out, and then do a variation on it while forcing yourself to understand how to accomplish that variation from the principles you learned in the first task.

I would say a good place to start is to figure out how to buy a domain, setup web hosting, and get an html page loaded with some decent styling and an image carousel loaded using a javascript library like jQuery. Setting up a blog doesn’t count.

Another one might be getting a web page to show some ugly-ass text but to generate the text from a database. Or from your favorite playlist from your spotify or last.fm account using an API data source.

Another one might be getting a native mobile app setup and on a test environment on your actual phone and have it have a menu with legitimate options that loads a placeholder view.

If you like the problem solving aspect or if you like to work on your own on technical things you may be suited. The best and the brightest are also good collaborators, but there’s a personality aspect to it.

You will be using w3schools.com, stackoverflow.com, and google.com a ton to get started. And once you figure some stuff out, look into finding a project at work where you can apply code if at all possible. Or save up money or get someone who really loves you to fund code academy classes or a start or return to a university. I’m skeptical about most for-profit institutions.

Here’s a tale of two friends. Both tried coding. One took a class in college and the other came back to it after school and did a code academy. The one who took the college class never got to enjoy it and the switch never clicked. I’ve met plenty of people who tried code academies to the same end. The difference for the other friend was that they just somehow enjoyed it and desired it and got to the point where stuff started clicking. It’s always been the same way with so many people I’ve met. Either they’ve naturally had a fierce desire and possibly a natural aptitude, or they’ve taken a crack and never really had anything click. There’s just some fierce dichotomy that exists out there. I’m still trying to figure it out. Maybe it’s something as simple as being willing to google and pound your head against the wall to get a semi-colon in the right place and finally understand how something works to great satisfaction. Who knows? But figuring out if you can flip the coding switch is something I would recommend to anyone who is at all curious.

Here’s my roots:

  1. At the age of 10 I hammered on a old-school IBM until I figured out how to draw lines in a DOS operating system based program called Harvard Graphics.
  2. At the age of 12 I learned how to boot into the DOS operating system so I could load a computer game from a floppy disk, Joust VGA, of a disk and play it on my own
  3. At the age of 14 I learned how to use text commands to navigate BBS (Bulletin Board Service) portals, which were like a dial-up text based website you could navigate from the command line or a command-line like tool for BBS-ing. I wanted to download music. I still remember illegally downloading my first song, Cream’s White Room. (1)
  4. At the age of 17 I took a C++ class in high school and had fun with it.
  5. When I was 18 in college my Object-Oriented Computer Science class in Java seemed like cake after learning some C++. I think this was when I realized the switch had clicked.
  6. When I was 22 I learned to build html documents and use javascript.
  7. When I was 23 I convinced one of the world’s greatest bosses to let me learn Coldfusion, a server side language like php or python (well, a little bit weirder). I stayed up for a couple nights late, and I came back for a second interview proving I could query data from a database using the stuff and since then I’ve always had jobs in development, learning things as I went from my Information Systems program to some extent, but largely from the jobs I’ve had and opportunities to learn new technologies.

I don’t know what any of that proves. I think a common theme is giving a shit about mysterious details and figuring them out to achieve something interesting. As I’ve gotten older and money became involved I didn’t necessarily need the gratification of a childish drawing (though that is the end product of some recent projects) or a video game or a song. But I still really enjoy knowing how technical stuff works, to the point of knowing some stuff about fixing my car and creating music with an instrument and understanding how areas of finance and law and other dense subjects work. So maybe a part of it is being a hedonistic control freak. I think those character traits can be very rewarding.

Footnotes
1 – TODO:NW middle school aol password phishers and sketchy affiliates and the woes of not figuring out internet browser temporary file storage fast enough.
2 – My crazy career path at linked in: https://www.linkedin.com/in/nate-williams-aaba3735/

… The job stuff (TODO:NW move to another post)

Finally, there’s a point where you actually have to get started with a money-making gig. Once you get your first one, you may very well be set forever.

<from a recent email, probably not entirely useful>

1 – Go to ‘meet ups’, I know in other cities they are huge. SLC has a smaller scene, but people seem to think they are useful. I’ve almost gone to a couple and have been meaning to go. My server side language, php, isn’t as big, but the javascript I do (angular 2 and react), some mobile stuff, and server admin/dev ops have some interesting groups. Some guys I worked with last summer were into them, and said recruiters and people hiring will stick around after to look for people and often sponsor the meet ups. There are some javascript, angular 2, and react groups that could be good.
2 – Go nuts with responding to craigslist, ksl, indeed.com and other job boards. While I lived in Austin last spring, I found a job post on a U of U job posting board for ‘data research’. It turned into me doing scripting (great for learning python) and doing a ton of work on an angular JS app when I got back to Utah. It was such a fun project. We worked for the Weinholtz campaign, and visualized voting data for Utah.
With hitting up postings it never hurts to have people look over your resume and form cover letters. To a certain degree, getting that first job will include having a resume where nothing is all that impressive for the industry. But wording and layout and how you paint past experience counts for something. With coding in particular, being a fast learner is huge.
3 – Take a job in something else, and as part of the deal offer to work for free/get training on a dev project. I had a campus job where we hired QA and copy writer people and let them do html and JS and get the experience and title for their resume and go other places. Unfortunately this is somewhat rare involves finding a good employer.