DevConf is a community driven, developer focused, one-day conference hosted annually. The aim of the conference is to provide software developers a buffet of tools, practices and principles applicable to tackling current and future challenges in the South African software development environment. It's an event where attendees can learn, network and be inspired regardless of their specific technology stack and programming language of choice.
DevConf serves to inspire software developers. A range of topics applicable to software development will be presented. From keeping up to date with the latest technologies and trends to tackling the challenges of working in large enterprise systems – it's a buffet of experiences, ideas and pragmatic advice as well as an opportunity to connect with peers across the industry.
|Crafting Code||Sessions with a direct focus on coding. Appropriate topics could include working with legacy code, refactoring, and principles and practices to improve code design.|
|Persistence & Data||Sessions focussed around persistence. Appropriate topics could include best practices with relational db's, transitioning to NoSQL databases, working with data as a programmer, handling schema migrations.|
|DevOps & Automation||Sessions focussed around the culture, environment and tools used for building, testing, and releasing software rapidly, frequently, and more reliably. Experience reports on what worked, what didn't and why.|
|Tools & Frameworks||Sessions focussed around the tools that make developers productive be they software (Visual Studio or Eclipse), and details in programming languages that are often overlooked.|
|Teams & People||Sessions focussed around the learning from other developers, office layout or soft skills like mentoring, dealing with diversity and working in teams.|
08h00 -> Registration <- 09h00
09h00 -> Welcome & Keynote <- 10h00
10h00 -> Movement, Networking, & Snacks <- 10h30
Architects, those that design buildings, study architecture from the past to the present to best understand their craft. As software developers we aren't easily afforded this opportunity, this has always frustrated me, and has thus lead me to always want to share with my fellow craftsmen.
In this talk I lift the veil on a two of my enterprise projects implemented using a message based architecture. I walk through the architecture of the projects highlighting the SOA patterns used. The first architecture focuses on patterns employed for performance and scalability and the second focuses on big data principles for data visualisation using projections and the lambda architecture. This presentation also focuses on the do's and don'ts when designing a scalable message based architecture, as well as potential technology you may consider such as NServiceBus.
Chris Tite is a director and co-founder of Kaleidocode, a software consultancy based in Durban.
He earned his B.Sc. Electronic Engineering through the University of Natal and has 22 years of software development experience, spanning multiple countries, technologies and industries as diverse as banking, farming, health services, call centres and financial services.
Currently Chris can be found either overseeing the architecture at Kaleidocode, mentoring the intern programme which is run through the company twice a year, or giving talks around the country through his inStruct Series, or through the Durban Agile User Group, where he is well known for sharing his love of craft beer with active contributors during his talks.
The World we live in today makes us deal with a lot of information. The solutions we put out there also have the same problem. We collect a lot of data through our applications and we try to give these data back in a non-asphyxiating fashion. Doing this with a single data storage technology will make you feel definite agony even on a medium-scale solution. Furthermore, it's next to impossible to provide a viable solution in a large scale products like Foursquare and Twitter.
This is where polyglot persistence comes into picture. As much as the word "polyglot persistence" sounds extremely fancy to your ears, it's also not that straightforward to adopt in a solution; especially in existing ones. Come and join me in this session to learn about what most matters in this type of architecture to build a viable, maintainable solution. Also, I will be talking about how to make decisions to choose the right data storage technologies based on my personal experiences I gained with the side project I am spending my nights on.By the end of the talk, polyglot persistence should seem less scary and you would at least have a one real world example in your mind on how a solution is being architected where polyglot persistence is the solid foundation.
I am a web guy, Microsoft MVP and software developer specialized mainly on .NET Web technologies. I've worked at the tourism industry to build tourism software services and products for long time and now, I am working at Redgate Software as a Software Developer helping people do database delivery in a joyful way. I am also a very involved member in the community and try my way to expose my knowledge to others through my blog, webcasts, authoring books, giving talks on various topics and so on. I live in lovely and green Cambridge, UK and I am married to a lovely woman.
Speaker Experience: I have been speaking in international conferences and local user group events for last four years. A few examples: I have spoken at That Conference in US, Web European Conference in Milan, Progressive .NET Tutorials in London, /dev/summer in Cambridge and Azure Conf 2014 Virtual Event and many other local events in UK and Turkey. In addition to that, I have some upcomming speaking engagements scheduled like Codemash 2016, in USA.
DevOps is not a job title! This session will be a brief look at the latest buzzwords in IT. We discuss how DevOps fits into the greater scheme of things and what the actual implications are surrounding a solid DevOps focus.
Founder of Team Foundation Consulting, Niel Zeeman is a Technology Specialist and a Visual Studio ALM Ranger. He provides support and services for Application Lifecycle Management and Team Foundation Server in South Africa. Niel has more than a decade and a half of experience in the IT sector. He often hosts ALM community sessions and regularly speaks at developer and ALM focussed events.
Dispelling the myths of the complexity behind native iOS development.
Life-long techie with a fascination with all the new bits, but with a realistic (some would say 'cynical') view. Always pursuing the unicorn. Founded: JSinSA, CodeSkills, Broken Keyboards Software and a few community projects.
When I started out with app development I had zero knowledge on app development, all I had was just design skills. I got over my fear starting on developing an app by testing the waters by building an app based on my experiences. After building a few apps, I got to advance my XAML skills. This later got me to build an award winning app with minimum skill set on building an app.
Griffiths Sibeko, a lifelong learner with a grade zero mentality who draws his design inspiration from nature, human interactions and communication patterns.
Learning how to use a computer at the public library at age 11 where the staff was always sceptical that he would break the equipment, he got to excel at using computers and got his first promotion from owning a library card to owning a library staff card. He later then realised his passion to design and develop solutions to help better ways in which people interact with the world around them.
Griffiths' work range from software design and development, knowledge management, and digital design. Griffiths has skills on various Microsoft technologies and has since published various apps on the Windows store. Griffiths was awarded the MTN Best App Garage Developer 2014 for the Rea Vaya app he designed and developed beginning of January 2014 in a quest to solve some of the issues he encountered when using the service.
After finishing an internship program at the Microsoft AppFactory, Griffiths now works for Zapper which is a successful mobile payment solution company he competed with at the MTN App Awards for the consumer choice award and is based in Cape Town. After hours, apart from working on local relevant solutions, he is furthering his understanding on software develop and to better his skills.
How many times have you wanted to start a new project in Java EE, but struggled to put all the pieces together? Has the Maven archetype syntax left you scratching your head? Everyone else is talking about cool new tools in other languages or frameworks, and you're left thinking, "I wish it were that easy for me." Are rapid prototyping tools a thing of the past?
JBoss Forge is the tooling and technology you have been waiting for! It will blow your mind how easy it makes development. Just say "hold on, let’s prototype that" , "Yes, that is what we need!" We’ll first see the insane productivity this tool offers, and create a full JEE multi-tiered application in under 5 minutes! Restful services made with 2 lines! Swop out our JSF layer for angular in one statement!
Rory has worked in many of the blue chip companies in Johannesburg. A java developer since 2001 he is a Sun Certified Java Programmer and has his Honours BSc. Rory is lucky enough to work full time in R&D at BBD which gives him an unparalleled insight into industry movement. He is a co-organizer of the Jozi JUG and is a passionate Java Evangelist
11h00 -> Movement <- 11h10
APIs are part of our day to day work even if we don't think so. Often developers only think of 'APIs' as service endpoints for certain web services but this is only a single type of API. In this talk we'll discuss what types of APIs there are and how we can write and maintain beautiful APIs. What is a beautiful API and how can you craft one? Join us for the session and find out.
Software developer. Conference Speaker & Coach. Not a rockstar/ninja/pirate/guru. Interested in learning and sharing experiences. I've been a developing software for just over a decade now and in that time learned that software development is more about people than code. Although the code is fun, the people aspect is so much more important.
Oh the horror stories about SQL Server systems that I could tell.... Over the years I've come to realise that most of the worst problems could have been avoided if a few things were more widely known, So in the interests of preserving my sanity (and my weekends) I'm going to talk about a few things that I really, really wish more developers knew.
Learn the importance of good database design, the reasons for SQL's locking behaviours, the use of indexes, the risks of functions, the need for maintenace, and more.
DevOps is the intersection of tools, processes and people. There are tons of tools and a plethora of processes - but what about people? In this session we'll take a step back and look at how to evolve your culture to help speed your DevOps transformation.
Colin Dembovsky is a senior DevOps practitioner for Seattle-based Northwest Cadence. He is currently based in Cape Town, South Africa. After completing an MSc in Computer Science at Rhodes University, he worked as a developer (first in Linux/C++ and moving to .NET/C#) and later systems architect. He left development work to start ALM consulting, and has been a Microsoft ALM MVP since 2011. He is passionate about helping teams embrace DevOps as a journey, without self-destructing on the way.
When he is not working on improving DevOps somewhere around the world, he is playing guitar or mandolin and recording in his home studio, or entertaining his wife and 2 kids.
Colin is a frequent guest speaker and has appeared several times at DevDays SA and TechEd Africa.
Over the past year (and a bit) our team has been working with RabbitMQ on our production lead management system. We adopted it as the base of our unproven "Service Bus" based architecture that we wanted to try out.
This talk will share learnings, take-aways (eaten), technologies adopted and options, lessons learn, pain and tumblebeasts experienced and other near homicidal ideas.
Having loved computer science at school I realised that software development was my calling; I moved on to complete my B.Sc. HONS Computer science at UCT (long before #feesmustfall).
I have been working with C# for last 11 years, moving from front end development focused on Windows forms to back end development services and now slightly begrudgingly towards web (but mainly the services behind the scenes).
Moving from 5 years of working in the "casino world" and the 100% uptime that comes with it, I moved to JAG Method to help revolutionise their IT systems. JAG Method is one of SA's largest online lead generators. We specialise in generating leads for the financial services industry (no we are not those SPAMMER guys!).
Adopting an unproven service bus based design our small team has rewritten the 10,000 line one-file VB service (sexy!) into a multi-service, service bus oriented system with full management portal and monitoring (scary!). We currently process between 4000 and 8000 leads a day which are received, cleaned, run through a rules engine and then send on to the insurers for conversion.
Design thinking is a methodology used by designers to create innovative and effective solutions. Most scientific methodologies of working take all the known factors into account when deriving a solution, whereas, design thinking analyses both the known and the unknown. It challenges us to delve deeper into the problem and read between the lines before forming a solution. This talk aims to provide insight into activities and practices that assist developers in building effective, robust, and usable software by utilising the design thinking methodology.
The outcome of this talk is to highlight the benefits for the developer, team, client, and project in being a design thinker. It is to also convey some practices that the audience can immediately apply in their working lives to better themselves and their projects.
Rishal is currently fulfilling the role of a team lead at Entelect. He is a senior software engineer designing and building solutions for various national and international blue chip clients. Rishal is also the founder of Prolific Idea where innovation in software is cultivated through technology and research. He has a passion for web and enterprise architecture, mobile development, and user experience design. Rishal is an avid speaker at various conferences and user groups such as Tech4Africa, JSinSA, Java SA, RubyFuZA, Jozi JUG, Jozi Android UG, and the Gauteng Dev UG.
This session dives into discussion and code, depicting the two often conflicting approaches to software development – Pragmatic vs Purist. There are pros and cons to both which can filter through all levels of development e.g. choosing the perfect persistence store against choosing what that would work now or choosing a perfect solution vs choosing the one that full fills the requirements now. The end result, however, still needs to be a maintainable and simple solution.
Solution architect, software engineer and aggressive agilest. Mark has a passion for well-constructed clean code and loves building pretty much anything - mobile, web and complex enterprise line of business applications. It must just work and bring value.
Senior software developer with a passion for web development and open source technologies. Adriaan is driven to build the best simple solution using the technologies, platforms and tools that fit the requirement, and unit testing, always, fits the requirement.
11h40 -> Movement <- 11h50
With most new technologies it looks very simple when you have done a little 'Hello World' tutorial. However, when you start implementing it in your enterprise and it needs to work at scale then simple isn't that simple anymore and all kinds of problems start showing their ugly faces. There isn't any difference when it comes to NoSQL. With more solutions starting to contain NoSQL components more developers will need to come to terms with what to expect in the real world. Scaling isn't the only problem you will face. In this session we will look at the different types of NoSQL databases and unpack a few of the important issues you need to address to ensure you don't discover these ugly face problems late on a Saturday night when production goes down.
The session will cover all major NoSQL database types and look at the two or three main issues of each to be aware of and how to solve them.
I am a technhical lead and part-time trainer at BBD. I'm currently drifting around in the banking space. I have been a developer for the last 15 years and hold an MEng from Wits. When I'm not working or trying my hand at something new in the technology world I like to run. I'm currently training for my first Comrades marathon this year. I am part of the Jozi-Jug committee and presented 2 talks at the JUG last year, one on Swagger and the other one on the value of certifications. I also present the Java expert level certification training at BBD.
Becoming the next Uber is only possible when bringing your ideas faster to your end users. Some aspects of DevOps are perfect for that as it only works if Ops and Dev work closely together. But what does this mean for you as a developers? Delivering code faster with the high chance of failing faster?
In my opinion we need to look at Key Technical Metrics such as Memory Usage per User or Request, # of SQLs, # of Service Calls, Transferred Bytes, ... - these are metrics you need to track starting at your workstation all the way through CI into Ops – and don’t forget the Business: How often is the new feature really used? What does it cost to run it? Let these metrics act as Quality Gateways and stop builds early before they Crash your System: faster than ever.
In this session we look at how companies like Facebook, CreditOne and Co apply metric-driven DevOps. We look at use cases that crashed rapid deployments, identify metrics that identify the reason of the crash and learn how to use these metrics to steer your pipeline to build better code, deploy faster, without failing faster!
Andreas Grabner is a performance engineer who has been working in this field for the past fifteen years. Andreas helps organizations identify the real problems in their applications and then uses this knowledge to teach others how to avoid the problems by sharing engineering best practices. He was a developer, tester, and evangelist for Segue Software, builders of the Silk Testing product line. Later Andreas joined Dynatrace where, for the past eight years, he has helped organizations worldwide test applications, better understand the technologies behind their apps, and improve the entire development process. He shares his expertise on blog.dynatrace.com Conferences I spoke at: JavaOne 2015, Java South Africa 2015, Velocity, STPCon, StarWest, Agile Testing Days, ... Some of the meetups I spoke at last year: Java New York, Web Perf Chicago, .NET Devs in Redmond, DevOps Boston, DevOps Berlin, Web Perf Amsterdam, ...
Introduction to the Gradle build system with historic overview, examples / comparisons and case-study.
Corneil is a Software Architect and Developer with over 30 years experience in all manner of software development technologies on hardware from embedded systems to Mainframes and just about everyting in between. He has written software using Assembler, Pascal, C, C++, Java and a few more languages. He has a special interest in developer productivity using a variety of patterns and tools to improve the feedback cycle. Corneil presented at the inaugural Java South Africa Conference in Cape Town during November 2015 and at various JUGSA and Developer User Group meetings over the past few years.
When working in a team environment, code-reviews are an essential step in the process of producing code. Reviewing code decreases “silos” by increasing mutual understanding, exposes bugs/pitfalls and allows you to maintain consistency and quality. I’ll be sharing some of my experiences with the Zando team, how we work and the tools we use.
I'm Danny - Lead Developer @ zando.co.za
Passionate about quality code, mentoring, code-reviews and using great tools. Coding since using Netscape Navigator wasn't a laughable offence. A transplanted (but unrepentant) Vaalie
This session will take you though a journey of Azure machine learning and how to use it. It will explain how the platform works and how it can be leveraged to build great predictive analytic solutions.
Get an introduction ot machine learning, and understand how to build and execute an experiement.
12h20 -> Movement & Lunch <- 13h10
Testing is important, but I am lazy. So why spending copious time thinking about test cases when your computer can do this for you in a fraction of the time?
In this talk, I will show you how to use an awesome approach called property-based testing.
It allows you to automatically generate test values based on the properties of the things you want to test, from primitive types, all the way to arbitrary data structures.
Generating copious amount of random data can certainly break things but sometimes you want to find out which particular test case causes your system to fail.
This ability to hone on the particular bug (it is called shrinking) is extremely useful and almost makes property-based testing very hard to distinguish from magic.
I will use Scala, a typed functional programming language as a driver for demonstration, together with the ScalaTest and ScalaCheck frameworks.
The principles of properties-based testing have been applied successfully to many other languages, from Haskell to Erlang and I will briefly touch on those as well.
I am a self-employed consultant doing Software Engineering (mostly in Scala) and DevOps (mostly with Ansible). I am from Martinique and I've been in South Africa for over 3 years.
I currently work in the TV broadcast industry building software solutions to help media companies produce news and sport content.In a previous life I was doing a lot of work on distributed systems and configuration management at HP Labs. I've started the Scala and Ansible Meetups in Johannesburg where I try whenever possible to hammer in the benefits of functional programming and automation while feeding people some pizzas.
I've given talks at Meetups in Johanesburg and at Tech4Africa on topics such as Scala, DevOps and Continuous Delivery.
Building extraordinary user experience requires extraordinary capabilities. Among these capabilities, persistence of data is one of the most important one. We need a database that is fast, scalable and supported by world-class infrastructure, has a wide-variety of APIs, allows for clean code and needs less coding.
FireBase, Google's NoSQL cloud database, provides just that. Auto-scale to millions of users; real-time user experience; easy-to-use APIs. It allows developers to build extraordinary mobile and web apps. With FireBase, you can build and build fast for any device. FireBase also supports REST API natively. This session will be focussed on providing a practical overview of this awesome database with coding examples.
Badi is a developer, architect and agile practitioner with over 14 years of professional experience in a wide range of software development roles. He excels as a solo developer, team member, team leader, or manager of multiple distributed teams.
Badi started his career at Yahoo! in 2003. He has since evolved as a thought leader in the field of software architecture, software design and development for the web, the desktop and mobile platforms. Badi has spoken at, and contributed to, numerous internal training events and International conferences like the Free and Open Source Software conference (India), the Unicode Conference (USA) etc.
He is currently a leading technologist at IQ Business, South Africa. He works closely with clients to define ideas and deliver products.
In this session I will discuss the importance of analytics in the application life cycle and how to use it to drive change that improves the end users' experience of applications. This includes how to define meaningful metrics to measure so that the data being used to inform decisions is accurate and reflects the actual usage of the system.
I will be showing attendees Google Tag Manager(GTM) with Google Analytics(GA), as an example of tag managers and why they should be using them instead of implementing analytics tags straight into their applications. The techniques for that I'll discuss can be used for other tag managers, like Omniture, but I chose GTM since it's free to use so attendees can start playing around with it straight away.
My name is Veroon Budhai, I'm a Senior Software Engineer with Entelect Software that specialises in front end development. I have a strong passion for UX Design and Analysis and try to bring my experience with it to the development process so that the applications we build are focused more around the end user than just the requirements.
Developing an app for the fragmented Android ecosystem can be a difficult task. Problems such as small amounts of RAM or low performance GPUs on some devices makes the job of an Android developer a difficult one. In this talk, we will discuss various tools (and how to use them) to ensure your app isn’t slow or dropping frames. Enabling your app to run smoothly across a larger set of devices.
Rebecca Franks is an Android Developer working at DStv. She has over 3 years experience in developing Android apps. In her spare time she blogs over at http://riggaroo.co.za and has released several android apps. She graduated cum laude at the University of Johannesburg with a BSc (Hons) degree in Information Technology.
With the advancement of Software Development, developers' capability to test their own code has been greatly improved. IDEs and automated testing tools are enabling developers to easily create unit, integration, regression and any other tests as required. The widespread availability and use of automated build tools that aid testing, and practices like TDD, do we still need human testers in a software development team? Do testers have a role in this ever improving environment of automated testing? What skills and value do they bring? What is the mindset that keeps a tester relevant and valuable in a software development team?
Originally from Zimbabwe, with working experience in a few African countries, Oz currently works as a software tester in a mature development team. He believes thinking is his strongest skill in his bag of many and varied tricks. With over 15 years of experience, mainly in financial systems, he is focused on solving the right problems, the right way. A co-organiser of the Joburg Software Testers meetup, Oz loves to interact, learn and grow with the community. He enjoys a good coffee, especially with developers and other non testers alike. He has spoken at Agile Africa 2015, and co-facilitated a workshop at Lets Test Conference South Africa.
Ernst is currently leading the “Digital Team” at Allan Gray. His aims are creating a highly productive team that builds stable, reliable software that can be deployed with zero downtime or effort. The team is technology agnostic and delivers business value using the most appropriate tools and tech for the job at hand.
He also enjoys good coffee, great whiskey, trail running, skateboarding and traveling.
13h40 -> Movement <- 13h50
I'm Joshua, and I used to be addicted to mocks. I fell in love with TDD many years ago. In the past, every class I wrote had its own unit test and was perfectly isolated from its collaborators using mocks. More recently, I've changed my specification test philosophy quite drastically, to the point where I now no longer use mocks or other test doubles unless I absolutely have to. I believe my specification tests are now much more valuable, understandable, changeable, and also smaller and quicker to write. My production code is much easier to refactor, and I can also start releasing my code earlier. Let me tell you my story of rehabilitation and liberation from my addiction to mocks and how I came to see the light.
Joshua Lewis has an MEng from Wits and has worked in the software development industry for a decade – gosh that makes him sound old! His experience is mostly as a software developer, though he now works as a (software) Developer Coach at DStv Digital Media. He also lectures post-grads and CPD students part-time at Wits.
Graphs are great for discovering connections between things, but what if you want to search as well as do recommendations or exploration? It's time for polyglot persistence: store your connections in the graph, the indexed documents in Elasticsearch, images in some random key-value store, logs in Splunk and maybe some tabular data in your SQL Database.
It's not rocket science, but I would like to share the way we designed our data stores to connect the graph and other stores elegantly. I'll start with a super-quick overview of Neo4j and Elasticsearch and then dive straight into connecting the two. I'll follow that up with why you might want to do this, and what kinds of applications could you build with it.
Location: Pietermaritzburg (yeah)
I love software development, doing it, reading about it. I'm tech/ops director at Chillisoft, and with the growth of our software dev company I seem to now do more telling other people how to software develop, but I'm also more invested in maximising the effectiveness of software developers - both from a tools and personal effectiveness point of view.
How many people are using your website right now? Which features are their favourite? Are they experiencing errors? Getting stuck? How are your servers performing? Is your code easy to work with? Are you making money? Dashboards are a way to have the answers to these questions all around you, all the time.
Join Rouan as he shows you why building dashboards will change the way you look at software. He’ll share concrete examples of the kinds of dashboards you could build and will show you the tools with which you can build them. He’ll introduce you to principles that will guide you as you make decisions about what you dashboard, how you treat data and how you use data to make decisions.
We all have a favourite actor. For some of us it's a heavy hitter like Robert Downey Jr, for others: the more obscure the actor the better. Regardless of how good the actor is though, he or she can only act out one scene at a time. The same is true for systems that implement the Actor Model - a conceptual model aimed at reducing the complexity associated with concurrency. By treating a piece of computation as an "actor" we can direct multiple actors into a single, fluid scene that describes complex business scenarios in a simple fashion all while make sure each actor only has to do one thing at a time. Join William as he sets the scene for explaining the Actor Model, and tries to fit as many bad actor puns into one talk as he can.
Professional geek. Amateur beer enthusiast. Works for Particular on amazing products like NServiceBus.
In 1961, in his chapter about testing in his book "Computer Programming Fundamentals", Jerry Weinberg wrote - "It is, of course, difficult to have the machine check how well the program matches the intent of the programmer without giving a great deal of information about that intent. If we had some simple way of presenting that kind of information to the machine for checking, we might just as well have the machine do the coding. Let us not forget that complex logical operations occur through a combination of simple instructions executed by the computer and not by the computer logically deducing or inferring what is desired."
Are you testing if you have a set of automated tests that you consistently run? Do you need a human doing testing? Why bother testing at all? In this session, I would like to discuss and debate what 'Testing' means to people.
Testing is not just a career to me, it is a massive part of who I am. I have been blessed to come across people who have inspired me and taught me and I believe I have been that person to others over the years. The learning never stops though, and I continue to practice the craft and apply learnings from other disciplines back into software testing. Building the craft and community of testing in South Africa is also a passion of mine. To this end, I am the co-organiser of LetÕs Test South Africa and the founder and co-organiser of the Joburg Software Testers Meetup. I am also one of the founding members of ISST - the International Society for Software Testing and a member of AST (Association for Software Testing).
I enjoy speaking at conferences and have spoken at LetÕs Test in Sweden, Copenhagen Context and CAST in North America and served as the co-program chair for CAST 2013.
As Director and Consultant at House of Test South Africa, I am hoping to continue working with awesome people, partnering with friends whom I respect and working my butt off to promote $hit HoT testing.
Frontend tech: Keeping up with the Jones" covers the importance of challenging yourself to keep learning and exploring new tech. We as an industry we need to push the envelope of tech, experimenting with new projects. We take a look at how to create value for both startup and enterprise developers, allowing us to give actionable information when consulted by our businesses or clients. Then we take a look at how to practice some of these ideas and lifehack our learnings.
I am a full stack developer and a Senior Software Engineer at Entelect.
Professionally, I've worked in risk management and fraud prevention systems, the health sector, I've lectured web design and been a web freelancer.
Personally, I am a self proclaimed UI/UX enthuasist and keep a keen eye on cyber security.
In the analog world, I am involved in a couple of charities related child protection and education.
14h20 -> Movement, Networking, & Snacks <- 14h50
I have heard so many developers say "TDD is great in concept, but I can't use it in my current project. I'll wait for my next project to introduce it..." and they never do. Let's be honest TDD is not easy, especially when you have a large legacy code base to deal with, and if you are waiting for the perfect situation to start it may never come around. You need to make it happen. This talk will give you practical handles on how to introduce TDD as one of your development practices in your existing brownfields (legacy) project. When do we start? Well, there is no better time than the present!
I have been involved in professional application development for the past 15 years and I have been practicing TDD for 9 years. I have spent most of the past 7 years assisting customers in successfully getting their failing software projects back on track.
People are using our web applications on mobile devices, so internet connectivity is no longer always guaranteed. We need to build applications that work offline. Enter PouchDB, a database that works in the browser and CouchDB, a NoSql database that replicates. Combine both of these and you can build responsive applications that work whether the user is online or offline. In this talk I will introduce both of these great database technologies, show you how to get started with CouchDB and PouchDB, and demo many ways you can combine them for an amazing web experience for your users.
Nowadays, infrastructure automation is a necessity to achieve repeatability of deployment processes across multiple servers with minimal/zero human intervention. Yet, mere automation has proven to be insufficient when trying to keep up with ever growing business requirements.
Tools such as Puppet, Chef and Ansible have consequently emerged to ensure versatility and consistency of automated infrastructure. These tools provide ways to treat server provisioning and configuration management as we would treat software source code; thus making it possible to apply software development practices.
Unfortunately, just like with the rest of our software code, infrastructure code can grow difficult to maintain when good practices are not followed thoroughly. And that is even a bigger problem when multiple teams are involved.
In this session, I will share my experience of some Chef anti-patterns. I will then discuss the approaches that can be taken to address them. More specifically, I will show how software principles such as DRY, domain modelling and versioning can make a difference for teams who need to collaborate on automated infrastructure.
Charlene is a developer who is currently working at ThoughtWorks. Before that, she lectured programming to Computer Science students. As a consultant, she helps deliver software solutions across different business domains.
She enjoys being a polyglot developer and does not mind wearing the DevOps hat to simplify the way to production.
Her past talks include a keynote at Rubyfuza and a presentation on mobile health services at Grace Hopper Celebration of Women conference in the United States.
We're stuck in limbo with angularjs 1.x, knowing that v2 is looming large on the horizon - with significant changes, but no clear upgrade path. In this session we'll focus on some of the major design flaws of angular 1, the reasons behind the change, and work through how to best future-proof your code. Even if angular 2 doesn't become a 'thing', we can make our angular 1 code the best it could be.
Major changes between angular 1 and angular 2
How to avoid the biggest angular 1 performance pitfalls
How to structure and partition angular applications for development at scale (both amount of functionality and team size).
How to start preparing existing angular applications for v2
Join us to discuss how to use Visual Studio Team Services to manage your agile team(s) and find out how we are using the tooling. See what’s coming and share your mind for any future work.
Willy-Peter Schaub is a program manager with the Visual Studio ALM Rangers at the Microsoft Canada Excellence Center (www.microsoft.com/en-ca/sites/vancouver-development-center).
Since the mid-’80s, he has been striving for simplicity and maintainability in software engineering. His blog is at aka.ms/willyblog and you can follow him on Twitter at twitter.com/wpschaub.
Johann is an extremely passionate engineer and long time techie. He has a passion for continued learning and playing and due to this he holds a wide scope of language / framework / service knowledge and always trying to find the tools that fit. Johann has a deep understanding of systems ranging from embedded to large data processing services; and is also experienced in developing successful services from front to back. He is currently working on a ton of cool products.
He is a regular on the local tech scene in Cape Town and attends every conference possible. He also helps to run the local NodeJS chapter (meetup.com/nodecpt/) and helps other groups organize and source speakers.
Johann is experienced in building and team leading large scale systems with past work examples such as a Data Aggregation and Reporting service being used by a few US based financial companies. Currently, his main focus is building and leading development for a real time betting site, where large amounts of data needs to be processed and shown in a way that makes sense to the user.
He also builds, maintains and leads one of the four national microchip databases for Southern-Africa that is currently working with a few local organisations to find pets that have gone missing and get them home.
15h20 -> Movement <- 15h30
Everybody seems to be in agreement that maintenance is the most expensive phase of software development and that we as developers read more code than we write.
There has also been better adoption of agile methodologies and continuous delivery which are essentially putting parts of your code live (and therefore in maintenance) much earlier.
What all this means is that there is a very clear need for focused refactoring to make live code more readable and hence more maintainable. Of course, this has to be balanced against the cost implication - rewriting all bad code you come across is not sustainable either.
In this session we will look at how we can use forensic techniques to identify bad design and the code most in need of refactoring in your projects.
We will use version control data along with complexity measures to identify hotspots in your code that is not only complex, but that changes often. By doing this we can focus our refactoring on the code that will slow us down most often.
The techniques used is tool and language independent, so will work on pretty much any project you may be maintaining.
I'm a software developer who develops mobile apps for Discovery by day and tries to find ridiculously interesting projects to tinker with by night.
My decade of work experience includes setting up an SMS service for USAID in Afghanistan, consulting on a mobile CRM system in Costa Rica and helping out with systems for an SMS campaign during presidential elections in Zambia.
However, what I am really passionate about is producing quality code. I'm always looking for better ways to refactor legacy code.
Writing unit tests for your C# or Java code these days is a pretty well known and well covered topic. What about your database code? There are still many companies out there who have large SQL Server databases with many lines of code that are untested. If you thought it wasn't possible to write tests for your database code, come along to my presentation and let me show you how to get started.
My name is Andrew Russell. I am currently working as a Team Leader at Chillisoft a company based in Hillcrest, KZN. I have about 20 years of commercial programming experience and have worked in a number of sectors including commercial and investment banking, transport, insurance and government. I have worked on many greenfields and brownfields projects over the years and worked with a wide range of developers.
At Chillisoft I am responsible for driving our deliberate practice (as a company we spend about 5-6 hours a week working on sharpening our skills outside of our production work) and I am also involved in running some of our tSQLt training courses.
Git is an amazingly useful and powerful tool. Continuous Integration and (Continuous deployments) are incredibly valuable practices.
But are they compatible?
How do Git's major advantages such as cheap branching fly in the face of continuous integration? Is there a way to use the popular Git-Flow process and still have true CI?
I would like to explore my journey into using Git and CI thoughout my career, and I'll cover the various lessons learnt and viewpoints held and how they have changed. I'm not promising to have a solution to the problems posed, but I would like to stir up some debate and get people to think about their processes rather than just following practices that seem to be buzzwords.
My name is Duane McKibbin. I have been a software developer for 10 years working in various fields.
I started in Machine to machine communications (IOT before it was a buzzword ;) ) at Siemens, writing embedded j2me software as well as the corresponding j2ee server code.
I then worked at a startup developing an electrical smart grid system aimed at preventing load shedding. My main responsibility was a handheld device used for field installations (.net compact framework), but I helped out on the Java server side as well. I dipped my toes into some embedded C++ but nothing much to speak of.
I now work at Entelect Software as a Team Lead. I am currently based at Ashburton Investments but previously worked on various projects in various industries including medical aid, debt consolodation and imports.
I have previously presented internal training forums within Entelect as well as at our internal DevDay conference. This would be my first foray into speaking in the wider community.
On a personal note, I am married and have a 1 year old daughter who keeps me very busy when I'm not in the office.
I plan to give a high level overview of React.Js to the audience, so that they will feel comfortable with the general concepts and know how to get started. Many people would have heard of React.Js and will want to know what all the fuss is about. This talk will give a brief outline of the history of React.Js, why it is incredibly useful and the problems it solves. I will give brief code examples (showing the outline of a React.Js component), but will not go in-depth. I will however provide links to many websites that give in-depth tutorials and will also provide a boilerplate Github repository for interested listeners to pursue further.
I am a full stack developer currently working at Red Comet Labs. I have worked here for a few months and previously worked as a full stack developer at Takealot.com.
Developers often feel de-motivated, disempowered and under-utilized. Especially if working in big teams or in big corporations.
I want to help developers identify where these feelings come from and give them ideas on how to adjust their behaviour and mind-set. It’s not easy to change other people or organisations, but it is possible to change your own behaviour and attitude.
Very often when we change ourselves, others respond and follow.
However I believe that the developers are not aware of how significant an impact they personally can have on the success of a team and the software created. I want to share my pragmatic opinions, ideas and tools that technical people can use to improve their job satisfaction.
However I believe that the developers and testers are not aware of how significant an impact they personally can have on the success of a team and the software created. There are so many ways that they can influence and lead even as a junior or new member of a team.
My software engineering background with +-7 years as a C++ developer gave me a practical understanding of the intricacies that are involved in teams of smart creative people creating successful software.
My first job at Nokia in Cambridge UK in the 90’s gave me a benchmark for what teams can achieve. I was disappointed and despondent when coming back to SA. Spending a few years in our corporates, I felt very dis-empowered and frustrated as a developer. I started learning “tricks” and an attitude that enabled me to develop successful products despite the constraints of the organisation and team I was working in. Since then I have worked in inspirationally successful teams and dysfunctional teams.
I have been always been fascinated about understanding what makes the difference between happy and dysfunctional teams. I have had to grow and learn hard lessons on how my mind-set and attitude affected the team and therefore the success of the software created. Running my own custom software development company and co-founding a start-up gave me the opportunity to create and grown many teams myself. I also got to play all the different roles in a development team – tester, developer, product owner, scrum master, project manager and even the support consultant on my own product.
I now have lots of opinions, ideas, practices and tools. I use these extensively in the teams I am now leading.
I fill my “spare” time with mentoring young entrepreneurs, testers and developers Presentation: “Agile practices for tech start-ups” - 2015 Scrum gathering
Managing multiple servers and their configuration is time consuming and error prone, and that’s if you only have a handful of them. What do you do if you have hundreds of servers… Infrastructure as Code! We’ll be taking a whirlwind tour of some of the more popular tools out there, and discussing how we manage our Continuous Integration build servers.
I started out as a developer 15 years ago when I became fascinated with automation and how it could solve many of the problems I was experiencing. I currently lead the DevOps team at Derivco and co-host the Durban DevOps Meetup group. I am passionate about collaboration and automation, and spend a large amount of time finding ways to improve our software delivery pipeline and bringing people together to work on complex problems.
When I’m not at work I enjoy spending time with my family and taking time out to run, cycle or workout at the gym.
16h00 -> Movement <- 16h10
Most developers have an idea of what refactoring is, but can quickly paint themselves into a corner by not sticking to a safety first rule. Statically typed languages typically have great refactoring support, yet developers tend to rather rely on a slower refactor-compile-fix-errors cycle than a safely-refactor cycle during development. This session will address the true meaning of refactoring, and how using small, safe refactoring steps can actually speed up development, reduce stress, help you live longer, and swear less.
Janco has spent close on two decades learning how NOT to build software. He likes to understand the driving principles behind the way developers think, work, and design code. You can usually find him working as part of a team, supporting people on their software craftsmanship journey.
Some of the benefits of switching from a row representation of data into columns is that it enables one with an ability to pivot a given dataset which can lead a reduction of the size of your dataset. For instance, if you have 5 rows with each indicating the number of apples bought by Themba over 5 months – you can use SQL Server to rotate the data around in a such a way that only one row is displayed with all Themba’s apple-buying history. Therefore, this proposed session utilises SQL Server Management Studio client, SQL Server Statistics and Actual Execution Plans to illustrate row-to-column representation of data using SQL Server built-in methods such as CURSOR, PIVOT, XML and Dynamic Transact SQL.
Sifiso is a Johannesburg based certified Microsoft professional within a wide range of competencies such as SQL Server, Business Intelligence and Data Warehousing, and Visual Studio Application Lifecycle Management. He is the member of the Johannesburg SQL User Group and also hold a Master’s Degree in MCom IT Management from the University of Johannesburg. He blogs at selectsifiso.net and has published several articles at SQLShack.com and SQLServerCentral.com. He currently works for Clientele as Data Warehouse Development Supervisor
Take your CI server from good to great! I'll share some examples of graduating your CI from tester, merger, deployer into a productive member of the team.
CI servers can:
* Run static analysis tools to guide refactorings and enforce team standards
* Upgrade dependencies (local and external) and run tests, catching breaking changes early
* Check for security vulnerabilities, in the app and dependencies (CVE's)
* Build with stricter configurations to catch other issues
* Run any other repeatable process that would be mundane for good developers, freeing them to focus on the 10x stuff
I'm a regular open sourcerer and I've been building internet-based systems for 15+ years. I actively work across the entire stack, from the darkest corners of cloud infrastructure to the silver linings where users live.
I'm a regular speaker at local meetups and regional conferences like Rubyfuza & JSinSA. I've also presented a lightning talk at Ruby Kaigi in Japan.
You may have heard the term **microservice**, but what does it actually imply? What are the benefits and risks of a **microservice** style architecture? How can you manage the risks and successfully use microservices to bring you more flexibility, resilience, and scalability?
In this talk, we will answer these questions and more while building a real world **microservice**.
10 people delivering more than a department of 150. How is that possible?
In his work as a coach the speaker has seen how small nimble software teams outperform large enterprise teams by a factor of 10 to 1 or more. This talk explores the causes this phenomenon and how to effectively scale software development.
Scaling software development is usually driven by a need for teams to deliver more features with increasing complexity faster. Typically companies address this need by increasing team size without considering others factors that affect a team’s ability to deliver.
In this talk the speaker will explore characteristics that enables teams to scale their software development capacity without growing headcount. This talk will use model and simulations of value streams to visualise explore factors such as batch sizes, process overheard, feature selection and scoping, defect management, team size, team organisation, capacity management, and task switching.
The speaker will look at how modern software development practices that has an effect on these factors. (such as TDD, Continuous Integration and Delivery, Story Mapping, Pair and Mob programming)
Martin Cronje is a software developer who spends most of his time coaching software teams to help them master their craft. Over his 17 year career he has contributed to projects ranging from mobile, data analytics to high volume mission-critical systems in government and financial sectors. The most notable projects directly affected the South African economy and democracy.
Currently, Martin splits his time between coaching teams, advising companies and building products. Martin is deeply passionate about building beautiful well-crafted software and hope to continue creating for as long as possible.
Martin Cronjé has been speaking in the community since 2009 and has been fortunate to deliver keynotes and facilitate workshops at conferences in Africa and North America including Agile2015, Agile Africa (2013, 2014), Scrum Gathering (2014), Microsoft TechEd (2010, 2011, 2013), JSinSA (2013, 2014). RubyFuza (2015), CodeLab (2013) and Tech4Africa (2013).
Great conferences like this one would not be possible without great companies passionate about supporting the local software development community.
We would like to thank the following companies for helping make DevConf possible.
Would you like your organization associated with DevConf?
Please contact us so we can share our 2017 plans.