Had a great time last night at the Meet a Mentor event organized by the Graduate Development Community and held at King’s College London. Met a lot of amazing people from different backgrounds, got engaged in very interesting discussions which I will be outlining shortly but before that I will just add a few sentences about how the event was structured. We had around 40 attendees consisting of Undergraduates, Masters, PhDs, Agile Developers, Web Developers, and even Diabolic Developers, Software Architects, Analysts, CTOs, Founders, Freelancers, Authors, etc. We were essentially aggregated into groups of 5-9 people. Sitting on chairs in a circle with no table in the middle contributed to having more lively and informal discussions which I think was great. Each group had 1 to 2 mentors talking about their experience and answering questions from students within a period of 15 minutes before jumping to another group. That way we had the opportunity to hear from all the mentors that were present. The event started at 6:30 and stretched to around 8:30 (perfect timing). After that we headed to the Old Bank of England pub where we continued our lively discussions but this time with refreshing cold beers. They didn’t have Carlsberg at the bar so I went for a first taste of Chiswick which I mistook for Chipswick (one of those funny moments).
Here’s a list of some of the points made from the discussions last night:
- Getting involved in Open Source projects is a must for every developer and especially for students if you want to set yourself apart from the rest of your peers, just like it’s a must for a graphic designer to have a portfolio of their graphics work. It’s highly valuable by employers and some even value it more than your university degree itself. So get a github account, fork some projects you like and start collaborating or upload your own project and invite your friends to join in as collaborators.
- It’s always good to know more than one language, especially if those languages differ in paradigm. For example learn an Object-Oriented language like Ruby or Java and a functional language like Haskell, or partly functional like Scala.
- There is an increasing demand for functional languages whose paradigm offers great support for concurrency. Scalability in some frameworks is in issue for example with Rails. It was mentioned that Twitter was originally built in Rails but due to Rails inability to scale properly has led them to switch to Java technologies.
- There was also a mention of PHP server-side code being used as an interface between the the user interface and a Java enterprise stack which handles all the business logic and the heavy computations.
- If you work for a large organization as a front end developer you will not be expected to do the job of a back end developer and vice versa. However, in small to medium sized companies that is usually not the case and developers are found to get involved in both sides of the development process front and back-end. So you might want to consider adding some PHP or Ruby skills to your HTML and CSS skills.
- The job of a Software Architect involves working with projects from inception to delivery. The software architect must be able to consider all kinds of factors that could influence the project whether they are related to technology or business. It involves considering issues such as regulations, risks, available budget, resources, technologies, methodologies, etc. You can become a software architect after years of experience since a software architect must be an experienced developer who has deep knowledge in a breadth of technologies and programming languages and is business acumen. There is a lot of communication involved so having excellent communication skills is key to this role.
- If you’re going into freelancing than it’s important to remember that you should go for projects that pay on a per-day basis rather than those that have a fixed price. If you’re doing a project for a fixed price, than that could potentially lead you to do work for free if you can’t meet the deadline or if the client wants to change a previous feature. A client that pays on a per-day basis means that you can do extra work but for an extra amount of money.
- Being proficient in your technical skills it’s not sufficient and it’s not the only thing that employers are looking for. You must also have peoples skills and be articulate in how you communicate your knowledge and ideas to a technical audience and non-technical audience as well. It is considered to be fundamental skill to have and many good developers fail to get jobs because they lack communication skills. This was highlighted by almost all the mentors.
- There was a lot of discussion on the Agile software development methodology. It was mentioned that for developers Agile makes life harder in the short term but easier in the long term. Obviously, it’s much better for the end user who at the very end of each iteration receives a working version of the software. And iterations usually last around two weeks. If you’re interested to learn more about Agile, I have blog post dedicated to that just below this one!!
- It was also pointed that usually developers themselves write the test cases. And instead of hiring test monkeys they automate the whole testing phase and arrive at a point where test monkeys are not needed. A test monkey is a person who is temporarily assigned to test a software for a particular purpose.
- There was a lot of discussion around maintaining zero downtime and avoiding loss of data in servers during faults. For example when a server goes down, the software using that server should immediately switch to another sever and maintain data consistency while at the same time the whole process should be unobtrusive to the user.
- The cloud was part of the discussion as well, where it was pointed out that big organizations tend to be reluctant in adopting external cloud systems due to security issues and levels of trust.
- If you want to start your own startup then you’ve got to love and believe in your product or idea. You’ve got to believe that people will buy and use it. Ideas can range from anything, but it is crucial that you feel passionate about yours. For example, you don’t like the current software that handles your finances. You want a new one that has the features you want or improves upon existing features. That could potentially be the kick-off of a new startup company that offers a better way of handling your finances.
- To find partners or co-founders for your new startup it’s always crucial to meet up with new people, and what better way than to go to different events and chat with loads of people, talk about your idea and see if they they believe in it and share the same passion for it as you do.
These are some of the points made during the event that I managed to pick up from my memory. The meeting at the pub followed with discussions on topics like the C language, functional languages, OllyDbg, Quantum Computing, The Linux Kernel, Minix, Java, and loads of jokes and a lot of fun. If you have anything that you want to add or correct or want to have further discussion on then you’re welcome to do so. While you do that, I will take the moment to thank the Graduate Development Community for organizing once again a fantastic event. I will also like to thank all those who made it and especially the Mentors who volunteered for this, really appreciate your effort. For more great events like this refer to http://grad-dc.co.uk (Graduate Development Community)