What's software development to you?
I've been working with software development for quite some time now, and I have started to ask myself that same question. I did reach an answer, which I'd love to share and get some feedback on.
With my answer at hand, I thought it would be cool to ask some of my friends the same question, and see what they think about it (you’re awesome guys!). So, before I give my answer, let's take a look at the Wikipedia definition of software development and what my friends have to say.
Software development is the process of computer programming, documenting, testing, and bug fixing involved in creating and maintaining applications and frameworks involved in a software release life cycle and resulting in a software product. The term refers to a process of writing and maintaining the source code, but in a broader sense of the term it includes all that is involved between the conception of the desired software through to the final manifestation of the software, ideally in a planned and structured process. Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.
Well, that went well, didn't it?
That's a great "by the book" definition (and I recommend you to read all of it at Wikipedia, to get some extra information and details). If you do take your time and read it, you may find one of the seeds that lead me to my answer.
Yes, I read it when I started asking myself.
And what do my friends have to say? I asked about the first thing that came into their minds, without overthinking. Let's take a look.
Express my logic, creativity and feeling in code form to solve problems.
There's a reason why I feel a strong connection to Vitor — a fantastic developer, fellow gamer and a great guy overall — and I believe this answer could help people understanding it. I love how this touches the human side of software development.
Write instructions that may receive inputs and generate outputs that make sense to someone.
Lucas's answer is far from passionate, been more technical. But don't get him wrong: he is really passionate about the user experience above all. He's starting to take some distance from code, but he's still a great developer. He's just in the way to become a great CEO. That's all. xD
Dude, I think the most honest answer I can give you is the thought that I had the first time I learned software development was possible and I would have to write code: I will never memorize these codes.
So I think after all these years coding, software development to me is the constant challenge of learning new things and pushing your own limit. Of course, this isn't what happens in our daily work on projects that are not, let's say, challenging enough. BUT, whenever an interesting project appears, the feeling of being able to make it happen is the motivation to continue on the field, which is not always $atisfying enough.
I think that’s it, I'm uninspired.
PS: Send nudes.
Oh my, I got Matheus on one of his uninspired days. Yes, THAT is uninspired (makes me think what would he answer on an inspired day… OH I know that, I've worked with him in a few projects: great stuff). I absolutely love this complete open, close and personal answer. This brings our "technical world" into a "personal human world". Matheus's answer says a lot and makes me think a lot. Even now as I write this up. The nudes are coming, don't worry.
Create tools to solve problems, to put it bluntly :P
This comes as a surprise, since Miguel must be the most human-aware developer I know (and a great one, that is). I was quite expecting something more in the lines of relations between people and "soft" (I don't like this term) skills. But, putting it bluntly, yeah… that's what it is. :P
Miguel is a great friend and we're always in touch and joking around. So, please, don't get this wrong. ;)
It’s how you write documents that machines can understand
What I like about Guilherme's answer is the concept of "document". I think it goes beyond being "just" code, targeting something more expressive and meaningful (and that's what code should be, ok?). As developers we code (write) documents. As a developer, Guilherme codes great documents. He just needs a better haircut.
To me, it is to empower businesses and communities automating algorithms that make processes and / or communications more efficient.
Gravem (I think he may be the only guy I call by the last name) is another programmer I deeply respect. And, I must add, I really miss our daily discussions and talks. His answer is just brilliant, really.
I laughed SO hard at this one… Marcelo knows how to make a joke out of anything. Another gamer (missing our PSN sessions, I must confess), a great developer and father (how's the kid going?). I have nothing to add to his answer. Pure genius stuff (as friend trolling). :P
Without more ado, here's my take on it.
It's the act of transforming knowledge into working code
My personal answer is not specially good, but I do like it and believe it describes software development quite well.
Software development is an act. Which means it isn't passive, we need action and effort in order to do it.
Software development results in working code. It could be an application, framework, library… but it works. You can run it and build upon it.
I left the "transforming knowledge" bit to the end, since it relates to both points above. A software doesn't come out of nowhere, but from real life needs (and that includes games too). To be able to fulfill that need, you must take the knowledge of the domain you're working with from people's minds and turn it into something a computer can understand and process.
And that's why it's so hard to code. Coding as an activity itself is not that hard, but getting along with others, trying to "extract" the knowledge they have and understand what it really is in order to transform it into a working piece of code can be really complex.
Depending on knowledge is almost the same as depending on other people, as I see it. So developing your "soft" skills is as important as developing your "hard" skills. That way you may better connect with others, which will enable you to create a better software overall.
As we all know, personal experiences really shape our vision of the world. It's no different here. Each one of these answers reveals another facet of the same thing: software development.
So: What's software development to you?