1) How do you think?
I tend to be very analytical at every step of a problem or project. I also prefer to only move ahead when I get a good grasp of the big picture. This can take a while, so it also generally means I end up thinking constantly. I often have trouble turning my brain off. I find this is actually true of most problem solvers, even if they aren't aware of it. A good deal of planning and analysis happens in places you wouldn't expect, like in the shower, driving, or walking around on campus. Thus, thinking (and working) is not confined to you being in your office or in class -- it happens everywhere, all the time.
2) How do you view creativity?
I would define creativity as the ability to go from nothing to something. Sometimes this is finding an elegant solution to a problem, and sometimes it means creating something that doesn't exist. If you're a creative programmer, a blank screen tends to look like an infinite number of possibilities. I think creativity is an important part of almost every profession, and is certainly required for being a good software engineer.
3) To what extent do you think programming is an essential skill?
I think a basic understanding of programming can help everyone. There is not one person I know that hasn't complained about some tedious task on the computer, and with some basic knowledge you can make a simple program to do it for you.
Also, this day in age, it is extremely helpful to understand the basics of the web. Chances are some day you'll end up editing your company's web site, start your own blog, or otherwise want to format something for the web. It will be a lot cheaper and faster to learn the basics than to outsource every web problem that comes across your desk.
4) What classes are you taking?
I've taken most of the CS curriculum, so I'm mostly taking some economics and gen ed courses at the moment. I am taking our Entrepreneurship course as part of the certificate program, and it has turned out to be quite interesting.
5) What programming languages do you know?
I started learning C/C++ when I was 14, so I would say I know them the best. I've also done professional work with PHP, Perl, and Javascript. I like to play around with Ruby and Lua when I have the time. I've done some work with Python, Bash, Java, and Scheme, but I would not claim to know them well.
I would say that markup languages don't really count as "programming" languages, but they inevitably get included. So I guess I should also throw HTML, XML, and XSLT on the list.
6) What do you want to do when you graduate?
I've tasted various jobs that a software engineer could have, and I've enjoyed all of them. One summer I worked on flight control software at Lockheed Martin (which ranks number 44 on the Fortune 500). I've worked as a freelance programmer over the years, and I did an internship at a local firm with embedded software. Recently I've been working on launching my own company, and I think it is the most fun I've ever had. When I graduate I'm sure I'll keep working as an entrepreneur.
7) What sort of projects are you working on?
I spend almost all of my time working on Book Hatchery (http://www.bookhatchery.com). Book Hatchery is a platform of software tools designed to help authors publish t
heir works digitally in the form of eBooks. However, there are a lot of time sinks involved with launching a business, so I don't spend as much time on the software as I would like.When I'm not working on Book Hatchery, I often work on enhancing my custom 2D game engine or work on making various online games. I've also maintained a blog for many years (http://www.nick-cash.com), though I don't usually have the time to update it frequently.
8) How do you feel about collaborating on projects with others?
Collaboration is critical for bigger projects because software is much easier to produce if you have a team working on it. That said, your team needs to know how to communicate well and what each person's responsibilities are. Collaboration really sucks if you don't have the right team.
For medium and small sized projects, collaboration is a lot less important since you may not have co-developers. A single developer can make a lot of progress very quickly on these types of projects, and much of the time they will probably enjoy it more. However, the end result may very well have issues related to the programmer's choices and that could have been avoided if they had collaborated.
I thought Nick had some great insight and it was cool to see his first-hand experience using his knowledge of programming, software, and business. It seems like he is already having success and I think it comes from his mindset. In the first two questions he talked about how he is very analytical and his mind is almost always running, and also how he believes a blank screen can mean an infinite number of possibilities. This definitely takes a certain type of thinking. I know that when I look at a blank screen I just see what there is, not what there could be. Nick seems to be open to figuring out new things and has already done so.
I also thought it was interesting to see the contrast in Nick’s view of thinking some knowledge of programming is helpful to everyone, versus the previous answers in other’s blog posts that basically said this was only essential to those in technical fields. I think it would be helpful to know some programming, especially if it made tasks easier, like Nick said. In class we discussed how not enough attention is given to computer courses in high school, but I think it should be emphasized more. I think Nick was on the same track as Cassie in saying that we all need to be able to use the technologies that are being developed in order to keep up.
No comments:
Post a Comment