There is a lot of hype about software development last couple of years and, it’s not for nothing. The industry is flourishing and, it has an impact on all the aspects of modern life. Outdoor dirtbags like climbers also embraced this kind of living, and there is a good reason why.
It’s not just about money. The software developer job offers a freedom that most climbers cherish more than anything. If this is a job for you, then you are in luck because it is likely you will be able to work remotely, not even all year-round, and go climbing wherever and whenever you want!
I’ve been working as a software developer for many years, more than I care to admit. Recently, I wrote a blog post about the basics of web development. It inspired me to start a series of posts about this subject here, hoping it will be informative and useful for my climbing friends.
If you are dead set on web development, go ahead and see this post. But, for this introduction post, I would like to tell you what being a software developer means in practice, and what is expected of a programmer. I surely would love it if someone at the university told me this before digging into hardcore math problems simulated in all kinds of programming languages!
While I was studying computer science, my understanding was that I will write code. I will be figuring out how to solve some problems, design algorithms, and implement them in one of the programming languages. This seems so naive to me right now. The software developers’ job is so much more.
Identification of need
If you are in charge of a project or plan to build your startup, this is where your ideas will flourish! You will get an idea and start dreaming about it, thinking about market, demographics, potential users, how will this new project benefit the world.
Still, if you are an employee in a company, it is unlikely you will ever think about the above. You will be expected to think about improvements in the product or new features that will bring more money or users to the table. And, as a software developer, your opinion about feasibility will matter.
An important task in creating a software program is figuring out requirements. Customers typically have an abstract idea about what they want as a result but do not know what software should do. Skilled and experienced software engineers recognise incomplete, ambiguous, or contradictory requirements.
Once the general requirements are gathered from the client, you will need to determine the scope of the development. A scope document is created for this purpose, and its purpose is to get things rolling. It is hard, even impossible, to predict everything that will be necessary for implementation before it starts. Creating a scope document is like looking at the water before you go for a swim.
Once the requirements are established, the design of the software may begin. This involves a preliminary or high-level design of the main modules with an overall picture (such as a block diagram) of how the parts fit together. The language, operating system, and hardware components should all be known at this time. Then a detailed or low-level design is created, perhaps with prototyping as proof-of-concept or to firm up requirements.
Implementation, testing, and documenting
This is where we finally come to the university level of programming I mentioned earlier. You will be writing code, figuring out the details of implementation, testing, and writing documentation explaining the details about how to maintain and enhance code in the future.
Software testing is an important part of coding because bugs need to be fixed and reduced to a minimum. Quality analysts will surely do a big part of this job, but companies are moving toward test-driven development, which means every developer also needs to write tests for every piece of code that he introduces into the project. This sounds like a tedious job, but it is necessary because maintaining large projects is not an easy task, and this is one of the ways to keep things in control.
I hope this will give you some decent idea about what will be going on at work once you start your job as a software developer. If all of this sounds complicated, it’s because it is complicated. But that does not mean you will have to hold all the strings and know everything to get started. Being a programmer means being an explorer, always learning new things, and being able to face unpredictable. It has a lot of similarities to rock climbing. Usually, it is just about Del Boy’s quote: “He who dares wins!”